Module Sarek_vulkan.Vulkan_plugin

module Vulkan_base : sig ... end

Reuse the existing Vulkan implementation

Extend Framework_sig.kargs with Vulkan-specific variant

type vulkan_intrinsic = {
  1. intr_name : string;
  2. intr_codegen : string;
  3. intr_convergence : Spoc_framework.Framework_sig.convergence;
}

Vulkan-specific intrinsic implementation

Intrinsic registry for Vulkan-specific intrinsics

Vulkan Backend - implements BACKEND

val is_disabled : unit -> bool

Check if backend is disabled via environment variable. Checked at runtime to allow SPOC_DISABLE_* to work without rebuild.

val registered_backend : unit lazy_t

Backend registration - happens once when first needed

val init : unit -> unit

Force module initialization

Additional Vulkan-specific Functions

val register_intrinsic : string -> Vulkan_intrinsics.intrinsic_impl -> unit

Register a custom Vulkan intrinsic

val find_intrinsic : string -> Vulkan_intrinsics.intrinsic_impl option

Look up a Vulkan intrinsic

val generate_with_types : ?block:(int * int * int) -> types:(string * (string * Sarek_ir_types.elttype) list) list -> Sarek_ir_types.kernel -> string

Generate GLSL source with custom types

val generate_source : ?block:(int * int * int) -> Sarek_ir_types.kernel -> string

Generate GLSL source for a kernel

val glslang_available : unit -> bool

Check if glslangValidator is available

val compile_glsl_to_spirv : entry_point:string -> string -> string

Compile GLSL to SPIR-V