Skip to documentation
SLOP

tiny.sdfii.backend

Reference tiny.sdfii backend

Defined in tiny.sdfii.

API (22)

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

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

Source

Source: fun/sdfii/src/engine/backend.zig

zig
const std = @import("std");const sdfii_backend = @import("sdfii_backend");const types = @import("sdfii_ffi").types;pub const Capabilities = sdfii_backend.capabilities;pub const CapabilityReport = sdfii_backend.router.CapabilityReport;pub const Contract = sdfii_backend.contract;pub const ExecutorError = sdfii_backend.ExecutorError;pub const RenderStyle = sdfii_backend.executor.RenderStyle;pub const UpscalePolicy = sdfii_backend.executor.UpscalePolicy;pub const PaletteQuantization = sdfii_backend.executor.PaletteQuantization;pub const DitherMode = sdfii_backend.executor.DitherMode;pub const OutlineMode = sdfii_backend.executor.OutlineMode;pub const CameraSnapPolicy = sdfii_backend.executor.CameraSnapPolicy;pub const AlphaMode = sdfii_backend.executor.AlphaMode;pub const RenderGraph = sdfii_backend.render_graph;pub const Retention = sdfii_backend.retention;pub const CpuRenderGraph = sdfii_backend.cpu_render_graph;pub const AccyPath = sdfii_backend.accy_path;pub const frame_pixel_hit_flag = sdfii_backend.executor.frame_pixel_hit_flag;pub const frame_pixel_outline_flag = sdfii_backend.executor.frame_pixel_outline_flag;pub const UploadPlanner = sdfii_backend.upload;pub const ZigCpuExecutor = sdfii_backend.zig_cpu;pub const AccyExecutor = sdfii_backend.accy.Executor;pub const Router = sdfii_backend.router;pub const ExecutorKind = sdfii_backend.ExecutorKind;test "backend executor contract is surfaced through facade" {    const failure = Contract.diagnoseFailure(        .render,        .accy,        error.RenderFailed,        .zig_cpu,    );    try std.testing.expectEqual(Contract.FailureKind.render_failed, failure.kind);    try std.testing.expectEqual(Contract.FallbackPolicy.retry_backend, failure.fallback_policy);    try std.testing.expectEqual(ExecutorError, @TypeOf(failure.err));    var router = Router.initWithAllocator(std.testing.allocator);    defer router.deinit();    const report = router.capabilityReport();    try std.testing.expect(report.zig_cpu.available);    try std.testing.expectEqual(types.BackendKind.accy, AccyPath.selectedBackend());    const live = router.liveAvailability();    try std.testing.expectEqual(@as(u8, 1), live.zig_cpu_available);    try std.testing.expectEqual(types.flagFromBool(report.accy.available), live.accy_available);}test "accy backend serves render and field queries when available" {    const summary = types.CompiledArtifactSummary{        .compiled_revision = 9,        .node_count = 4,        .execution_ir_version = 3,        .supports_graphics_output = 1,        .supports_field_queries = 1,    };    const availability = types.BackendAvailability{        .zig_cpu_available = 1,        .accy_available = 1,        .prefer_accy_before_zig = 1,    };    const plan = Router.renderPlan(.{        .summary = summary,        .availability = availability,        .graphics_requested = 1,    });    try std.testing.expectEqual(@backingInt(types.BackendKind.accy), plan.selected_backend);    try std.testing.expectEqual(@backingInt(types.RenderRoute.graphics_fast_path), plan.route);    const field_query = Router.chooseFieldQueryRoute(.{        .summary = summary,        .availability = availability,        .backend = plan.selected_backend,    });    try std.testing.expectEqual(@backingInt(types.BackendKind.accy), field_query.query_backend);    try std.testing.expectEqual(@backingInt(types.FieldQueryRouteReason.native_distance_sampling), field_query.reason);    const without_accelerator = Router.chooseFieldQueryRoute(.{        .summary = summary,        .availability = .{ .zig_cpu_available = 1 },        .backend = @backingInt(types.BackendKind.zig_cpu),    });    try std.testing.expectEqual(@backingInt(types.BackendKind.zig_cpu), without_accelerator.query_backend);    try std.testing.expectEqual(@backingInt(types.FieldQueryRouteReason.native_distance_sampling), without_accelerator.reason);}test "backend render graph validates resources and executes in dependency order" {    var setup = RenderGraph.Setup.init(std.testing.allocator);    defer setup.deinit();    const scene = try setup.declareResource(.{        .name = "scene",        .kind = .scene_artifact,        .scope = .external,    });    const surface = try setup.declareResource(.{        .name = "surface",        .kind = .render_artifact,    });    const frame = try setup.declareResource(.{        .name = "frame",        .kind = .frame_output,        .scope = .output,    });    const raymarch = try setup.addPass("raymarch");    try setup.reads(raymarch, scene);    try setup.writes(raymarch, surface);    const submit = try setup.addPass("submit");    try setup.reads(submit, surface);    try setup.writes(submit, frame);    var graph = try setup.finish();    defer graph.deinit();    try std.testing.expectEqual(raymarch, graph.order[0]);    try std.testing.expectEqual(submit, graph.order[1]);    try std.testing.expectEqual(raymarch, (try graph.resource(surface)).producer.?);    const Recorder = struct {        names: [2][]const u8 = .{ "", "" },        count: usize = 0,        fn record(context: ?*anyopaque, execution: RenderGraph.PassExecution) !void {            const self: *@This() = @ptrCast(@alignCast(context.?));            self.names[self.count] = try execution.name();            self.count += 1;            for (execution.accesses) |access| {                _ = try execution.resolve(access.resource);            }        }    };    var recorder = Recorder{};    try graph.execute(&recorder, Recorder.record);    try std.testing.expectEqualStrings("raymarch", recorder.names[0]);    try std.testing.expectEqualStrings("submit", recorder.names[1]);    var missing = RenderGraph.Setup.init(std.testing.allocator);    defer missing.deinit();    const orphan = try missing.declareResource(.{ .name = "orphan", .kind = .render_artifact });    const reader = try missing.addPass("reader");    try missing.reads(reader, orphan);    try std.testing.expectError(error.MissingResourceProducer, missing.finish());}

Source: fun/sdfii/src/root.zig:29

zig
pub const backend = engine.backend;

Audit

Definitions23
Public names23
Members0
Version26.7.0
Revisiondaab053ee433