Skip to content

Commit 4e9cde5

Browse files
FoggyMistarcady-lunarg
authored andcommitted
Move check if useStorageBuffer needs to be set.
From TParseContext used only by GLSL, to TParseContextBase inherited by both GLSL and HLSL paths. It caused compilations from HLSL to SPIR-V 1.3+ to use BufferBlock decoration which is no longer valid.
1 parent 0d3211f commit 4e9cde5

8 files changed

Lines changed: 56 additions & 56 deletions

File tree

Test/baseResults/hlsl.wavebroadcast.comp.out

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2331,7 +2331,7 @@ local_size = (32, 16, 1)
23312331
MemberDecorate 20(Types) 3 Offset 64
23322332
Decorate 21 ArrayStride 96
23332333
MemberDecorate 22(data) 0 Offset 0
2334-
Decorate 22(data) BufferBlock
2334+
Decorate 22(data) Block
23352335
Decorate 24(data) DescriptorSet 0
23362336
Decorate 24(data) Binding 0
23372337
Decorate 388(dti) BuiltIn GlobalInvocationId
@@ -2351,31 +2351,31 @@ local_size = (32, 16, 1)
23512351
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
23522352
21: TypeRuntimeArray 20(Types)
23532353
22(data): TypeStruct 21
2354-
23: TypePointer Uniform 22(data)
2355-
24(data): 23(ptr) Variable Uniform
2354+
23: TypePointer StorageBuffer 22(data)
2355+
24(data): 23(ptr) Variable StorageBuffer
23562356
25: 14(int) Constant 0
23572357
26: 6(int) Constant 0
23582358
27: TypePointer Function 6(int)
2359-
32: TypePointer Uniform 13(ivec4)
2359+
32: TypePointer StorageBuffer 13(ivec4)
23602360
35: 6(int) Constant 13
23612361
36: 6(int) Constant 3
2362-
43: TypePointer Uniform 6(int)
2362+
43: TypePointer StorageBuffer 6(int)
23632363
52: TypeVector 6(int) 2
23642364
59: 6(int) Constant 1
23652365
74: 6(int) Constant 2
23662366
79: 14(int) Constant 1
2367-
82: TypePointer Uniform 15(ivec4)
2368-
91: TypePointer Uniform 14(int)
2367+
82: TypePointer StorageBuffer 15(ivec4)
2368+
91: TypePointer StorageBuffer 14(int)
23692369
100: TypeVector 14(int) 2
23702370
113: TypeVector 14(int) 3
23712371
126: 14(int) Constant 2
2372-
129: TypePointer Uniform 17(fvec4)
2373-
138: TypePointer Uniform 16(float)
2372+
129: TypePointer StorageBuffer 17(fvec4)
2373+
138: TypePointer StorageBuffer 16(float)
23742374
147: TypeVector 16(float) 2
23752375
160: TypeVector 16(float) 3
23762376
173: 14(int) Constant 3
2377-
176: TypePointer Uniform 19(f64vec4)
2378-
185: TypePointer Uniform 18(float64_t)
2377+
176: TypePointer StorageBuffer 19(f64vec4)
2378+
185: TypePointer StorageBuffer 18(float64_t)
23792379
194: TypeVector 18(float64_t) 2
23802380
207: TypeVector 18(float64_t) 3
23812381
387: TypePointer Input 7(ivec3)

