vulkan

Vulkan graphics API bindings for Kit - low-level GPU compute and graphics

Files

FileDescription
.editorconfigEditor formatting configuration
.gitignoreGit ignore rules for build artifacts and dependencies
.tool-versionsasdf tool versions (Zig, Kit)
LICENSEMIT license file
README.mdThis file
examples/basic-usage.kitBasic instance and device query example
examples/buffer-memory.kitBuffer and memory management example
examples/compute-pipeline.kitCompute pipeline example
examples/device-enumeration.kitPhysical device enumeration and query example
examples/graphics-pipeline.kitGraphics pipeline example
examples/synchronization.kitFence, semaphore, and event example
kit.tomlPackage manifest with metadata, capabilities, and tasks
src/vulkan.kitVulkan FFI wrapper with 401 Zig-backed bindings
tests/vulkan.test.kitTests for Vulkan bindings
zig/kit_vulkan.zigZig Vulkan implementation
zig/kit_ffi.zigShared Kit FFI value helpers

Dependencies

No Kit package dependencies.

This package requires the ffi capability and a system Vulkan loader or driver when running code that reaches Vulkan at runtime.

Installation

kit add gitlab.com/kit-lang/packages/kit-vulkan.git

Usage

import Kit.Vulkan.{
  create-instance,
  destroy-instance,
  get-version,
  enumerate-devices,
  get-device-properties,
}

main = fn =>
  println "=== KitVulkan Basic Usage ==="

  # Create an instance and register cleanup for the current scope
  instance = create-instance "MyKitApp"
  if Result.is-ok? instance then
    println "Instance created successfully"
    defer destroy-instance

    version = get-version
    if Result.is-ok? version then
      println "Version retrieved"

    devices = enumerate-devices
    if Result.is-ok? devices then
      println "Devices enumerated"

    props = get-device-properties 0
    if Result.is-ok? props then
      println "Device properties retrieved"
  else
    println "Failed to create Vulkan instance"

main

Resource-creating functions include @defer-required metadata that names the matching cleanup function. The examples use selective imports because the package exposes a large Vulkan surface and selective imports keep native example builds smaller.

Development

Running Examples

Run examples with the interpreter:

kit run examples/basic-usage.kit --allow=ffi

Compile examples to a native binary:

kit build examples/basic-usage.kit -o basic-usage --allow=ffi && ./basic-usage

The examples/ directory also includes buffer and memory management, compute pipeline, device enumeration, graphics pipeline, and synchronization examples.

Running Tests

Run the test suite:

kit test tests/vulkan.test.kit --allow=ffi

Run the test suite with coverage:

kit test tests/vulkan.test.kit --allow=ffi --coverage

Running kit dev

Run the standard development workflow (format, check, test):

kit dev --no-spinner

This will:

  1. Format and check source files in src/
  2. Check examples in examples/
  3. Run tests in tests/ with coverage

Checking Examples

Verify all examples work with both the interpreter and compiler:

kit parity --no-spinner --failures-only

This will:

  1. Run each example with kit run
  2. Compile each example with kit build
  3. Execute compiled binaries
  4. Compare interpreter and native outputs

Native Vulkan example builds can take several minutes because the package exports a broad FFI surface.

Generating Documentation

Generate API documentation from doc comments:

kit doc

