Handle ShaderDebugInfo non-semantic extension.
This commit is contained in:
parent
abc31207bf
commit
e8a22a7cf6
@ -643,7 +643,8 @@ struct SPIRExtension : IVariant
|
||||
SPV_AMD_shader_explicit_vertex_parameter,
|
||||
SPV_AMD_shader_trinary_minmax,
|
||||
SPV_AMD_gcn_shader,
|
||||
NonSemanticDebugPrintf
|
||||
NonSemanticDebugPrintf,
|
||||
NonSemanticShaderDebugInfo
|
||||
};
|
||||
|
||||
explicit SPIRExtension(Extension ext_)
|
||||
|
@ -725,7 +725,7 @@ bool Compiler::InterfaceVariableAccessHandler::handle(Op opcode, const uint32_t
|
||||
|
||||
case OpExtInst:
|
||||
{
|
||||
if (length < 5)
|
||||
if (length < 3)
|
||||
return false;
|
||||
auto &extension_set = compiler.get<SPIRExtension>(args[2]);
|
||||
switch (extension_set.ext)
|
||||
|
@ -13283,7 +13283,8 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
|
||||
{
|
||||
emit_spv_amd_gcn_shader_op(ops[0], ops[1], ops[3], &ops[4], length - 4);
|
||||
}
|
||||
else if (ext == SPIRExtension::SPV_debug_info)
|
||||
else if (ext == SPIRExtension::SPV_debug_info ||
|
||||
ext == SPIRExtension::NonSemanticShaderDebugInfo)
|
||||
{
|
||||
break; // Ignore SPIR-V debug information extended instructions.
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user