Skip to content

Commit f53f9fd

Browse files
svenvhjsji
authored andcommitted
Allow UniformDecoration capability for Uniform (#3010)
Starting from SPIR-V 1.6, the `UniformDecoration` capability also enables the `Uniform` decoration (in addition to the `Shader` capability). llvm-spirv was not aware of this, and would always add the `Shader` (and implied `Matrix`) capabilities when consuming a SPIR-V module with a `Uniform` decoration. Original commit: KhronosGroup/SPIRV-LLVM-Translator@e17f4b4f34a330f
1 parent fd83727 commit f53f9fd

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

llvm-spirv/lib/SPIRV/libSPIRV/SPIRVDecorate.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ class SPIRVDecorateGeneric : public SPIRVAnnotationGeneric {
8383
BuiltIn BI = static_cast<BuiltIn>(Literals.back());
8484
return getCapability(BI);
8585
}
86+
case DecorationUniform:
87+
if (Module->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
88+
return getVec(CapabilityUniformDecoration);
89+
return getVec(CapabilityShader);
8690

8791
default:
8892
return getCapability(Dec);

llvm-spirv/lib/SPIRV/libSPIRV/SPIRVEnum.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,6 @@ template <> inline void SPIRVMap<Decoration, SPIRVCapVec>::init() {
396396
ADD_VEC_INIT(DecorationSample, {CapabilitySampleRateShading});
397397
ADD_VEC_INIT(DecorationInvariant, {CapabilityShader});
398398
ADD_VEC_INIT(DecorationConstant, {CapabilityKernel});
399-
ADD_VEC_INIT(DecorationUniform, {CapabilityShader});
400399
ADD_VEC_INIT(DecorationSaturatedConversion, {CapabilityKernel});
401400
ADD_VEC_INIT(DecorationStream, {CapabilityGeometryStreams});
402401
ADD_VEC_INIT(DecorationLocation, {CapabilityShader});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
; REQUIRES: spirv-as
2+
3+
; RUN: spirv-as %s --target-env spv1.6 -o %t.spv
4+
; RUN: spirv-val %t.spv
5+
; RUN: llvm-spirv -to-text -o - %t.spv | FileCheck %s
6+
7+
; Check that the translator does not add the Shader/Matrix capability
8+
; requirements for SPIR-V 1.6.
9+
10+
; CHECK-NOT: Capability Matrix
11+
; CHECK-NOT: Capability Shader
12+
13+
OpCapability Addresses
14+
OpCapability Kernel
15+
OpCapability UniformDecoration
16+
OpMemoryModel Physical64 OpenCL
17+
OpEntryPoint Kernel %2 "test"
18+
OpDecorate %uint_0 Uniform
19+
%uint = OpTypeInt 32 0
20+
%uint_0 = OpConstant %uint 0
21+
%void = OpTypeVoid
22+
%1 = OpTypeFunction %void
23+
%2 = OpFunction %void None %1
24+
%3 = OpLabel
25+
OpReturn
26+
OpFunctionEnd

0 commit comments

Comments
 (0)