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);
|
spvType = builder.makeFloatType(64);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtFloat16:
|
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);
|
spvType = builder.makeFloatType(16);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtBool:
|
case glslang::EbtBool:
|
||||||
@ -2750,17 +2746,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
|||||||
spvType = builder.makeUintType(8);
|
spvType = builder.makeUintType(8);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtInt16:
|
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);
|
spvType = builder.makeIntType(16);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtUint16:
|
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);
|
spvType = builder.makeUintType(16);
|
||||||
break;
|
break;
|
||||||
case glslang::EbtInt:
|
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 OpSConvert:
|
||||||
case OpUConvert:
|
case OpUConvert:
|
||||||
break;
|
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:
|
default:
|
||||||
if (basicTypeOp == OpTypeFloat && width == 16)
|
if (basicTypeOp == OpTypeFloat && width == 16)
|
||||||
addCapability(CapabilityFloat16);
|
addCapability(CapabilityFloat16);
|
||||||
|
@ -6,7 +6,6 @@ spv.16bitstorage-int.frag
|
|||||||
Capability Shader
|
Capability Shader
|
||||||
Capability StorageUniformBufferBlock16
|
Capability StorageUniformBufferBlock16
|
||||||
Capability StorageUniform16
|
Capability StorageUniform16
|
||||||
Extension "SPV_AMD_gpu_shader_int16"
|
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
|
@ -6,7 +6,6 @@ spv.16bitstorage-uint.frag
|
|||||||
Capability Shader
|
Capability Shader
|
||||||
Capability StorageUniformBufferBlock16
|
Capability StorageUniformBufferBlock16
|
||||||
Capability StorageUniform16
|
Capability StorageUniform16
|
||||||
Extension "SPV_AMD_gpu_shader_int16"
|
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
|
@ -6,7 +6,6 @@ spv.16bitstorage.frag
|
|||||||
Capability Shader
|
Capability Shader
|
||||||
Capability StorageUniformBufferBlock16
|
Capability StorageUniformBufferBlock16
|
||||||
Capability StorageUniform16
|
Capability StorageUniform16
|
||||||
Extension "SPV_AMD_gpu_shader_half_float"
|
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
|
@ -27,7 +27,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
|||||||
Capability StorageInputOutput16
|
Capability StorageInputOutput16
|
||||||
Capability Float16ImageAMD
|
Capability Float16ImageAMD
|
||||||
Capability ImageGatherBiasLodAMD
|
Capability ImageGatherBiasLodAMD
|
||||||
Extension "SPV_AMD_gpu_shader_half_float"
|
|
||||||
Extension "SPV_AMD_gpu_shader_half_float_fetch"
|
Extension "SPV_AMD_gpu_shader_half_float_fetch"
|
||||||
Extension "SPV_AMD_texture_gather_bias_lod"
|
Extension "SPV_AMD_texture_gather_bias_lod"
|
||||||
Extension "SPV_KHR_16bit_storage"
|
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 Int16
|
||||||
Capability StorageUniform16
|
Capability StorageUniform16
|
||||||
Capability StorageInputOutput16
|
Capability StorageInputOutput16
|
||||||
Extension "SPV_AMD_gpu_shader_half_float"
|
|
||||||
Extension "SPV_AMD_gpu_shader_int16"
|
Extension "SPV_AMD_gpu_shader_int16"
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
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 Int16
|
||||||
Capability Int8
|
Capability Int8
|
||||||
Capability StorageUniform16
|
Capability StorageUniform16
|
||||||
Extension "SPV_AMD_gpu_shader_half_float"
|
|
||||||
Extension "SPV_AMD_gpu_shader_int16"
|
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
|
@ -14,8 +14,6 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require
|
|||||||
Capability Groups
|
Capability Groups
|
||||||
Capability Int16
|
Capability Int16
|
||||||
Capability StorageUniformBufferBlock16
|
Capability StorageUniformBufferBlock16
|
||||||
Extension "SPV_AMD_gpu_shader_half_float"
|
|
||||||
Extension "SPV_AMD_gpu_shader_int16"
|
|
||||||
Extension "SPV_AMD_shader_ballot"
|
Extension "SPV_AMD_shader_ballot"
|
||||||
Extension "SPV_KHR_16bit_storage"
|
Extension "SPV_KHR_16bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user