Skip to documentation
SLOP

tiny.gpu.RenderArtifact

Reference tiny.gpu RenderArtifact

Defined in contract.

API (26)

Actions

Public operations.

Fields and members

Public fields and members.

No direct callersNo direct callscontractRenderArtifact
Static calls · unresolved targets: unknown · external targets: unknown.

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;
Called byCallsprivate sourcelib.gpu.src.contractfakeCreateRenderArtifacttest sourcelib.gpu.src.contracttest: capabilities bound push constan...test sourcelib.gpu.src.contracttest: capabilities validate render pi...private sourcelib.gpu.src.contract.RenderArtifactclearPayloadprivate sourcelib.gpu.src.contractfreeOptprivate sourcelib.gpu.src.contractfreeStringRenderArtifactdeinit
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsprivate sourcelib.gpu.src.contractfakeCreateRenderArtifacttest sourcelib.gpu.src.contracttest: capabilities bound push constan...test sourcelib.gpu.src.contracttest: capabilities validate render pi...private sourcelib.gpu.src.contractdupeOptprivate sourcelib.gpu.src.contractdupeStringprivate sourcelib.gpu.src.contractfreeStringRenderArtifactinit
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetBorrowedBytes
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.gpu.src.contractfakeCreateRenderArtifactprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetBorrowedText
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetBorrowedWords
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetExternalPayload
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetOwnedBytes
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetOwnedText
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersprivate sourcelib.gpu.src.contract.RenderArtifactclearPayloadRenderArtifactsetOwnedWords
Static calls · unresolved targets: 1 · external targets: 0.

Audit

Definitions10
Public names20
Members17
Version26.7.0
Revisiondaab053ee433