Note: Kit sources with doc comments (##) will generate HTML documents in docs/*.html.

Cleaning Build Artifacts

Remove generated files, caches, and build artifacts:

kit task clean

Note: Defined in kit.toml.

Local Installation

To install this package locally for development:

kit install

This installs the package to ~/.kit/packages/@kit/vulkan/, making it available for import as Kit.Vulkan in other projects.

API Coverage

The kit-vulkan package provides comprehensive Vulkan 1.3 API coverage, including:

  • Instance and Device Management: create-instance, create-device, destroy-instance, destroy-device
  • Physical Device Queries: device properties, features, memory properties, queue families, layers, and extensions
  • Command Buffers: create-command-pool, allocate-command-buffer, begin-command-buffer, end-command-buffer
  • Memory and Buffers: create-buffer, allocate-memory, map-memory, unmap-memory, buffer views
  • Images and Samplers: image creation, image views, samplers, layouts, and copies
  • Shaders and Pipelines: shader modules, graphics pipelines, compute pipelines, pipeline layouts, and caches
  • Descriptors and Render Passes: descriptor layouts, pools, sets, render passes, and framebuffers
  • Synchronization: fences, semaphores, events, barriers, and timeline semaphores
  • Presentation and Surfaces: swapchain and surface helpers
  • Advanced Features: ray tracing, video encoding/decoding, optical flow, cooperative matrices, and mesh shaders

Most query-style functions return JSON strings wrapped in Result, while resource-creating functions return handles or status strings and include cleanup metadata.

License

This package is released under the MIT License - see LICENSE for details.

Vulkan and the Vulkan API specification are released under the Apache License 2.0.

Exported Functions & Types

get-version

Get the Vulkan API version information

create-instance

Create a Vulkan instance with the given application name

destroy-instance

Destroy the current Vulkan instance and clean up resources

enumerate-instance-layers

Enumerate available Vulkan instance layers

enumerate-instance-extensions

Enumerate available Vulkan instance extensions

is-layer-available

Check if a specific layer is available

is-extension-available

Check if a specific extension is available

create-instance-with-version

Create instance with specific API version

create-instance-with-validation

Create instance with validation layers

get-instance-proc-addr

Get instance procedure address

get-device-proc-addr

Get device procedure address

get-instance-version

Get instance version

get-physical-device-present-support

Get physical device present support

enumerate-physical-device-groups

Enumerate physical device groups

get-tool-properties

Get physical device tool properties

enumerate-devices

Returns a JSON array of device information

get-device-properties

Returns a JSON object with device capabilities

get-queue-family-properties

Returns JSON array of queue family info

find-queue-family

Returns queue family index as Int

get-memory-properties

Returns JSON object with memory types and heaps

get-device-features

Get physical device features

get-format-properties

Get physical device format properties

get-image-format-properties

Get physical device image format properties

enumerate-device-extensions

Enumerate physical device extensions

get-subgroup-properties

Get physical device subgroup properties

get-external-buffer-properties

Get physical device external buffer properties

get-external-fence-properties

Get physical device external fence properties

get-external-semaphore-properties

Get physical device external semaphore properties

create-device

Create a logical device for a physical device with specified queue family

destroy-device

Destroy the current logical device

get-device-queue

Get device queue handle

get-device-memory-commitment

Get device memory commitment

get-device-queue-family-count

Get device queue family count

get-device-memory-heap-count

Get device memory heap count

get-sparse-memory-requirements-count

Get device sparse memory requirements count

create-command-pool

Create a command pool for a queue family

destroy-command-pool

Destroy the current command pool

allocate-command-buffer

Allocate a command buffer from the pool

begin-command-buffer

Begin recording a command buffer

end-command-buffer

End recording a command buffer

reset-command-buffer

Reset a command buffer

allocate-secondary-command-buffer

Allocate secondary command buffers (for render pass subpasses)

begin-secondary-command-buffer

Begin recording a secondary command buffer

cmd-execute-secondary-commands

Execute secondary command buffers within primary

free-command-buffers

Free command buffers

trim-command-pool

Trim command pool (free unused memory)

reset-command-pool

Reset command pool

get-command-buffer-opaque-capture-address

Get command buffer opaque capture address

set-command-buffer-device-mask

Set command buffer device mask (for device groups)

create-buffer

Create a buffer with specified size and usage flags

destroy-buffer

Destroy the current buffer

create-buffer-dedicated

Create buffer with dedicated memory allocation

create-buffer-view

Create buffer view (typed buffer access)

destroy-buffer-view

Destroy buffer view

cmd-copy-buffer-to-image-regions

Copy buffer to image with specific regions

allocate-memory

Allocate device memory

free-memory

Free allocated device memory

bind-buffer-memory

Bind buffer to device memory

map-memory

Map device memory for CPU access

unmap-memory

Unmap device memory

flush-memory

Flush mapped memory ranges

invalidate-memory

Invalidate mapped memory ranges

get-buffer-memory-requirements

Get buffer memory requirements

get-image-sparse-memory-requirements

Get image sparse memory requirements

flush-mapped-memory-ranges

Flush mapped memory ranges

invalidate-mapped-memory-ranges

Invalidate mapped memory ranges with list

allocate-memory-dedicated

Allocate memory with dedicated requirements

bind-buffer-memory-offset

Bind buffer to device memory with offset

bind-image-memory-offset

Bind image to device memory with offset

map-memory-range

Map memory range (specific offset and size)

import-memory

Import device memory from external handle

export-memory

Export device memory to external handle

get-memory-win32-handle

Get memory win32 handle (Windows)

get-memory-fd

Get memory fd handle (Linux/Unix)

allocate-memory-with-priority

Allocate device memory with priorities

get-device-memory-opaque-capture-address

Get device memory opaque capture address

get-buffer-opaque-capture-address

Get buffer opaque capture address

get-buffer-device-address

Get buffer device address

create-image

Create a 2D image

destroy-image

Destroy the current image

create-image-view

Create an image view

destroy-image-view

Destroy the current image view

bind-image-memory

Bind image memory

get-image-memory-requirements

Get image memory requirements

get-image-subresource-layout

Get image subresource layout

create-image-view-with-type

Create image view with specific type

create-image-view-with-components

Create image view with component mapping

create-image-view-3d

Create 3D image view from 3D image

get-image-view-handle

Get image view handle

cmd-copy-image-array-layers

Copy image 2D array layers

create-image-with-layout

Create image with initial layout

create-fence

Create a fence (signaled = true for initial signaled state)

destroy-fence

Destroy the current fence

wait-for-fence

Wait for fence with timeout in nanoseconds

reset-fence

Reset fence to unsignaled state

create-semaphore

Create a semaphore

destroy-semaphore

Destroy the current semaphore

create-event

Create an event

destroy-event

Destroy the current event

set-event

Set an event

reset-event

Reset an event

wait-for-fences

Wait for multiple fences

reset-fences

Reset multiple fences

create-timeline-semaphore

Create a timeline semaphore

signal-timeline-semaphore

Signal a timeline semaphore

wait-timeline-semaphore

Wait for timeline semaphore

create-semaphore-win32

Create semaphore with win32 handle (Windows external)

create-fence-win32

Create fence with win32 handle (Windows external)

import-semaphore

Import semaphore from external handle

import-fence

Import fence from external handle

get-fence-win32-handle

Get fence win32 handle (Windows external)

get-fence-fd

Get fence fd (Linux/Unix external)

get-semaphore-win32-handle

Get semaphore win32 handle (Windows external)

get-semaphore-fd

Get semaphore fd (Linux/Unix external)

signal-event

Signal event

get-event-status

Get event status

queue-submit

Submit command buffer to queue with optional semaphores

queue-wait-idle

Wait for queue to become idle

device-wait-idle

Wait for device to become idle

get-queue-family-index

Get queue family index from queue

queue-bind-sparse

Bind sparse memory in queue

queue-submit-list

Queue submit with command buffer list

get-queue-timestamp-pool

Get queue timestamp pool results

create-shader-module

Create a shader module from SPIR-V bytecode

destroy-shader-module

Destroy the current shader module

create-shader-module-from-file

Create shader module from spirv file

create-shader-stage

Create shader stage info (vertex/fragment/compute)

get-shader-module-status

Get shader module compilation status

validate-spirv

Validate SPIR-V shader code

create-shader-module-from-glsl

Create shader module from GLSL source

compile-glsl-to-spirv

Compile GLSL to SPIR-V

get-shader-compilation-log

Get shader module compilation log

set-shader-module-handle

Set shader module capture replay handle

create-compute-pipeline

Create a compute pipeline

destroy-pipeline

Destroy the current pipeline

create-pipeline-layout

Create a pipeline layout

destroy-pipeline-layout

Destroy the current pipeline layout

cmd-bind-pipeline

Bind compute pipeline to command buffer

cmd-dispatch

Dispatch compute workgroups

cmd-dispatch-indirect

Dispatch compute with indirect buffer

cmd-dispatch-base-compute

Dispatch compute with base (device group)

compute-queue-wait-idle

Wait for compute queue idle

get-compute-queue-timestamp

Get compute queue timestamp

cmd-dispatch-base-instance

Dispatch compute with base instance

get-compute-workgroup-size

Get compute shader workgroup size

set-compute-pipeline-state

Set compute pipeline dynamic state

get-compute-queue-family-index

Get compute queue family index

create-pipeline-cache

Create a pipeline cache for storing compiled pipeline data

destroy-pipeline-cache

Destroy the current pipeline cache

get-pipeline-cache-data

Get pipeline cache data for serialization

merge-pipeline-caches

Merge pipeline cache data from another cache

create-graphics-pipeline-cached

Create a pipeline using a pipeline cache

create-pipeline-library-vertex-input

Create graphics pipeline library (vertex input)

create-pipeline-library-fragment-output

Create graphics pipeline library (fragment output)

create-pipeline-from-libraries

Create graphics pipeline from libraries

merge-pipeline-cache-from

Merge pipeline caches

create-compute-pipeline-cached

Create compute pipeline with cache

destroy-pipeline-cache-with-data

Destroy pipeline cache with data retrieval

get-pipeline-executable-properties

Get pipeline executable properties

get-pipeline-executable-stats

Get pipeline executable statistics

create-descriptor-set-layout

Create a descriptor set layout

destroy-descriptor-set-layout

Destroy the current descriptor set layout

create-descriptor-pool

Create a descriptor pool

destroy-descriptor-pool

Destroy the current descriptor pool

allocate-descriptor-set

Allocate a descriptor set

update-descriptor-set-buffer

Update descriptor set with buffer info

cmd-bind-descriptor-sets

Bind descriptor sets to command buffer

cmd-push-constants

Push constants to command buffer

free-descriptor-sets

Free descriptor sets

update-descriptor-set-with-bindings

Update descriptor set with multiple bindings

create-descriptor-set-layout-with-flags

Create descriptor set layout with binding flags

reset-descriptor-pool

Reset descriptor pool

cmd-push-descriptor-set

Push descriptor set (immediate descriptor update)

cmd-push-descriptor-set-with-template

Push descriptor set with template

create-descriptor-update-template

Create descriptor update template

update-descriptor-set-with-template

Update descriptor set with template

destroy-descriptor-update-template

Destroy descriptor update template

reset-descriptor-pool-flags

Reset descriptor pool with flags

allocate-descriptor-sets-variable

Allocate descriptor sets with variable counts

get-descriptor-set-layout-support

Get descriptor set layout support

create-render-pass

Create a render pass

destroy-render-pass

Destroy the current render pass

create-framebuffer

Create a framebuffer

destroy-framebuffer

Destroy the current framebuffer

cmd-begin-render-pass

Begin a render pass

cmd-end-render-pass

End a render pass

cmd-next-subpass

Next render pass subpass (advance to next subpass)

cmd-begin-render-pass-inline

Begin render pass with inline contents

cmd-begin-render-pass-secondary

Begin render pass with secondary command buffers

cmd-begin-render-pass-attachments

Begin render pass with explicit attachments

cmd-begin-render-pass-device-group

Begin render pass with device group render areas

cmd-end-render-pass-resolve

End render pass with resolve attachments

cmd-next-subpass-contents

Next subpass with contents (inline or secondary)

cmd-begin-render-pass-transform-feedback

Begin render pass with transform feedback

cmd-copy-buffer

Copy data between buffers

cmd-fill-buffer

Fill buffer with 32-bit value

cmd-update-buffer

Update buffer with data

cmd-copy-buffer-to-image

Copy buffer to image

cmd-copy-image-to-buffer

Copy image to buffer

cmd-blit-image

Blit image (copy with scaling/filtering)

cmd-copy-image

Copy image (direct copy without scaling)

cmd-copy-query-pool-results

Copy query pool results to buffer

cmd-execute-commands

Execute secondary command buffers

cmd-copy-buffer-regions

Copy buffer regions (multiple regions)

cmd-resolve-image-multisample

Resolve image multisampled to single-sampled

cmd-update-buffer-array

Update buffer with data array

cmd-fill-buffer-regions

Fill buffer regions with different values

cmd-pipeline-barrier

Insert memory barrier

cmd-buffer-memory-barrier

Insert buffer memory barrier

cmd-image-memory-barrier

Insert image memory barrier

cmd-pipeline-barrier-multiple

Insert memory barrier with multiple buffers

cmd-wait-events

Wait for events in command buffer

cmd-set-event

Set event in command buffer

cmd-reset-event-cmd

Reset event in command buffer

cmd-full-pipeline-barrier

Full pipeline barrier (all stages)

cmd-all-memory-barrier

Memory barrier for all memory

cmd-global-memory-barrier

Global memory barrier (device-wide)

cmd-pipeline-barrier-dependency

Dependency info barrier (Vulkan 1.3 style)

create-query-pool

Create a query pool for timestamps

destroy-query-pool

Destroy the current query pool

cmd-reset-query-pool

Reset query pool

cmd-begin-query

Begin query

cmd-end-query

End query

cmd-write-timestamp

Write timestamp

get-query-results

Get query results

create-query-pool-with-stats

Create a query pool with statistics

copy-query-pool-results-with-flags

Copy query results with availability status

create-query-pool-pipeline-stats

Create query pool for pipeline statistics

get-query-results-64bit

Get query pool results with 64-bit values

cmd-write-timestamp-64bit

Write timestamp with 64-bit precision

cmd-begin-query-flags

Begin query with specific flags

cmd-begin-transform-feedback

Begin transform feedback (geometry shader output capture)

cmd-end-transform-feedback

End transform feedback

cmd-bind-transform-feedback-buffers

Bind transform feedback buffers

cmd-draw-indirect-byte-count

Draw indirect byte count (transform feedback)

create-swapchain

Create a swapchain for presenting

destroy-swapchain

Destroy the current swapchain

acquire-next-image

Acquire next swapchain image

queue-present

Queue presentation

get-swapchain-images

Get swapchain images

get-surface-capabilities

Get swapchain surface capabilities

get-surface-formats

Get swapchain surface formats

get-present-modes

Get swapchain present modes

recreate-swapchain

Recreate swapchain with new size

create-xcb-surface

Create surface from XCB window (Linux)

create-xlib-surface

Create surface from Xlib window (Linux)

create-wayland-surface

Create surface from Wayland window (Linux)

create-win32-surface

Create surface from Win32 window (Windows)

destroy-surface

Destroy surface

get-physical-device-surface-support

Get physical device surface support

set-object-name

Set debug object name (for validation layers)

cmd-begin-debug-label

Begin debug label region

cmd-end-debug-label

End debug label region

cmd-insert-debug-marker

Insert debug marker

set-object-tag

Set debug object tag (for validation layers)

get-object-name

Get debug object name (query)

cmd-insert-debug-label-color

Cmd insert debug label with color

set-debug-utils-object-name

Set debug utils object name

queue-begin-debug-label

Queue begin debug label

queue-end-debug-label

Queue end debug label

queue-insert-debug-label

Queue insert debug label

create-sampler

Create a sampler for texture sampling

destroy-sampler

Destroy the current sampler

update-descriptor-set-image

Update descriptor set with image sampler

create-sampler-anisotropic

Create sampler with anisotropy

create-sampler-with-border

Create sampler with border color

create-sampler-ycbcr

Create sampler YCbCr conversion

update-descriptor-set-immutable-sampler

Update descriptor set with immutable sampler

create-graphics-pipeline

Create a graphics pipeline with vertex and fragment shaders

set-vertex-input

Set vertex input format (binding, location, format, offset)

set-primitive-topology

Set primitive topology (triangles, lines, points)

set-primitive-restart

Enable/disable primitive restart

set-viewport

Set viewport (x, y, width, height, min_depth, max_depth)

set-scissor

Set scissor rectangle (x, y, width, height)

set-rasterizer-discard

Enable rasterizer discard

set-polygon-mode

Set polygon mode (fill, line, point)

set-line-width

Set line width

set-cull-mode

Set cull mode (none, front, back, front_and_back)

set-front-face

Set front face winding order (cw, ccw)

set-depth-clamp

Enable depth clamp

set-depth-bias

Set depth bias (constant_factor, clamp, slope_factor)

set-depth-test

Enable depth test

set-depth-compare-op

Set depth compare operation (never, less, equal, less_or_equal, greater, not_equal, greater_or_equal, always)

set-depth-write

Enable depth write

set-depth-bounds

Set depth bounds (min, max)

set-depth-bounds-test

Enable depth bounds test

set-stencil-test

Enable stencil test

set-stencil-ops

Set stencil operations (fail_op, pass_op, depth_fail_op, compare_op)

set-color-blend-enable

Enable blending for color attachment

set-color-blend-factors

Set color blend factors (src_color_blend_factor, dst_color_blend_factor, src_alpha_blend_factor, dst_alpha_blend_factor)

set-color-blend-op

Set color blend operation (add, subtract, reverse_subtract, min, max)

set-color-write-mask

Set color write mask (r, g, b, a)

set-blend-constants

Set blend constants (r, g, b, a)

set-logic-op-enable

Enable logic operations

set-logic-op

Set logic operation (clear, and, copy, etc.)

set-patch-control-points

Set tessellation patch control points

set-tessellation-domain-origin

Set tessellation domain origin

set-rasterization-samples

Set rasterization samples count

set-sample-shading

Set sample shading enable

cmd-set-viewport

Set viewport dynamically in command buffer

cmd-set-scissor

Set scissor dynamically in command buffer

cmd-set-line-width

Set line width dynamically in command buffer

cmd-set-depth-bias

Set depth bias dynamically in command buffer

cmd-set-blend-constants

Set blend constants dynamically in command buffer

cmd-set-depth-bounds

Set depth bounds dynamically in command buffer

cmd-set-stencil-compare-mask

Set stencil compare mask dynamically

cmd-set-stencil-write-mask

Set stencil write mask dynamically

cmd-set-stencil-reference

Set stencil reference dynamically

cmd-set-primitive-topology

Set primitive topology dynamically

cmd-set-cull-mode

Set cull mode dynamically

cmd-set-front-face

Set front face dynamically

cmd-set-vertex-input

Set vertex input dynamically

cmd-draw

Draw vertices (vertex_count, instance_count, first_vertex, first_instance)

cmd-draw-indexed

Draw indexed (index_count, instance_count, first_index, vertex_offset, first_instance)

cmd-draw-indirect

Draw indirect (buffer_offset, draw_count, stride)

cmd-draw-indexed-indirect

Draw indexed indirect (buffer_offset, draw_count, stride)

cmd-bind-vertex-buffer

Bind vertex buffer (binding, offset)

cmd-bind-index-buffer

Bind index buffer (offset, index_type)

cmd-draw-indirect-count

Draw indirect count (with draw count from buffer)

cmd-draw-indexed-indirect-count

Draw indexed indirect count

cmd-draw-multi

Draw multi-instance (instanced rendering with first instance)

cmd-draw-indexed-multi

Draw indexed multi-instance

cmd-draw-indirect-task

Draw indirect task (task shader indirect)

cmd-draw-indexed-indirect-task

Draw indexed indirect task (task shader indexed indirect)

cmd-dispatch-indirect-buffer

Dispatch compute indirect (with workgroup count from buffer)

cmd-dispatch-workgroup-memory

Dispatch compute with workgroup memory

cmd-clear-color-image

Clear color image (r, g, b, a)

cmd-clear-depth-stencil-image

Clear depth stencil image (depth, stencil)

cmd-clear-attachments

Clear attachments (color, depth, stencil)

cmd-resolve-image

Resolve multisampled image to single sample

cmd-generate-mipmaps

Generate mipmaps for an image

get-memory-properties

Returns JSON object with memory types and heaps

get-memory-properties

Returns JSON object with memory types and heaps

create-ray-tracing-pipeline

Create ray tracing pipeline

destroy-ray-tracing-pipeline

Destroy ray tracing pipeline

build-acceleration-structure

Build acceleration structure (TLAS/BLAS)

destroy-acceleration-structure

Destroy acceleration structure

cmd-trace-rays

Trace rays (command buffer recording)

get-ray-tracing-shader-group-handles

Get ray tracing shader group handles

create-shader-binding-table

Create shader binding table

destroy-shader-binding-table

Destroy shader binding table

copy-acceleration-structure

Copy acceleration structure (clone)

write-acceleration-structure-properties

Write acceleration structure properties to buffer

compact-acceleration-structure

Compact acceleration structure (reduce memory)

get-ray-tracing-properties

Get ray tracing pipeline properties

create-ray-tracing-pipeline-libraries

Create ray tracing pipeline with libraries

get-ray-tracing-capture-replay-handles

Get ray tracing capture replay shader group handles

build-acceleration-structure-scratch

Build acceleration structure with scratch buffer

build-acceleration-structure-indirect

Build acceleration structure indirect

create-video-session-decode

Create video session (decode)

create-video-session-encode

Create video session (encode)

destroy-video-session

Destroy video session

cmd-decode-video

Video decode operation

cmd-encode-video

Video encode operation

create-optical-flow-session

Create optical flow session

destroy-optical-flow-session

Destroy optical flow session

cmd-optical-flow-execute

Execute optical flow operation

bind-optical-flow-image

Bind optical flow image

get-cooperative-matrix-properties

Get cooperative matrix properties

create-cooperative-matrix-pipeline

Create cooperative matrix pipeline

cmd-cooperative-matrix-multiply

Execute cooperative matrix multiply

cmd-cooperative-matrix-load

Load cooperative matrix tile

create-mesh-pipeline

Create mesh pipeline (task + mesh shaders)

destroy-mesh-pipeline

Destroy mesh pipeline

cmd-draw-mesh-tasks

Draw mesh tasks (task shader dispatch)

cmd-draw-mesh-tasks-indirect

Draw mesh tasks indirect

cmd-draw-mesh-tasks-indirect-count

Draw mesh tasks indirect count (with count buffer)

cmd-set-mesh-pipeline

Set mesh shader pipeline

set-task-workgroup-size

Set task shader workgroup size

set-mesh-workgroup-size

Set mesh shader workgroup size

set-fragment-shading-rate

Set fragment shading rate

cmd-set-fragment-shading-rate

Set fragment shading rate dynamically in command buffer

set-multiview-view-mask

Set multiview configuration

set-multiview-correlation-mask

Set multiview correlation mask

set-fragment-density-map

Set fragment density map attachment

cmd-set-fragment-density-map-size

Set fragment density map size dynamically

set-memory-priority

Set memory priority (0.0 - 1.0)

get-memory-budget

Get memory budget info

set-device-memory-pageable

Set device memory as pageable

set-validation-features

Set validation features (best practices, sync validation)

create-debug-utils-messenger

Set debug utils messenger

destroy-debug-utils-messenger

Destroy debug utils messenger

submit-debug-message

Submit debug utils message

set-profiling-lock

Set profiling lock (for GPU profilers like RenderDoc, Nsight)

cmd-begin-conditional-rendering

Begin conditional rendering

cmd-end-conditional-rendering

End conditional rendering

release-display

Release display from headless swapchain

acquire-profiling-lock

Acquire profiling lock for profiling tools

calibrate-device-timestamp

Calibrate device timestamp (sync CPU/GPU timestamps)

get-calibrateable-time-domains

Get calibrateable time domains

bind-sparse-buffer-memory

Bind sparse buffer memory (sparse binding queue)

bind-sparse-image-memory

Bind sparse image memory

bind-sparse-image-opaque-memory

Bind sparse image opaque memory

queue-sparse-bind-submit

Queue sparse binding submit

get-device-group-peer-memory-features

Get device group peer memory features

bind-buffer-memory-device-group

Bind buffer memory to device group

bind-image-memory-device-group

Bind image memory to device group

set-device-group-render-pass-begin

Set device group render pass begin info

set-device-group-command-buffer-begin

Set device group command buffer begin info

cmd-dispatch-base

Dispatch base (device group)

get-device-group-present-capabilities

Get device group present capabilities

acquire-next-image-device-group

Acquire next image for device group

queue-present-device-group

Queue present for device group