Skip to documentation
SLOP

tiny.sdfii.ffi.Api

Reference tiny.sdfii ffi Api

Defined in ffi.

API (18)

Actions

Public operations.

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

Source

Called byCallsNo direct callsffi.Apisdfii engine core configure behaviorsffi.Apisdfii engine core world stepffi.Apibind
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersprivate; no linkfun.sdfii.src.ffi.typesflagFromBoolffi.ApipublishedRevision
Static calls · unresolved targets: 0 · external targets: 4.
Called byCallsNo direct callersprivate; no linkfun.sdfii.src.ffi.typesflagFromBoolffi.ApiqueryAuthority
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsNo direct callstest; no linkfun.sdfii.src.engine.bindtest: abi version records direct type...ffi.Apisdfii abi version
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callstest; no linkfun.sdfii.src.engine.bindtest: backend planner ffi honors call...ffi.Apisdfii engine core backend select
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersffi.Apibindffi.Apisdfii engine core configure behaviors
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsNo direct callstest; no linkfun.sdfii.src.engine.bindtest: backend planner ffi honors call...ffi.Apisdfii engine core field query route
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest; no linkfun.sdfii.src.engine.bindtest: backend planner ffi honors call...ffi.Apisdfii engine core plan upload
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest; no linkfun.sdfii.src.engine.bindtest: backend planner ffi honors call...ffi.Apisdfii engine core render route
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callersffi.Apibindffi.Apisdfii engine core world step
Static calls · unresolved targets: 0 · external targets: 1.

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

