SPV: Fix #1487: Only declare AMD int16/half_float extensions when needed.
This commit is contained in:
parent
546b78854a
commit
afe0c66f65
9 changed files with 19 additions and 21 deletions
19
SPIRV/SpvPostProcess.cpp
Normal file → Executable file
19
SPIRV/SpvPostProcess.cpp
Normal file → Executable file
|
|
@ -120,6 +120,25 @@ void Builder::postProcessType(const Instruction& inst, Id typeId)
|
|||
case OpSConvert:
|
||||
case OpUConvert:
|
||||
break;
|
||||
case OpExtInst:
|
||||
switch (inst.getImmediateOperand(1)) {
|
||||
#if AMD_EXTENSIONS
|
||||
case GLSLstd450Frexp:
|
||||
case GLSLstd450FrexpStruct:
|
||||
if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeInt, 16))
|
||||
addExtension(spv::E_SPV_AMD_gpu_shader_int16);
|
||||
break;
|
||||
case GLSLstd450InterpolateAtCentroid:
|
||||
case GLSLstd450InterpolateAtSample:
|
||||
case GLSLstd450InterpolateAtOffset:
|
||||
if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeFloat, 16))
|
||||
addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (basicTypeOp == OpTypeFloat && width == 16)
|
||||
addCapability(CapabilityFloat16);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue