Browse Source

versionwise workgroup vars

xbzk/vulkan-vuid-goodies-pack
xbzk 4 weeks ago
parent
commit
42451f0c3d
  1. 10
      src/shader_recompiler/backend/spirv/spirv_emit_context.cpp

10
src/shader_recompiler/backend/spirv/spirv_emit_context.cpp

@ -613,7 +613,10 @@ void EmitContext::DefineSharedMemory(const IR::Program& program) {
const Id element_pointer{TypePointer(spv::StorageClass::Workgroup, element_type)};
const Id variable{AddGlobalVariable(pointer, spv::StorageClass::Workgroup)};
Decorate(variable, spv::Decoration::Aliased);
interfaces.push_back(variable);
// Workgroup variables in EntryPoint interfaces are only supported in SPIR-V 1.4+
if (profile.supported_spirv >= 0x00010400) {
interfaces.push_back(variable);
}
return std::make_tuple(variable, element_pointer, pointer);
}};
@ -642,7 +645,10 @@ void EmitContext::DefineSharedMemory(const IR::Program& program) {
shared_u32 = TypePointer(spv::StorageClass::Workgroup, U32[1]);
shared_memory_u32 = AddGlobalVariable(shared_memory_u32_type, spv::StorageClass::Workgroup);
interfaces.push_back(shared_memory_u32);
// Workgroup variables in EntryPoint interfaces are only supported in SPIR-V 1.4+
if (profile.supported_spirv >= 0x00010400) {
interfaces.push_back(shared_memory_u32);
}
const Id func_type{TypeFunction(void_id, U32[1], U32[1])};
const auto make_function{[&](u32 mask, u32 size) {

Loading…
Cancel
Save