diff options
Diffstat (limited to 'spirv_parser.cpp')
-rw-r--r-- | spirv_parser.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/spirv_parser.cpp b/spirv_parser.cpp index 49eb1933..39bd1adf 100644 --- a/spirv_parser.cpp +++ b/spirv_parser.cpp @@ -275,24 +275,28 @@ void Parser::parse(const Instruction &instruction) case OpExtInstImport: { uint32_t id = ops[0]; + + SPIRExtension::Extension spirv_ext = SPIRExtension::Unsupported; + auto ext = extract_string(ir.spirv, instruction.offset + 1); if (ext == "GLSL.std.450") - set<SPIRExtension>(id, SPIRExtension::GLSL); + spirv_ext = SPIRExtension::GLSL; else if (ext == "DebugInfo") - set<SPIRExtension>(id, SPIRExtension::SPV_debug_info); + spirv_ext = SPIRExtension::SPV_debug_info; else if (ext == "SPV_AMD_shader_ballot") - set<SPIRExtension>(id, SPIRExtension::SPV_AMD_shader_ballot); + spirv_ext = SPIRExtension::SPV_AMD_shader_ballot; else if (ext == "SPV_AMD_shader_explicit_vertex_parameter") - set<SPIRExtension>(id, SPIRExtension::SPV_AMD_shader_explicit_vertex_parameter); + spirv_ext = SPIRExtension::SPV_AMD_shader_explicit_vertex_parameter; else if (ext == "SPV_AMD_shader_trinary_minmax") - set<SPIRExtension>(id, SPIRExtension::SPV_AMD_shader_trinary_minmax); + spirv_ext = SPIRExtension::SPV_AMD_shader_trinary_minmax; else if (ext == "SPV_AMD_gcn_shader") - set<SPIRExtension>(id, SPIRExtension::SPV_AMD_gcn_shader); + spirv_ext = SPIRExtension::SPV_AMD_gcn_shader; else if (ext == "NonSemantic.DebugPrintf") - set<SPIRExtension>(id, SPIRExtension::NonSemanticDebugPrintf); - else - set<SPIRExtension>(id, SPIRExtension::Unsupported); + spirv_ext = SPIRExtension::NonSemanticDebugPrintf; + else if (ext == "NonSemantic.Shader.DebugInfo.100") + spirv_ext = SPIRExtension::NonSemanticShaderDebugInfo; + set<SPIRExtension>(id, spirv_ext); // Other SPIR-V extensions which have ExtInstrs are currently not supported. break; |