tiny.gpu.RenderArtifact
Defined in contract.
API (26)
Actions
Public operations.
deinitinitsetBorrowedBytessetBorrowedTextsetBorrowedWordssetExternalPayloadsetOwnedBytessetOwnedTextsetOwnedWords
Fields and members
Public fields and members.
allocatorbackendbindingsblend_modedepthdiagnostic_idformatfragment_entry_namepayloadpayload_ownershippush_constant_bytespush_extenttarget_formattopologyvertex_attributesvertex_entry_namevertex_layouts
Source
Source: lib/gpu/src/contract.zig:1482
zig
pub const RenderArtifact = struct { allocator: Allocator, backend: BackendKind, format: RenderArtifactFormat, vertex_entry_name: []const u8, fragment_entry_name: []const u8, target_format: TextureFormat, blend_mode: RenderBlendMode, topology: RenderPrimitiveTopology, depth: ?RenderDepthState, vertex_layouts: []const RenderVertexBufferLayout, vertex_attributes: []const RenderVertexAttribute, bindings: []const RenderBindingDesc, push_constant_bytes: u32 = 0, push_extent: u32 = 0, diagnostic_id: ?[]const u8 = null, payload: ArtifactPayload = .none, payload_ownership: PayloadOwnership = .borrowed, pub fn init(allocator: Allocator, desc: RenderArtifactDesc) Allocator.Error!RenderArtifact { const vertex_entry_name = try dupeString(allocator, desc.pipeline.vertex_entry_name); errdefer freeString(allocator, vertex_entry_name); const fragment_entry_name = try dupeString(allocator, desc.pipeline.fragment_entry_name); errdefer freeString(allocator, fragment_entry_name); const vertex_layouts = try allocator.dupe(RenderVertexBufferLayout, desc.pipeline.vertex_layouts); errdefer allocator.free(vertex_layouts); const vertex_attributes = try allocator.dupe(RenderVertexAttribute, desc.pipeline.vertex_attributes); errdefer allocator.free(vertex_attributes); const bindings = try allocator.dupe(RenderBindingDesc, desc.pipeline.bindings); errdefer allocator.free(bindings); return .{ .allocator = allocator, .backend = desc.backend, .format = desc.pipeline.format, .vertex_entry_name = vertex_entry_name, .fragment_entry_name = fragment_entry_name, .target_format = desc.pipeline.target_format, .blend_mode = desc.pipeline.blend_mode, .topology = desc.pipeline.topology, .depth = desc.pipeline.depth, .vertex_layouts = vertex_layouts, .vertex_attributes = vertex_attributes, .bindings = bindings, .push_constant_bytes = desc.pipeline.push_constant_bytes, .push_extent = desc.pipeline.push_extent, .diagnostic_id = try dupeOpt(allocator, desc.pipeline.diagnostic_id), }; } pub fn deinit(self: *RenderArtifact) void { self.clearPayload(); freeString(self.allocator, self.vertex_entry_name); freeString(self.allocator, self.fragment_entry_name); self.allocator.free(@constCast(self.vertex_layouts)); self.allocator.free(@constCast(self.vertex_attributes)); self.allocator.free(@constCast(self.bindings)); freeOpt(self.allocator, self.diagnostic_id); self.* = undefined; } pub fn setBorrowedBytes(self: *RenderArtifact, bytes: []const u8) void { self.clearPayload(); self.payload = .{ .bytes = bytes }; self.payload_ownership = .borrowed; } pub fn setOwnedBytes(self: *RenderArtifact, bytes: []const u8) BackendError!void { const owned = self.allocator.dupe(u8, bytes) catch return error.OutOfMemory; self.clearPayload(); self.payload = .{ .bytes = owned }; self.payload_ownership = .owned; } pub fn setBorrowedWords(self: *RenderArtifact, words: []const u32) void { self.clearPayload(); self.payload = .{ .words_u32 = words }; self.payload_ownership = .borrowed; } pub fn setOwnedWords(self: *RenderArtifact, words: []const u32) BackendError!void { const owned = self.allocator.dupe(u32, words) catch return error.OutOfMemory; self.clearPayload(); self.payload = .{ .words_u32 = owned }; self.payload_ownership = .owned; } pub fn setBorrowedText(self: *RenderArtifact, text: []const u8) void { self.clearPayload(); self.payload = .{ .text = text }; self.payload_ownership = .borrowed; } pub fn setOwnedText(self: *RenderArtifact, text: []const u8) BackendError!void { const owned = self.allocator.dupe(u8, text) catch return error.OutOfMemory; self.clearPayload(); self.payload = .{ .text = owned }; self.payload_ownership = .owned; } pub fn setExternalPayload(self: *RenderArtifact, payload: ExternalPayload, ownership: PayloadOwnership) BackendError!void { if (ownership == .owned and payload.deinit_fn == null) return error.MissingPayloadDeinit; self.clearPayload(); self.payload = .{ .external = payload }; self.payload_ownership = ownership; } fn clearPayload(self: *RenderArtifact) void { if (self.payload_ownership == .owned) { switch (self.payload) { .bytes => |bytes| freeString(self.allocator, bytes), .words_u32 => |words| self.allocator.free(@constCast(words)), .text => |text| freeString(self.allocator, text), .external => |payload| if (payload.deinit_fn) |deinit_fn| deinit_fn(self.allocator, payload.ptr), .none => {}, } } self.payload = .none; self.payload_ownership = .borrowed; }};Source: lib/gpu/src/root.zig:108
zig
pub const RenderArtifact = contract.RenderArtifact;Audit
| Definitions | 10 |
|---|---|
| Public names | 20 |
| Members | 17 |
| Version | 26.7.0 |
| Revision | daab053ee433 |