improving GLSL_std450 support
Build / build (push) Successful in 38s
Test / build (push) Successful in 1m5s

This commit is contained in:
2026-06-10 19:15:39 +02:00
parent 11be3ea41d
commit c868a4481b
6 changed files with 998 additions and 272 deletions
+28
View File
@@ -6,6 +6,20 @@ const Options = extern struct {
use_simd_vectors_specializations: ffi.SpvCBool,
};
const ReflectionInfos = extern struct {
local_size_x: ffi.SpvCWord,
local_size_y: ffi.SpvCWord,
local_size_z: ffi.SpvCWord,
geometry_invocations: ffi.SpvCWord,
geometry_output_count: ffi.SpvCWord,
geometry_input: ffi.SpvCWord,
geometry_output: ffi.SpvCWord,
needs_derivatives: ffi.SpvCBool,
has_control_barriers: ffi.SpvCBool,
};
fn toCResult(err: spv.Module.ModuleError) ffi.Result {
return switch (err) {
spv.Module.ModuleError.InvalidSpirV => ffi.Result.InvalidSpirV,
@@ -40,3 +54,17 @@ export fn SpvDeinitModule(module: *spv.Module) callconv(.c) void {
module.deinit(allocator);
allocator.destroy(module);
}
export fn SpvModuleGetReflectionInfos(module: *spv.Module) callconv(.c) ReflectionInfos {
return .{
.local_size_x = module.reflection_infos.local_size_x,
.local_size_y = module.reflection_infos.local_size_y,
.local_size_z = module.reflection_infos.local_size_z,
.geometry_invocations = module.reflection_infos.geometry_invocations,
.geometry_output_count = module.reflection_infos.geometry_output_count,
.geometry_input = module.reflection_infos.geometry_input,
.geometry_output = module.reflection_infos.geometry_output,
.needs_derivatives = if (module.reflection_infos.needs_derivatives) 1 else 0,
.has_control_barriers = if (module.reflection_infos.has_control_barriers) 1 else 0,
};
}