Test/baseResults/hlsl.waveprefix.comp.out

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2355,7 +2355,7 @@ local_size = (32, 16, 1)
23552355
MemberDecorate 20(Types) 3 Offset 64
23562356
Decorate 21 ArrayStride 96
23572357
MemberDecorate 22(data) 0 Offset 0
2358-
Decorate 22(data) BufferBlock
2358+
Decorate 22(data) Block
23592359
Decorate 24(data) DescriptorSet 0
23602360
Decorate 24(data) Binding 0
23612361
Decorate 398(dti) BuiltIn GlobalInvocationId
@@ -2375,30 +2375,30 @@ local_size = (32, 16, 1)
23752375
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
23762376
21: TypeRuntimeArray 20(Types)
23772377
22(data): TypeStruct 21
2378-
23: TypePointer Uniform 22(data)
2379-
24(data): 23(ptr) Variable Uniform
2378+
23: TypePointer StorageBuffer 22(data)
2379+
24(data): 23(ptr) Variable StorageBuffer
23802380
25: 14(int) Constant 0
23812381
26: 6(int) Constant 0
23822382
27: TypePointer Function 6(int)
2383-
32: TypePointer Uniform 13(ivec4)
2383+
32: TypePointer StorageBuffer 13(ivec4)
23842384
35: 6(int) Constant 3
2385-
42: TypePointer Uniform 6(int)
2385+
42: TypePointer StorageBuffer 6(int)
23862386
51: TypeVector 6(int) 2
23872387
58: 6(int) Constant 1
23882388
73: 6(int) Constant 2
23892389
78: 14(int) Constant 1
2390-
81: TypePointer Uniform 15(ivec4)
2391-
90: TypePointer Uniform 14(int)
2390+
81: TypePointer StorageBuffer 15(ivec4)
2391+
90: TypePointer StorageBuffer 14(int)
23922392
99: TypeVector 14(int) 2
23932393
112: TypeVector 14(int) 3
23942394
125: 14(int) Constant 2
2395-
128: TypePointer Uniform 17(fvec4)
2396-
137: TypePointer Uniform 16(float)
2395+
128: TypePointer StorageBuffer 17(fvec4)
2396+
137: TypePointer StorageBuffer 16(float)
23972397
146: TypeVector 16(float) 2
23982398
159: TypeVector 16(float) 3
23992399
172: 14(int) Constant 3
2400-
175: TypePointer Uniform 19(f64vec4)
2401-
184: TypePointer Uniform 18(float64_t)
2400+
175: TypePointer StorageBuffer 19(f64vec4)
2401+
184: TypePointer StorageBuffer 18(float64_t)
24022402
193: TypeVector 18(float64_t) 2
24032403
206: TypeVector 18(float64_t) 3
24042404
391: TypeBool

Test/baseResults/hlsl.wavequad.comp.out

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8058,7 +8058,7 @@ local_size = (32, 16, 1)
80588058
MemberDecorate 20(Types) 3 Offset 64
80598059
Decorate 21 ArrayStride 96
80608060
MemberDecorate 22(data) 0 Offset 0
8061-
Decorate 22(data) BufferBlock
8061+
Decorate 22(data) Block
80628062
Decorate 24(data) DescriptorSet 0
80638063
Decorate 24(data) Binding 0
80648064
Decorate 1227(dti) BuiltIn GlobalInvocationId
@@ -8078,30 +8078,30 @@ local_size = (32, 16, 1)
80788078
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
80798079
21: TypeRuntimeArray 20(Types)
80808080
22(data): TypeStruct 21
8081-
23: TypePointer Uniform 22(data)
8082-
24(data): 23(ptr) Variable Uniform
8081+
23: TypePointer StorageBuffer 22(data)
8082+
24(data): 23(ptr) Variable StorageBuffer
80838083
25: 14(int) Constant 0
80848084
26: 6(int) Constant 0
80858085
27: TypePointer Function 6(int)
8086-
32: TypePointer Uniform 13(ivec4)
8086+
32: TypePointer StorageBuffer 13(ivec4)
80878087
35: 6(int) Constant 3
8088-
42: TypePointer Uniform 6(int)
8088+
42: TypePointer StorageBuffer 6(int)
80898089
51: TypeVector 6(int) 2
80908090
58: 6(int) Constant 1
80918091
73: 6(int) Constant 2
80928092
78: 14(int) Constant 1
8093-
81: TypePointer Uniform 15(ivec4)
8094-
90: TypePointer Uniform 14(int)
8093+
81: TypePointer StorageBuffer 15(ivec4)
8094+
90: TypePointer StorageBuffer 14(int)
80958095
99: TypeVector 14(int) 2
80968096
112: TypeVector 14(int) 3
80978097
125: 14(int) Constant 2
8098-
128: TypePointer Uniform 17(fvec4)
8099-
137: TypePointer Uniform 16(float)
8098+
128: TypePointer StorageBuffer 17(fvec4)
8099+
137: TypePointer StorageBuffer 16(float)
81008100
146: TypeVector 16(float) 2
81018101
159: TypeVector 16(float) 3
81028102
172: 14(int) Constant 3
8103-
175: TypePointer Uniform 19(f64vec4)
8104-
184: TypePointer Uniform 18(float64_t)
8103+
175: TypePointer StorageBuffer 19(f64vec4)
8104+
184: TypePointer StorageBuffer 18(float64_t)
81058105
193: TypeVector 18(float64_t) 2
81068106
206: TypeVector 18(float64_t) 3
81078107
1226: TypePointer Input 7(ivec3)