zig
const Self = @This();const std = @import("std");const Engine = @import("root.zig").internals.engine;const ffi = @import("sdfii_ffi");const types = ffi.types;const allocator_policy = ffi.allocator_policy;const Router = @import("sdfii_backend").router;const UploadPlanner = @import("sdfii_backend").upload;const low_level = @import("abi/root.zig").core;const abi_allocator = allocator_policy.exportedHandleAllocator();engine: *Engine,pub fn bind(engine: *Engine) Self {    return .{        .engine = engine,    };}pub fn worldStep(self: *const Self, commands: types.CommandBatch, input: types.FrameInput) types.StepResult {    return self.engine.worldStep(commands, input);}pub fn configureBehaviors(self: *const Self, request: types.BehaviorConfigRequest) !void {    try self.engine.behavior.configureFromFfi(self.engine.allocator, request);}pub fn submit(self: *const Self, commands: types.CommandBatch, input: types.FrameInput) types.StepResult {    return self.worldStep(commands, input);}pub fn issueQuery(self: *const Self, request: types.QueryRequest) types.QueryResult {    const current = self.engine.currentPublishedScene();    const published = current.ptr() orelse return .{};    if (published.revision != request.compiled_revision or        !self.engine.queries.isBoundTo(request.compiled_revision))    {        return .{};    }    return .{        .compiled_revision = request.compiled_revision,        .match_count = 0,    };}pub fn publishedRevision(self: *const Self) types.PublishedRevisionSummary {    const current = self.engine.currentPublishedScene();    const published = current.ptr() orelse return .{};    return .{        .compiled_revision = published.revision,        .source_tick = published.view.source_tick,        .entity_count = @as(u32, @intCast(published.view.entity_count)),        .asset_count = @as(u32, @intCast(published.view.asset_count)),        .fragment_count = @as(u32, @intCast(published.program_state.fragment_count)),        .edit_fragment_count = @as(u32, @intCast(published.program_state.edit_fragment_count)),        .overlap_region_count = @as(u32, @intCast(published.query_state.overlap_region_count)),        .dirty_region_count = @as(u32, @intCast(published.query_state.dirtyRegionCountForRevision(published.revision))),        .supports_field_queries = types.flagFromBool(published.query_state.supportsFieldQueries()),    };}pub fn queryAuthority(self: *const Self, compiled_revision: u64) types.QueryAuthoritySummary {    const current = self.engine.currentPublishedScene();    const summary = self.engine.queries.describeBinding(        if (current.has_value) current.value else null,        compiled_revision,    );    return .{        .requested_revision = summary.requested_revision,        .published_revision = summary.published_revision,        .bound_revision = summary.bound_revision,        .revision_matches = types.flagFromBool(summary.revision_matches),        .query_bound = types.flagFromBool(summary.query_bound),        .supports_field_queries = types.flagFromBool(summary.supports_field_queries),    };}pub fn sdfii_abi_version() u32 {    return 8;}test "abi version records direct typed boundary" {    try std.testing.expectEqual(@as(u32, 8), sdfii_abi_version());}pub fn sdfii_engine_core_create(limits: ?*const types.EngineLimits) ?*Engine {    const requested = limits orelse return null;    if (requested.reserved != 0) return null;    const engine = abi_allocator.create(Engine) catch return null;    engine.* = Engine.initFallible(abi_allocator, .{        .entity_capacity = requested.entity_capacity,        .physics_scratch = .{ .program_nodes = requested.physics_program_nodes },        .ui = .{            .surfaces = requested.ui_surfaces,            .surface = .{                .nodes = requested.ui_nodes_per_surface,                .runs = requested.ui_text_runs_per_surface,                .styles = requested.ui_text_styles_per_surface,                .semantic_bytes = requested.ui_semantic_bytes_per_surface,            },        },    }) catch {        abi_allocator.destroy(engine);        return null;    };    return engine;}pub fn sdfii_engine_core_destroy(engine: ?*Engine) void {    if (engine) |value| {        value.deinit();        abi_allocator.destroy(value);    }}pub fn sdfii_engine_core_world_step(    engine: ?*Engine,    commands: *const types.CommandBatch,    input: *const types.FrameInput,    out: *types.StepResult,) c_int {    const e = engine orelse return low_level.SDFII_ERR_NULL_HANDLE;    const api = bind(e);    out.* = api.worldStep(commands.*, input.*);    return 0;}pub fn sdfii_engine_core_configure_behaviors(    engine: ?*Engine,    request: *const types.BehaviorConfigRequest,) c_int {    const e = engine orelse return low_level.SDFII_ERR_NULL_HANDLE;    const api = bind(e);    api.configureBehaviors(request.*) catch return -1;    return 0;}pub fn sdfii_engine_core_backend_select(    request: *const types.BackendSelectionRequest,    out: *types.BackendSelectionResult,) c_int {    out.* = Router.previewBackendSelection(request.*);    return 0;}pub fn sdfii_engine_core_render_route(    request: *const types.RenderRouteRequest,    out: *types.RenderRouteResult,) c_int {    out.* = Router.chooseRenderRoute(request.*);    return 0;}pub fn sdfii_engine_core_field_query_route(    request: *const types.FieldQueryRouteRequest,    out: *types.FieldQueryRouteResult,) c_int {    out.* = Router.chooseFieldQueryRoute(request.*);    return 0;}pub fn sdfii_engine_core_failure_fallback(    request: *const types.FallbackRequest,    out: *types.FallbackResult,) c_int {    out.* = Router.chooseFailureFallback(request.*);    return 0;}pub fn sdfii_engine_core_render_plan(    request: *const types.RenderPlanRequest,    out: *types.RenderPlanResult,) c_int {    out.* = Router.renderPlan(request.*);    return 0;}pub fn sdfii_engine_core_plan_upload(    request: *const types.UploadPlanRequest,    out: *types.UploadPlanResult,) c_int {    out.* = UploadPlanner.preview(request.*);    return 0;}test "backend planner ffi honors caller-provided availability snapshots" {    const summary = types.CompiledArtifactSummary{        .compiled_revision = 2,        .node_count = 4,        .material_count = 1,        .light_count = 1,        .root_node = 3,        .execution_ir_version = 2,        .native_payload_version = 2,        .supports_graphics_output = 1,        .supports_field_queries = 1,    };    const availability = types.BackendAvailability{        .zig_cpu_available = 1,        .accy_available = 1,    };    var selection: types.BackendSelectionResult = .{};    try std.testing.expectEqual(@as(c_int, 0), sdfii_engine_core_backend_select(&.{        .summary = summary,        .availability = availability,    }, &selection));    try std.testing.expectEqual(@backingInt(types.BackendKind.accy), selection.selected_backend);    var field_query: types.FieldQueryRouteResult = .{};    try std.testing.expectEqual(@as(c_int, 0), sdfii_engine_core_field_query_route(&.{        .summary = summary,        .availability = availability,        .backend = selection.selected_backend,    }, &field_query));    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);    var route: types.RenderRouteResult = .{};    try std.testing.expectEqual(@as(c_int, 0), sdfii_engine_core_render_route(&.{        .summary = summary,        .availability = availability,        .backend = selection.selected_backend,        .graphics_requested = 1,    }, &route));    try std.testing.expectEqual(@backingInt(types.RenderRoute.graphics_fast_path), route.route);    var upload: types.UploadPlanResult = .{};    try std.testing.expectEqual(@as(c_int, 0), sdfii_engine_core_plan_upload(&.{        .summary = summary,        .availability = availability,        .backend = selection.selected_backend,    }, &upload));    try std.testing.expectEqual(@backingInt(types.UploadPlanMode.full), upload.mode);}

Source: fun/sdfii/src/engine/ffi.zig:4

zig
pub const Api = api;

Audit

Definitions19
Public names19
Members0
Version26.7.0
Revisiondaab053ee433