SPV: Fix #1487: Only declare AMD int16/half_float extensions when needed.
This commit is contained in:
parent
546b78854a
commit
afe0c66f65
12
SPIRV/GlslangToSpv.cpp
Normal file → Executable file
12
SPIRV/GlslangToSpv.cpp
Normal file → Executable file
@ -2729,10 +2729,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||
spvType = builder.makeFloatType(64);
|
||||
break;
|
||||
case glslang::EbtFloat16:
|
||||
#if AMD_EXTENSIONS
|
||||
if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
|
||||
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
|
||||
#endif
|
||||
spvType = builder.makeFloatType(16);
|
||||
break;
|
||||
case glslang::EbtBool:
|
||||
@ -2750,17 +2746,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
||||
spvType = builder.makeUintType(8);
|
||||
break;
|
||||
case glslang::EbtInt16:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
|
||||
builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
spvType = builder.makeIntType(16);
|
||||
break;
|
||||
case glslang::EbtUint16:
|
||||
#ifdef AMD_EXTENSIONS
|
||||
if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3)
|
||||
builder.addExtension(spv::E_SPV_AMD_gpu_shader_int16);
|
||||
#endif
|
||||
spvType = builder.makeUintType(16);
|
||||
break;
|
||||
case glslang::EbtInt:
|
||||
|
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);
|
||||
|
@ -6,7 +6,6 @@ spv.16bitstorage-int.frag
|
||||
Capability Shader
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
|
@ -6,7 +6,6 @@ spv.16bitstorage-uint.frag
|
||||
Capability Shader
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
|
@ -6,7 +6,6 @@ spv.16bitstorage.frag
|
||||
Capability Shader
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
|
@ -27,7 +27,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
||||
Capability StorageInputOutput16
|
||||
Capability Float16ImageAMD
|
||||
Capability ImageGatherBiasLodAMD
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_AMD_gpu_shader_half_float_fetch"
|
||||
Extension "SPV_AMD_texture_gather_bias_lod"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
|
@ -14,7 +14,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
||||
Capability Int16
|
||||
Capability StorageUniform16
|
||||
Capability StorageInputOutput16
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
|
@ -14,8 +14,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
||||
Capability Int16
|
||||
Capability Int8
|
||||
Capability StorageUniform16
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
|
@ -14,8 +14,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
||||
Capability Groups
|
||||
Capability Int16
|
||||
Capability StorageUniformBufferBlock16
|
||||
Extension "SPV_AMD_gpu_shader_half_float"
|
||||
Extension "SPV_AMD_gpu_shader_int16"
|
||||
Extension "SPV_AMD_shader_ballot"
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
|
Loading…
x
Reference in New Issue
Block a user