Test/baseResults/hlsl.wavequery.comp.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ local_size = (32, 16, 1)
7979
Name 21 "@gl_SubgroupSize"
8080
Decorate 9 ArrayStride 4
8181
MemberDecorate 10(data) 0 Offset 0
82-
Decorate 10(data) BufferBlock
82+
Decorate 10(data) Block
8383
Decorate 12(data) DescriptorSet 0
8484
Decorate 12(data) Binding 0
8585
Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
@@ -89,8 +89,8 @@ local_size = (32, 16, 1)
8989
8: TypeInt 32 0
9090
9: TypeRuntimeArray 8(int)
9191
10(data): TypeStruct 9
92-
11: TypePointer Uniform 10(data)
93-
12(data): 11(ptr) Variable Uniform
92+
11: TypePointer StorageBuffer 10(data)
93+
12(data): 11(ptr) Variable StorageBuffer
9494
13: TypeInt 32 1
9595
14: 13(int) Constant 0
9696
15: TypePointer Input 8(int)
@@ -99,7 +99,7 @@ local_size = (32, 16, 1)
9999
19: 8(int) Constant 3
100100
21(@gl_SubgroupSize): 15(ptr) Variable Input
101101
23: 8(int) Constant 0
102-
25: TypePointer Uniform 8(int)
102+
25: TypePointer StorageBuffer 8(int)
103103
4(CSMain): 2 Function None 3
104104
5: Label
105105
27: 2 FunctionCall 6(@CSMain()

Test/baseResults/hlsl.wavereduction.comp.out

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6219,7 +6219,7 @@ local_size = (32, 16, 1)
62196219
MemberDecorate 20(Types) 3 Offset 64
62206220
Decorate 21 ArrayStride 96
62216221
MemberDecorate 22(data) 0 Offset 0
6222-
Decorate 22(data) BufferBlock
6222+
Decorate 22(data) Block
62236223
Decorate 24(data) DescriptorSet 0
62246224
Decorate 24(data) Binding 0
62256225
Decorate 986(dti) BuiltIn GlobalInvocationId
@@ -6239,30 +6239,30 @@ local_size = (32, 16, 1)
62396239
20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
62406240
21: TypeRuntimeArray 20(Types)
62416241
22(data): TypeStruct 21
6242-
23: TypePointer Uniform 22(data)
6243-
24(data): 23(ptr) Variable Uniform
6242+
23: TypePointer StorageBuffer 22(data)
6243+
24(data): 23(ptr) Variable StorageBuffer
62446244
25: 14(int) Constant 0
62456245
26: 6(int) Constant 0
62466246
27: TypePointer Function 6(int)
6247-
32: TypePointer Uniform 13(ivec4)
6247+
32: TypePointer StorageBuffer 13(ivec4)
62486248
35: 6(int) Constant 3
6249-
42: TypePointer Uniform 6(int)
6249+
42: TypePointer StorageBuffer 6(int)
62506250
51: TypeVector 6(int) 2
62516251
58: 6(int) Constant 1
62526252
73: 6(int) Constant 2
62536253
78: 14(int) Constant 1
6254-
81: TypePointer Uniform 15(ivec4)
6255-
90: TypePointer Uniform 14(int)
6254+
81: TypePointer StorageBuffer 15(ivec4)
6255+
90: TypePointer StorageBuffer 14(int)
62566256
99: TypeVector 14(int) 2
62576257
112: TypeVector 14(int) 3
62586258
125: 14(int) Constant 2
6259-
128: TypePointer Uniform 17(fvec4)
6260-
137: TypePointer Uniform 16(float)
6259+
128: TypePointer StorageBuffer 17(fvec4)
6260+
137: TypePointer StorageBuffer 16(float)
62616261
146: TypeVector 16(float) 2
62626262
159: TypeVector 16(float) 3
62636263
172: 14(int) Constant 3
6264-
175: TypePointer Uniform 19(f64vec4)
6265-
184: TypePointer Uniform 18(float64_t)
6264+
175: TypePointer StorageBuffer 19(f64vec4)
6265+
184: TypePointer StorageBuffer 18(float64_t)
62666266
193: TypeVector 18(float64_t) 2
62676267
206: TypeVector 18(float64_t) 3
62686268
979: TypeBool

Test/baseResults/hlsl.wavevote.comp.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ local_size = (32, 16, 1)
228228
Name 72 "param"
229229
Decorate 14 ArrayStride 8
230230
MemberDecorate 15(data) 0 Offset 0
231-
Decorate 15(data) BufferBlock
231+
Decorate 15(data) Block
232232
Decorate 17(data) DescriptorSet 0
233233
Decorate 17(data) Binding 0
234234
Decorate 70(dti) BuiltIn GlobalInvocationId
@@ -241,8 +241,8 @@ local_size = (32, 16, 1)
241241
13: TypeInt 64 0
242242
14: TypeRuntimeArray 13(int64_t)
243243
15(data): TypeStruct 14
244-
16: TypePointer Uniform 15(data)
245-
17(data): 16(ptr) Variable Uniform
244+
16: TypePointer StorageBuffer 15(data)
245+
17(data): 16(ptr) Variable StorageBuffer
246246
18: TypeInt 32 1
247247
19: 18(int) Constant 0
248248
20: 6(int) Constant 0
@@ -251,7 +251,7 @@ local_size = (32, 16, 1)
251251
28: 6(int) Constant 3
252252
30: TypeVector 6(int) 4
253253
32: TypeVector 13(int64_t) 4
254-
35: TypePointer Uniform 13(int64_t)
254+
35: TypePointer StorageBuffer 13(int64_t)
255255
37: 6(int) Constant 1
256256
48: 6(int) Constant 2
257257
69: TypePointer Input 7(ivec3)

glslang/MachineIndependent/ParseHelper.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
8080
globalBufferDefaults.layoutMatrix = ElmColumnMajor;
8181
globalBufferDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd430 : ElpShared;
8282

83-
// use storage buffer on SPIR-V 1.3 and up
84-
if (spvVersion.spv >= EShTargetSpv_1_3)
85-
intermediate.setUseStorageBuffer();
86-
8783
globalInputDefaults.clear();
8884
globalOutputDefaults.clear();
8985

glslang/MachineIndependent/ParseHelper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ class TParseContextBase : public TParseVersions {
9595
globalUniformSet(TQualifier::layoutSetEnd),
9696
atomicCounterBlockSet(TQualifier::layoutSetEnd)
9797
{
98+
// use storage buffer on SPIR-V 1.3 and up
99+
if (spvVersion.spv >= EShTargetSpv_1_3)
100+
intermediate.setUseStorageBuffer();
101+
98102
if (entryPoint != nullptr)
99103
sourceEntryPointName = *entryPoint;
100104
}

0 commit comments

Comments
 (0)