Fix 8-bit storage nearly always using the
UniformAndStorageBuffer8BitAccess capability. When using the 8-bit storage extension it basically always used the `UniformAndStorageBuffer8BitAccess` capability, even in cases where it wasn't required. For instance if we are targeting Vulkan 1.1 (SPIR-V 1.3 or higher), and we are only using 8-bit types in an SSBO, we only need the `StorageBuffer8BitAccess` capability. I fixed this by enabling storage buffer use in Vulkan 1.1 / SPIR-V 1.3 or higher, and then changing the logic to match. I also added some tests that will output different capabilities when run on Vulkan 1.0 and 1.1, thus they are added twice to the test list (one for each version). Fixes #1539
This commit is contained in:
parent
a08f465d53
commit
b6b01f067b
@ -2812,7 +2812,8 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
|
|||||||
} else if (storageClass == spv::StorageClassUniform) {
|
} else if (storageClass == spv::StorageClassUniform) {
|
||||||
builder.addExtension(spv::E_SPV_KHR_8bit_storage);
|
builder.addExtension(spv::E_SPV_KHR_8bit_storage);
|
||||||
builder.addCapability(spv::CapabilityUniformAndStorageBuffer8BitAccess);
|
builder.addCapability(spv::CapabilityUniformAndStorageBuffer8BitAccess);
|
||||||
if (node->getType().getQualifier().storage == glslang::EvqBuffer)
|
} else if (storageClass == spv::StorageClassStorageBuffer) {
|
||||||
|
builder.addExtension(spv::E_SPV_KHR_8bit_storage);
|
||||||
builder.addCapability(spv::CapabilityStorageBuffer8BitAccess);
|
builder.addCapability(spv::CapabilityStorageBuffer8BitAccess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
56
Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
Normal file
56
Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
spv.1.3.8bitstorage-ssbo.vert
|
||||||
|
// Module Version 10300
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 28
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability CapabilityStorageBuffer8BitAccess
|
||||||
|
Extension "SPV_KHR_8bit_storage"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 9 18
|
||||||
|
Source GLSL 450
|
||||||
|
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "color"
|
||||||
|
Name 12 "Vertices"
|
||||||
|
MemberName 12(Vertices) 0 "vertices"
|
||||||
|
Name 14 ""
|
||||||
|
Name 18 "gl_VertexIndex"
|
||||||
|
Decorate 9(color) Location 0
|
||||||
|
Decorate 11 ArrayStride 1
|
||||||
|
MemberDecorate 12(Vertices) 0 NonWritable
|
||||||
|
MemberDecorate 12(Vertices) 0 Offset 0
|
||||||
|
Decorate 12(Vertices) Block
|
||||||
|
Decorate 14 DescriptorSet 0
|
||||||
|
Decorate 14 Binding 0
|
||||||
|
Decorate 18(gl_VertexIndex) BuiltIn VertexIndex
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Output 7(fvec4)
|
||||||
|
9(color): 8(ptr) Variable Output
|
||||||
|
10: TypeInt 8 0
|
||||||
|
11: TypeRuntimeArray 10(int8_t)
|
||||||
|
12(Vertices): TypeStruct 11
|
||||||
|
13: TypePointer StorageBuffer 12(Vertices)
|
||||||
|
14: 13(ptr) Variable StorageBuffer
|
||||||
|
15: TypeInt 32 1
|
||||||
|
16: 15(int) Constant 0
|
||||||
|
17: TypePointer Input 15(int)
|
||||||
|
18(gl_VertexIndex): 17(ptr) Variable Input
|
||||||
|
20: TypePointer StorageBuffer 10(int8_t)
|
||||||
|
23: TypeInt 32 0
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
19: 15(int) Load 18(gl_VertexIndex)
|
||||||
|
21: 20(ptr) AccessChain 14 16 19
|
||||||
|
22: 10(int8_t) Load 21
|
||||||
|
24: 23(int) UConvert 22
|
||||||
|
25: 15(int) Bitcast 24
|
||||||
|
26: 6(float) ConvertSToF 25
|
||||||
|
27: 7(fvec4) CompositeConstruct 26 26 26 26
|
||||||
|
Store 9(color) 27
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
56
Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
Normal file
56
Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
spv.1.3.8bitstorage-ubo.vert
|
||||||
|
// Module Version 10300
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 29
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||||
|
Extension "SPV_KHR_8bit_storage"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 9 20
|
||||||
|
Source GLSL 450
|
||||||
|
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "color"
|
||||||
|
Name 14 "Vertices"
|
||||||
|
MemberName 14(Vertices) 0 "vertices"
|
||||||
|
Name 16 ""
|
||||||
|
Name 20 "gl_VertexIndex"
|
||||||
|
Decorate 9(color) Location 0
|
||||||
|
Decorate 13 ArrayStride 16
|
||||||
|
MemberDecorate 14(Vertices) 0 Offset 0
|
||||||
|
Decorate 14(Vertices) Block
|
||||||
|
Decorate 16 DescriptorSet 0
|
||||||
|
Decorate 16 Binding 0
|
||||||
|
Decorate 20(gl_VertexIndex) BuiltIn VertexIndex
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Output 7(fvec4)
|
||||||
|
9(color): 8(ptr) Variable Output
|
||||||
|
10: TypeInt 8 0
|
||||||
|
11: TypeInt 32 0
|
||||||
|
12: 11(int) Constant 512
|
||||||
|
13: TypeArray 10(int8_t) 12
|
||||||
|
14(Vertices): TypeStruct 13
|
||||||
|
15: TypePointer Uniform 14(Vertices)
|
||||||
|
16: 15(ptr) Variable Uniform
|
||||||
|
17: TypeInt 32 1
|
||||||
|
18: 17(int) Constant 0
|
||||||
|
19: TypePointer Input 17(int)
|
||||||
|
20(gl_VertexIndex): 19(ptr) Variable Input
|
||||||
|
22: TypePointer Uniform 10(int8_t)
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
21: 17(int) Load 20(gl_VertexIndex)
|
||||||
|
23: 22(ptr) AccessChain 16 18 21
|
||||||
|
24: 10(int8_t) Load 23
|
||||||
|
25: 11(int) UConvert 24
|
||||||
|
26: 17(int) Bitcast 25
|
||||||
|
27: 6(float) ConvertSToF 26
|
||||||
|
28: 7(fvec4) CompositeConstruct 27 27 27 27
|
||||||
|
Store 9(color) 28
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
@ -4,7 +4,6 @@ spv.8bitstorage-int.frag
|
|||||||
// Id's are bound by 171
|
// Id's are bound by 171
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability CapabilityStorageBuffer8BitAccess
|
|
||||||
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||||
Extension "SPV_KHR_8bit_storage"
|
Extension "SPV_KHR_8bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
56
Test/baseResults/spv.8bitstorage-ssbo.vert.out
Normal file
56
Test/baseResults/spv.8bitstorage-ssbo.vert.out
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
spv.8bitstorage-ssbo.vert
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 28
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||||
|
Extension "SPV_KHR_8bit_storage"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 9 18
|
||||||
|
Source GLSL 450
|
||||||
|
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "color"
|
||||||
|
Name 12 "Vertices"
|
||||||
|
MemberName 12(Vertices) 0 "vertices"
|
||||||
|
Name 14 ""
|
||||||
|
Name 18 "gl_VertexIndex"
|
||||||
|
Decorate 9(color) Location 0
|
||||||
|
Decorate 11 ArrayStride 1
|
||||||
|
MemberDecorate 12(Vertices) 0 NonWritable
|
||||||
|
MemberDecorate 12(Vertices) 0 Offset 0
|
||||||
|
Decorate 12(Vertices) BufferBlock
|
||||||
|
Decorate 14 DescriptorSet 0
|
||||||
|
Decorate 14 Binding 0
|
||||||
|
Decorate 18(gl_VertexIndex) BuiltIn VertexIndex
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Output 7(fvec4)
|
||||||
|
9(color): 8(ptr) Variable Output
|
||||||
|
10: TypeInt 8 0
|
||||||
|
11: TypeRuntimeArray 10(int8_t)
|
||||||
|
12(Vertices): TypeStruct 11
|
||||||
|
13: TypePointer Uniform 12(Vertices)
|
||||||
|
14: 13(ptr) Variable Uniform
|
||||||
|
15: TypeInt 32 1
|
||||||
|
16: 15(int) Constant 0
|
||||||
|
17: TypePointer Input 15(int)
|
||||||
|
18(gl_VertexIndex): 17(ptr) Variable Input
|
||||||
|
20: TypePointer Uniform 10(int8_t)
|
||||||
|
23: TypeInt 32 0
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
19: 15(int) Load 18(gl_VertexIndex)
|
||||||
|
21: 20(ptr) AccessChain 14 16 19
|
||||||
|
22: 10(int8_t) Load 21
|
||||||
|
24: 23(int) UConvert 22
|
||||||
|
25: 15(int) Bitcast 24
|
||||||
|
26: 6(float) ConvertSToF 25
|
||||||
|
27: 7(fvec4) CompositeConstruct 26 26 26 26
|
||||||
|
Store 9(color) 27
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
56
Test/baseResults/spv.8bitstorage-ubo.vert.out
Normal file
56
Test/baseResults/spv.8bitstorage-ubo.vert.out
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
spv.8bitstorage-ubo.vert
|
||||||
|
// Module Version 10000
|
||||||
|
// Generated by (magic number): 80007
|
||||||
|
// Id's are bound by 29
|
||||||
|
|
||||||
|
Capability Shader
|
||||||
|
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||||
|
Extension "SPV_KHR_8bit_storage"
|
||||||
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
MemoryModel Logical GLSL450
|
||||||
|
EntryPoint Vertex 4 "main" 9 20
|
||||||
|
Source GLSL 450
|
||||||
|
SourceExtension "GL_EXT_shader_8bit_storage"
|
||||||
|
Name 4 "main"
|
||||||
|
Name 9 "color"
|
||||||
|
Name 14 "Vertices"
|
||||||
|
MemberName 14(Vertices) 0 "vertices"
|
||||||
|
Name 16 ""
|
||||||
|
Name 20 "gl_VertexIndex"
|
||||||
|
Decorate 9(color) Location 0
|
||||||
|
Decorate 13 ArrayStride 16
|
||||||
|
MemberDecorate 14(Vertices) 0 Offset 0
|
||||||
|
Decorate 14(Vertices) Block
|
||||||
|
Decorate 16 DescriptorSet 0
|
||||||
|
Decorate 16 Binding 0
|
||||||
|
Decorate 20(gl_VertexIndex) BuiltIn VertexIndex
|
||||||
|
2: TypeVoid
|
||||||
|
3: TypeFunction 2
|
||||||
|
6: TypeFloat 32
|
||||||
|
7: TypeVector 6(float) 4
|
||||||
|
8: TypePointer Output 7(fvec4)
|
||||||
|
9(color): 8(ptr) Variable Output
|
||||||
|
10: TypeInt 8 0
|
||||||
|
11: TypeInt 32 0
|
||||||
|
12: 11(int) Constant 512
|
||||||
|
13: TypeArray 10(int8_t) 12
|
||||||
|
14(Vertices): TypeStruct 13
|
||||||
|
15: TypePointer Uniform 14(Vertices)
|
||||||
|
16: 15(ptr) Variable Uniform
|
||||||
|
17: TypeInt 32 1
|
||||||
|
18: 17(int) Constant 0
|
||||||
|
19: TypePointer Input 17(int)
|
||||||
|
20(gl_VertexIndex): 19(ptr) Variable Input
|
||||||
|
22: TypePointer Uniform 10(int8_t)
|
||||||
|
4(main): 2 Function None 3
|
||||||
|
5: Label
|
||||||
|
21: 17(int) Load 20(gl_VertexIndex)
|
||||||
|
23: 22(ptr) AccessChain 16 18 21
|
||||||
|
24: 10(int8_t) Load 23
|
||||||
|
25: 11(int) UConvert 24
|
||||||
|
26: 17(int) Bitcast 25
|
||||||
|
27: 6(float) ConvertSToF 26
|
||||||
|
28: 7(fvec4) CompositeConstruct 27 27 27 27
|
||||||
|
Store 9(color) 28
|
||||||
|
Return
|
||||||
|
FunctionEnd
|
@ -4,7 +4,6 @@ spv.8bitstorage-uint.frag
|
|||||||
// Id's are bound by 173
|
// Id's are bound by 173
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
Capability CapabilityStorageBuffer8BitAccess
|
|
||||||
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
Capability CapabilityUniformAndStorageBuffer8BitAccess
|
||||||
Extension "SPV_KHR_8bit_storage"
|
Extension "SPV_KHR_8bit_storage"
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
|
@ -88,6 +88,7 @@ void main()
|
|||||||
ModuleProcessed "suppress-warnings"
|
ModuleProcessed "suppress-warnings"
|
||||||
ModuleProcessed "hlsl-offsets"
|
ModuleProcessed "hlsl-offsets"
|
||||||
ModuleProcessed "entry-point main"
|
ModuleProcessed "entry-point main"
|
||||||
|
ModuleProcessed "use-storage-buffer"
|
||||||
Decorate 24(inv) Location 0
|
Decorate 24(inv) Location 0
|
||||||
Decorate 52(outv) Location 0
|
Decorate 52(outv) Location 0
|
||||||
MemberDecorate 53(S) 0 Offset 0
|
MemberDecorate 53(S) 0 Offset 0
|
||||||
|
@ -23,7 +23,7 @@ spv.subgroup.geom
|
|||||||
Name 20 "gl_SubgroupInvocationID"
|
Name 20 "gl_SubgroupInvocationID"
|
||||||
Decorate 8 ArrayStride 16
|
Decorate 8 ArrayStride 16
|
||||||
MemberDecorate 9(Output) 0 Offset 0
|
MemberDecorate 9(Output) 0 Offset 0
|
||||||
Decorate 9(Output) BufferBlock
|
Decorate 9(Output) Block
|
||||||
Decorate 11 DescriptorSet 0
|
Decorate 11 DescriptorSet 0
|
||||||
Decorate 11 Binding 0
|
Decorate 11 Binding 0
|
||||||
Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
||||||
@ -39,8 +39,8 @@ spv.subgroup.geom
|
|||||||
7: TypeVector 6(int) 4
|
7: TypeVector 6(int) 4
|
||||||
8: TypeRuntimeArray 7(ivec4)
|
8: TypeRuntimeArray 7(ivec4)
|
||||||
9(Output): TypeStruct 8
|
9(Output): TypeStruct 8
|
||||||
10: TypePointer Uniform 9(Output)
|
10: TypePointer StorageBuffer 9(Output)
|
||||||
11: 10(ptr) Variable Uniform
|
11: 10(ptr) Variable StorageBuffer
|
||||||
12: TypeInt 32 1
|
12: TypeInt 32 1
|
||||||
13: 12(int) Constant 0
|
13: 12(int) Constant 0
|
||||||
14: TypePointer Input 12(int)
|
14: TypePointer Input 12(int)
|
||||||
@ -49,7 +49,7 @@ spv.subgroup.geom
|
|||||||
18(gl_SubgroupSize): 17(ptr) Variable Input
|
18(gl_SubgroupSize): 17(ptr) Variable Input
|
||||||
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
||||||
22: 6(int) Constant 0
|
22: 6(int) Constant 0
|
||||||
24: TypePointer Uniform 7(ivec4)
|
24: TypePointer StorageBuffer 7(ivec4)
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
16: 12(int) Load 15(gl_PrimitiveIDIn)
|
16: 12(int) Load 15(gl_PrimitiveIDIn)
|
||||||
|
@ -20,7 +20,7 @@ spv.subgroup.tesc
|
|||||||
Name 20 "gl_SubgroupInvocationID"
|
Name 20 "gl_SubgroupInvocationID"
|
||||||
Decorate 8 ArrayStride 16
|
Decorate 8 ArrayStride 16
|
||||||
MemberDecorate 9(Output) 0 Offset 0
|
MemberDecorate 9(Output) 0 Offset 0
|
||||||
Decorate 9(Output) BufferBlock
|
Decorate 9(Output) Block
|
||||||
Decorate 11 DescriptorSet 0
|
Decorate 11 DescriptorSet 0
|
||||||
Decorate 11 Binding 0
|
Decorate 11 Binding 0
|
||||||
Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
|
Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||||
@ -36,8 +36,8 @@ spv.subgroup.tesc
|
|||||||
7: TypeVector 6(int) 4
|
7: TypeVector 6(int) 4
|
||||||
8: TypeRuntimeArray 7(ivec4)
|
8: TypeRuntimeArray 7(ivec4)
|
||||||
9(Output): TypeStruct 8
|
9(Output): TypeStruct 8
|
||||||
10: TypePointer Uniform 9(Output)
|
10: TypePointer StorageBuffer 9(Output)
|
||||||
11: 10(ptr) Variable Uniform
|
11: 10(ptr) Variable StorageBuffer
|
||||||
12: TypeInt 32 1
|
12: TypeInt 32 1
|
||||||
13: 12(int) Constant 0
|
13: 12(int) Constant 0
|
||||||
14: TypePointer Input 12(int)
|
14: TypePointer Input 12(int)
|
||||||
@ -46,7 +46,7 @@ spv.subgroup.tesc
|
|||||||
18(gl_SubgroupSize): 17(ptr) Variable Input
|
18(gl_SubgroupSize): 17(ptr) Variable Input
|
||||||
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
||||||
22: 6(int) Constant 0
|
22: 6(int) Constant 0
|
||||||
24: TypePointer Uniform 7(ivec4)
|
24: TypePointer StorageBuffer 7(ivec4)
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
16: 12(int) Load 15(gl_PrimitiveID)
|
16: 12(int) Load 15(gl_PrimitiveID)
|
||||||
|
@ -22,7 +22,7 @@ spv.subgroup.tese
|
|||||||
Name 20 "gl_SubgroupInvocationID"
|
Name 20 "gl_SubgroupInvocationID"
|
||||||
Decorate 8 ArrayStride 16
|
Decorate 8 ArrayStride 16
|
||||||
MemberDecorate 9(Output) 0 Offset 0
|
MemberDecorate 9(Output) 0 Offset 0
|
||||||
Decorate 9(Output) BufferBlock
|
Decorate 9(Output) Block
|
||||||
Decorate 11 DescriptorSet 0
|
Decorate 11 DescriptorSet 0
|
||||||
Decorate 11 Binding 0
|
Decorate 11 Binding 0
|
||||||
Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
|
Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||||
@ -38,8 +38,8 @@ spv.subgroup.tese
|
|||||||
7: TypeVector 6(int) 4
|
7: TypeVector 6(int) 4
|
||||||
8: TypeRuntimeArray 7(ivec4)
|
8: TypeRuntimeArray 7(ivec4)
|
||||||
9(Output): TypeStruct 8
|
9(Output): TypeStruct 8
|
||||||
10: TypePointer Uniform 9(Output)
|
10: TypePointer StorageBuffer 9(Output)
|
||||||
11: 10(ptr) Variable Uniform
|
11: 10(ptr) Variable StorageBuffer
|
||||||
12: TypeInt 32 1
|
12: TypeInt 32 1
|
||||||
13: 12(int) Constant 0
|
13: 12(int) Constant 0
|
||||||
14: TypePointer Input 12(int)
|
14: TypePointer Input 12(int)
|
||||||
@ -48,7 +48,7 @@ spv.subgroup.tese
|
|||||||
18(gl_SubgroupSize): 17(ptr) Variable Input
|
18(gl_SubgroupSize): 17(ptr) Variable Input
|
||||||
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
||||||
22: 6(int) Constant 0
|
22: 6(int) Constant 0
|
||||||
24: TypePointer Uniform 7(ivec4)
|
24: TypePointer StorageBuffer 7(ivec4)
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
16: 12(int) Load 15(gl_PrimitiveID)
|
16: 12(int) Load 15(gl_PrimitiveID)
|
||||||
|
@ -19,7 +19,7 @@ spv.subgroup.vert
|
|||||||
Name 20 "gl_SubgroupInvocationID"
|
Name 20 "gl_SubgroupInvocationID"
|
||||||
Decorate 8 ArrayStride 16
|
Decorate 8 ArrayStride 16
|
||||||
MemberDecorate 9(Output) 0 Offset 0
|
MemberDecorate 9(Output) 0 Offset 0
|
||||||
Decorate 9(Output) BufferBlock
|
Decorate 9(Output) Block
|
||||||
Decorate 11 DescriptorSet 0
|
Decorate 11 DescriptorSet 0
|
||||||
Decorate 11 Binding 0
|
Decorate 11 Binding 0
|
||||||
Decorate 15(gl_VertexIndex) BuiltIn VertexIndex
|
Decorate 15(gl_VertexIndex) BuiltIn VertexIndex
|
||||||
@ -35,8 +35,8 @@ spv.subgroup.vert
|
|||||||
7: TypeVector 6(int) 4
|
7: TypeVector 6(int) 4
|
||||||
8: TypeRuntimeArray 7(ivec4)
|
8: TypeRuntimeArray 7(ivec4)
|
||||||
9(Output): TypeStruct 8
|
9(Output): TypeStruct 8
|
||||||
10: TypePointer Uniform 9(Output)
|
10: TypePointer StorageBuffer 9(Output)
|
||||||
11: 10(ptr) Variable Uniform
|
11: 10(ptr) Variable StorageBuffer
|
||||||
12: TypeInt 32 1
|
12: TypeInt 32 1
|
||||||
13: 12(int) Constant 0
|
13: 12(int) Constant 0
|
||||||
14: TypePointer Input 12(int)
|
14: TypePointer Input 12(int)
|
||||||
@ -45,7 +45,7 @@ spv.subgroup.vert
|
|||||||
18(gl_SubgroupSize): 17(ptr) Variable Input
|
18(gl_SubgroupSize): 17(ptr) Variable Input
|
||||||
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
20(gl_SubgroupInvocationID): 17(ptr) Variable Input
|
||||||
22: 6(int) Constant 0
|
22: 6(int) Constant 0
|
||||||
24: TypePointer Uniform 7(ivec4)
|
24: TypePointer StorageBuffer 7(ivec4)
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
16: 12(int) Load 15(gl_VertexIndex)
|
16: 12(int) Load 15(gl_VertexIndex)
|
||||||
|
@ -36,7 +36,7 @@ spv.subgroupArithmetic.comp
|
|||||||
MemberDecorate 24(Buffers) 1 Offset 16
|
MemberDecorate 24(Buffers) 1 Offset 16
|
||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 2084 BuiltIn WorkgroupSize
|
Decorate 2084 BuiltIn WorkgroupSize
|
||||||
@ -57,29 +57,29 @@ spv.subgroupArithmetic.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 0
|
29: 19(int) Constant 0
|
||||||
30: 6(int) Constant 0
|
30: 6(int) Constant 0
|
||||||
31: TypePointer Uniform 17(float)
|
31: TypePointer StorageBuffer 17(float)
|
||||||
34: 6(int) Constant 3
|
34: 6(int) Constant 3
|
||||||
38: 19(int) Constant 1
|
38: 19(int) Constant 1
|
||||||
39: TypeVector 17(float) 2
|
39: TypeVector 17(float) 2
|
||||||
40: TypePointer Uniform 18(fvec4)
|
40: TypePointer StorageBuffer 18(fvec4)
|
||||||
49: 19(int) Constant 2
|
49: 19(int) Constant 2
|
||||||
50: TypeVector 17(float) 3
|
50: TypeVector 17(float) 3
|
||||||
59: 19(int) Constant 3
|
59: 19(int) Constant 3
|
||||||
65: TypePointer Uniform 19(int)
|
65: TypePointer StorageBuffer 19(int)
|
||||||
71: TypeVector 19(int) 2
|
71: TypeVector 19(int) 2
|
||||||
72: TypePointer Uniform 20(ivec4)
|
72: TypePointer StorageBuffer 20(ivec4)
|
||||||
81: TypeVector 19(int) 3
|
81: TypeVector 19(int) 3
|
||||||
95: TypePointer Uniform 6(int)
|
95: TypePointer StorageBuffer 6(int)
|
||||||
101: TypeVector 6(int) 2
|
101: TypeVector 6(int) 2
|
||||||
102: TypePointer Uniform 21(ivec4)
|
102: TypePointer StorageBuffer 21(ivec4)
|
||||||
111: TypeVector 6(int) 3
|
111: TypeVector 6(int) 3
|
||||||
125: TypePointer Uniform 22(float64_t)
|
125: TypePointer StorageBuffer 22(float64_t)
|
||||||
131: TypeVector 22(float64_t) 2
|
131: TypeVector 22(float64_t) 2
|
||||||
132: TypePointer Uniform 23(f64vec4)
|
132: TypePointer StorageBuffer 23(f64vec4)
|
||||||
141: TypeVector 22(float64_t) 3
|
141: TypeVector 22(float64_t) 3
|
||||||
521: TypeBool
|
521: TypeBool
|
||||||
530: 71(ivec2) ConstantComposite 29 29
|
530: 71(ivec2) ConstantComposite 29 29
|
||||||
|
@ -48,7 +48,7 @@ spv.subgroupBallot.comp
|
|||||||
MemberDecorate 46(Buffers) 1 Offset 16
|
MemberDecorate 46(Buffers) 1 Offset 16
|
||||||
MemberDecorate 46(Buffers) 2 Offset 32
|
MemberDecorate 46(Buffers) 2 Offset 32
|
||||||
MemberDecorate 46(Buffers) 3 Offset 64
|
MemberDecorate 46(Buffers) 3 Offset 64
|
||||||
Decorate 46(Buffers) BufferBlock
|
Decorate 46(Buffers) Block
|
||||||
Decorate 49(data) DescriptorSet 0
|
Decorate 49(data) DescriptorSet 0
|
||||||
Decorate 49(data) Binding 0
|
Decorate 49(data) Binding 0
|
||||||
Decorate 416 BuiltIn WorkgroupSize
|
Decorate 416 BuiltIn WorkgroupSize
|
||||||
@ -79,31 +79,31 @@ spv.subgroupBallot.comp
|
|||||||
45: TypeVector 44(float64_t) 4
|
45: TypeVector 44(float64_t) 4
|
||||||
46(Buffers): TypeStruct 41(fvec4) 43(ivec4) 17(ivec4) 45(f64vec4)
|
46(Buffers): TypeStruct 41(fvec4) 43(ivec4) 17(ivec4) 45(f64vec4)
|
||||||
47: TypeArray 46(Buffers) 15
|
47: TypeArray 46(Buffers) 15
|
||||||
48: TypePointer Uniform 47
|
48: TypePointer StorageBuffer 47
|
||||||
49(data): 48(ptr) Variable Uniform
|
49(data): 48(ptr) Variable StorageBuffer
|
||||||
51: 42(int) Constant 2
|
51: 42(int) Constant 2
|
||||||
54: 6(int) Constant 0
|
54: 6(int) Constant 0
|
||||||
55: TypePointer Uniform 6(int)
|
55: TypePointer StorageBuffer 6(int)
|
||||||
60: 42(int) Constant 1
|
60: 42(int) Constant 1
|
||||||
61: 42(int) Constant 0
|
61: 42(int) Constant 0
|
||||||
64: 6(int) Constant 1
|
64: 6(int) Constant 1
|
||||||
72: 6(int) Constant 2
|
72: 6(int) Constant 2
|
||||||
83: TypeVector 36(bool) 4
|
83: TypeVector 36(bool) 4
|
||||||
88: TypePointer Uniform 17(ivec4)
|
88: TypePointer StorageBuffer 17(ivec4)
|
||||||
96: TypePointer Uniform 40(float)
|
96: TypePointer StorageBuffer 40(float)
|
||||||
103: TypeVector 40(float) 2
|
103: TypeVector 40(float) 2
|
||||||
104: TypePointer Uniform 41(fvec4)
|
104: TypePointer StorageBuffer 41(fvec4)
|
||||||
114: TypeVector 40(float) 3
|
114: TypeVector 40(float) 3
|
||||||
124: 42(int) Constant 3
|
124: 42(int) Constant 3
|
||||||
131: TypePointer Uniform 42(int)
|
131: TypePointer StorageBuffer 42(int)
|
||||||
138: TypeVector 42(int) 2
|
138: TypeVector 42(int) 2
|
||||||
139: TypePointer Uniform 43(ivec4)
|
139: TypePointer StorageBuffer 43(ivec4)
|
||||||
149: TypeVector 42(int) 3
|
149: TypeVector 42(int) 3
|
||||||
171: TypeVector 6(int) 2
|
171: TypeVector 6(int) 2
|
||||||
181: TypeVector 6(int) 3
|
181: TypeVector 6(int) 3
|
||||||
197: TypePointer Uniform 44(float64_t)
|
197: TypePointer StorageBuffer 44(float64_t)
|
||||||
204: TypeVector 44(float64_t) 2
|
204: TypeVector 44(float64_t) 2
|
||||||
205: TypePointer Uniform 45(f64vec4)
|
205: TypePointer StorageBuffer 45(f64vec4)
|
||||||
215: TypeVector 44(float64_t) 3
|
215: TypeVector 44(float64_t) 3
|
||||||
242: 138(ivec2) ConstantComposite 61 61
|
242: 138(ivec2) ConstantComposite 61 61
|
||||||
243: TypeVector 36(bool) 2
|
243: TypeVector 36(bool) 2
|
||||||
|
@ -21,7 +21,7 @@ spv.subgroupBasic.comp
|
|||||||
Name 25 "gl_SubgroupID"
|
Name 25 "gl_SubgroupID"
|
||||||
Decorate 7 ArrayStride 4
|
Decorate 7 ArrayStride 4
|
||||||
MemberDecorate 8(Buffer) 0 Offset 0
|
MemberDecorate 8(Buffer) 0 Offset 0
|
||||||
Decorate 8(Buffer) BufferBlock
|
Decorate 8(Buffer) Block
|
||||||
Decorate 10(data) DescriptorSet 0
|
Decorate 10(data) DescriptorSet 0
|
||||||
Decorate 10(data) Binding 0
|
Decorate 10(data) Binding 0
|
||||||
Decorate 14(gl_SubgroupSize) RelaxedPrecision
|
Decorate 14(gl_SubgroupSize) RelaxedPrecision
|
||||||
@ -38,14 +38,14 @@ spv.subgroupBasic.comp
|
|||||||
6: TypeInt 32 1
|
6: TypeInt 32 1
|
||||||
7: TypeRuntimeArray 6(int)
|
7: TypeRuntimeArray 6(int)
|
||||||
8(Buffer): TypeStruct 7
|
8(Buffer): TypeStruct 7
|
||||||
9: TypePointer Uniform 8(Buffer)
|
9: TypePointer StorageBuffer 8(Buffer)
|
||||||
10(data): 9(ptr) Variable Uniform
|
10(data): 9(ptr) Variable StorageBuffer
|
||||||
11: 6(int) Constant 0
|
11: 6(int) Constant 0
|
||||||
12: TypeInt 32 0
|
12: TypeInt 32 0
|
||||||
13: TypePointer Input 12(int)
|
13: TypePointer Input 12(int)
|
||||||
14(gl_SubgroupSize): 13(ptr) Variable Input
|
14(gl_SubgroupSize): 13(ptr) Variable Input
|
||||||
16: 6(int) Constant 1
|
16: 6(int) Constant 1
|
||||||
17: TypePointer Uniform 6(int)
|
17: TypePointer StorageBuffer 6(int)
|
||||||
19(gl_SubgroupInvocationID): 13(ptr) Variable Input
|
19(gl_SubgroupInvocationID): 13(ptr) Variable Input
|
||||||
22(gl_NumSubgroups): 13(ptr) Variable Input
|
22(gl_NumSubgroups): 13(ptr) Variable Input
|
||||||
25(gl_SubgroupID): 13(ptr) Variable Input
|
25(gl_SubgroupID): 13(ptr) Variable Input
|
||||||
|
@ -36,7 +36,7 @@ spv.subgroupClustered.comp
|
|||||||
MemberDecorate 24(Buffers) 1 Offset 16
|
MemberDecorate 24(Buffers) 1 Offset 16
|
||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 736 BuiltIn WorkgroupSize
|
Decorate 736 BuiltIn WorkgroupSize
|
||||||
@ -57,30 +57,30 @@ spv.subgroupClustered.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 0
|
29: 19(int) Constant 0
|
||||||
30: 6(int) Constant 0
|
30: 6(int) Constant 0
|
||||||
31: TypePointer Uniform 17(float)
|
31: TypePointer StorageBuffer 17(float)
|
||||||
34: 6(int) Constant 1
|
34: 6(int) Constant 1
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
39: 19(int) Constant 1
|
39: 19(int) Constant 1
|
||||||
40: TypeVector 17(float) 2
|
40: TypeVector 17(float) 2
|
||||||
41: TypePointer Uniform 18(fvec4)
|
41: TypePointer StorageBuffer 18(fvec4)
|
||||||
50: 19(int) Constant 2
|
50: 19(int) Constant 2
|
||||||
51: TypeVector 17(float) 3
|
51: TypeVector 17(float) 3
|
||||||
60: 19(int) Constant 3
|
60: 19(int) Constant 3
|
||||||
66: TypePointer Uniform 19(int)
|
66: TypePointer StorageBuffer 19(int)
|
||||||
72: TypeVector 19(int) 2
|
72: TypeVector 19(int) 2
|
||||||
73: TypePointer Uniform 20(ivec4)
|
73: TypePointer StorageBuffer 20(ivec4)
|
||||||
82: TypeVector 19(int) 3
|
82: TypeVector 19(int) 3
|
||||||
96: TypePointer Uniform 6(int)
|
96: TypePointer StorageBuffer 6(int)
|
||||||
102: TypeVector 6(int) 2
|
102: TypeVector 6(int) 2
|
||||||
103: TypePointer Uniform 21(ivec4)
|
103: TypePointer StorageBuffer 21(ivec4)
|
||||||
112: TypeVector 6(int) 3
|
112: TypeVector 6(int) 3
|
||||||
126: TypePointer Uniform 22(float64_t)
|
126: TypePointer StorageBuffer 22(float64_t)
|
||||||
132: TypeVector 22(float64_t) 2
|
132: TypeVector 22(float64_t) 2
|
||||||
133: TypePointer Uniform 23(f64vec4)
|
133: TypePointer StorageBuffer 23(f64vec4)
|
||||||
142: TypeVector 22(float64_t) 3
|
142: TypeVector 22(float64_t) 3
|
||||||
522: TypeBool
|
522: TypeBool
|
||||||
531: 72(ivec2) ConstantComposite 29 29
|
531: 72(ivec2) ConstantComposite 29 29
|
||||||
|
@ -42,7 +42,7 @@ error: Opcode GroupNonUniformFAdd requires one of these capabilities: GroupNonUn
|
|||||||
MemberDecorate 28(Buffers) 1 Offset 16
|
MemberDecorate 28(Buffers) 1 Offset 16
|
||||||
MemberDecorate 28(Buffers) 2 Offset 32
|
MemberDecorate 28(Buffers) 2 Offset 32
|
||||||
MemberDecorate 28(Buffers) 3 Offset 64
|
MemberDecorate 28(Buffers) 3 Offset 64
|
||||||
Decorate 28(Buffers) BufferBlock
|
Decorate 28(Buffers) Block
|
||||||
Decorate 31(data) DescriptorSet 0
|
Decorate 31(data) DescriptorSet 0
|
||||||
Decorate 31(data) Binding 0
|
Decorate 31(data) Binding 0
|
||||||
Decorate 2505 BuiltIn WorkgroupSize
|
Decorate 2505 BuiltIn WorkgroupSize
|
||||||
@ -64,28 +64,28 @@ error: Opcode GroupNonUniformFAdd requires one of these capabilities: GroupNonUn
|
|||||||
27: TypeVector 26(float64_t) 4
|
27: TypeVector 26(float64_t) 4
|
||||||
28(Buffers): TypeStruct 23(fvec4) 25(ivec4) 17(ivec4) 27(f64vec4)
|
28(Buffers): TypeStruct 23(fvec4) 25(ivec4) 17(ivec4) 27(f64vec4)
|
||||||
29: TypeArray 28(Buffers) 15
|
29: TypeArray 28(Buffers) 15
|
||||||
30: TypePointer Uniform 29
|
30: TypePointer StorageBuffer 29
|
||||||
31(data): 30(ptr) Variable Uniform
|
31(data): 30(ptr) Variable StorageBuffer
|
||||||
33: 24(int) Constant 2
|
33: 24(int) Constant 2
|
||||||
34: 24(int) Constant 0
|
34: 24(int) Constant 0
|
||||||
35: 6(int) Constant 0
|
35: 6(int) Constant 0
|
||||||
36: TypePointer Uniform 22(float)
|
36: TypePointer StorageBuffer 22(float)
|
||||||
40: TypePointer Uniform 17(ivec4)
|
40: TypePointer StorageBuffer 17(ivec4)
|
||||||
43: TypeVector 22(float) 2
|
43: TypeVector 22(float) 2
|
||||||
44: TypePointer Uniform 23(fvec4)
|
44: TypePointer StorageBuffer 23(fvec4)
|
||||||
51: TypeVector 22(float) 3
|
51: TypeVector 22(float) 3
|
||||||
63: 24(int) Constant 1
|
63: 24(int) Constant 1
|
||||||
64: TypePointer Uniform 24(int)
|
64: TypePointer StorageBuffer 24(int)
|
||||||
70: TypeVector 24(int) 2
|
70: TypeVector 24(int) 2
|
||||||
71: TypePointer Uniform 25(ivec4)
|
71: TypePointer StorageBuffer 25(ivec4)
|
||||||
78: TypeVector 24(int) 3
|
78: TypeVector 24(int) 3
|
||||||
90: TypePointer Uniform 6(int)
|
90: TypePointer StorageBuffer 6(int)
|
||||||
96: TypeVector 6(int) 2
|
96: TypeVector 6(int) 2
|
||||||
103: TypeVector 6(int) 3
|
103: TypeVector 6(int) 3
|
||||||
115: 24(int) Constant 3
|
115: 24(int) Constant 3
|
||||||
116: TypePointer Uniform 26(float64_t)
|
116: TypePointer StorageBuffer 26(float64_t)
|
||||||
122: TypeVector 26(float64_t) 2
|
122: TypeVector 26(float64_t) 2
|
||||||
123: TypePointer Uniform 27(f64vec4)
|
123: TypePointer StorageBuffer 27(f64vec4)
|
||||||
130: TypeVector 26(float64_t) 3
|
130: TypeVector 26(float64_t) 3
|
||||||
144: TypeBool
|
144: TypeBool
|
||||||
152: TypeVector 144(bool) 2
|
152: TypeVector 144(bool) 2
|
||||||
|
@ -36,7 +36,7 @@ spv.subgroupQuad.comp
|
|||||||
MemberDecorate 24(Buffers) 1 Offset 16
|
MemberDecorate 24(Buffers) 1 Offset 16
|
||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 615 BuiltIn WorkgroupSize
|
Decorate 615 BuiltIn WorkgroupSize
|
||||||
@ -57,30 +57,30 @@ spv.subgroupQuad.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 0
|
29: 19(int) Constant 0
|
||||||
30: 6(int) Constant 0
|
30: 6(int) Constant 0
|
||||||
31: TypePointer Uniform 17(float)
|
31: TypePointer StorageBuffer 17(float)
|
||||||
34: 6(int) Constant 1
|
34: 6(int) Constant 1
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
39: 19(int) Constant 1
|
39: 19(int) Constant 1
|
||||||
40: TypeVector 17(float) 2
|
40: TypeVector 17(float) 2
|
||||||
41: TypePointer Uniform 18(fvec4)
|
41: TypePointer StorageBuffer 18(fvec4)
|
||||||
50: 19(int) Constant 2
|
50: 19(int) Constant 2
|
||||||
51: TypeVector 17(float) 3
|
51: TypeVector 17(float) 3
|
||||||
60: 19(int) Constant 3
|
60: 19(int) Constant 3
|
||||||
66: TypePointer Uniform 19(int)
|
66: TypePointer StorageBuffer 19(int)
|
||||||
72: TypeVector 19(int) 2
|
72: TypeVector 19(int) 2
|
||||||
73: TypePointer Uniform 20(ivec4)
|
73: TypePointer StorageBuffer 20(ivec4)
|
||||||
82: TypeVector 19(int) 3
|
82: TypeVector 19(int) 3
|
||||||
96: TypePointer Uniform 6(int)
|
96: TypePointer StorageBuffer 6(int)
|
||||||
102: TypeVector 6(int) 2
|
102: TypeVector 6(int) 2
|
||||||
103: TypePointer Uniform 21(ivec4)
|
103: TypePointer StorageBuffer 21(ivec4)
|
||||||
112: TypeVector 6(int) 3
|
112: TypeVector 6(int) 3
|
||||||
126: TypePointer Uniform 22(float64_t)
|
126: TypePointer StorageBuffer 22(float64_t)
|
||||||
132: TypeVector 22(float64_t) 2
|
132: TypeVector 22(float64_t) 2
|
||||||
133: TypePointer Uniform 23(f64vec4)
|
133: TypePointer StorageBuffer 23(f64vec4)
|
||||||
142: TypeVector 22(float64_t) 3
|
142: TypeVector 22(float64_t) 3
|
||||||
158: TypeBool
|
158: TypeBool
|
||||||
167: 72(ivec2) ConstantComposite 29 29
|
167: 72(ivec2) ConstantComposite 29 29
|
||||||
|
@ -36,7 +36,7 @@ spv.subgroupShuffle.comp
|
|||||||
MemberDecorate 24(Buffers) 1 Offset 16
|
MemberDecorate 24(Buffers) 1 Offset 16
|
||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 378 BuiltIn WorkgroupSize
|
Decorate 378 BuiltIn WorkgroupSize
|
||||||
@ -57,29 +57,29 @@ spv.subgroupShuffle.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 0
|
29: 19(int) Constant 0
|
||||||
30: 6(int) Constant 0
|
30: 6(int) Constant 0
|
||||||
31: TypePointer Uniform 17(float)
|
31: TypePointer StorageBuffer 17(float)
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
39: 19(int) Constant 1
|
39: 19(int) Constant 1
|
||||||
40: TypeVector 17(float) 2
|
40: TypeVector 17(float) 2
|
||||||
41: TypePointer Uniform 18(fvec4)
|
41: TypePointer StorageBuffer 18(fvec4)
|
||||||
51: 19(int) Constant 2
|
51: 19(int) Constant 2
|
||||||
52: TypeVector 17(float) 3
|
52: TypeVector 17(float) 3
|
||||||
62: 19(int) Constant 3
|
62: 19(int) Constant 3
|
||||||
69: TypePointer Uniform 19(int)
|
69: TypePointer StorageBuffer 19(int)
|
||||||
76: TypeVector 19(int) 2
|
76: TypeVector 19(int) 2
|
||||||
77: TypePointer Uniform 20(ivec4)
|
77: TypePointer StorageBuffer 20(ivec4)
|
||||||
87: TypeVector 19(int) 3
|
87: TypeVector 19(int) 3
|
||||||
103: TypePointer Uniform 6(int)
|
103: TypePointer StorageBuffer 6(int)
|
||||||
110: TypeVector 6(int) 2
|
110: TypeVector 6(int) 2
|
||||||
111: TypePointer Uniform 21(ivec4)
|
111: TypePointer StorageBuffer 21(ivec4)
|
||||||
121: TypeVector 6(int) 3
|
121: TypeVector 6(int) 3
|
||||||
137: TypePointer Uniform 22(float64_t)
|
137: TypePointer StorageBuffer 22(float64_t)
|
||||||
144: TypeVector 22(float64_t) 2
|
144: TypeVector 22(float64_t) 2
|
||||||
145: TypePointer Uniform 23(f64vec4)
|
145: TypePointer StorageBuffer 23(f64vec4)
|
||||||
155: TypeVector 22(float64_t) 3
|
155: TypeVector 22(float64_t) 3
|
||||||
173: TypeBool
|
173: TypeBool
|
||||||
183: 76(ivec2) ConstantComposite 29 29
|
183: 76(ivec2) ConstantComposite 29 29
|
||||||
|
@ -36,7 +36,7 @@ spv.subgroupShuffleRelative.comp
|
|||||||
MemberDecorate 24(Buffers) 1 Offset 16
|
MemberDecorate 24(Buffers) 1 Offset 16
|
||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 378 BuiltIn WorkgroupSize
|
Decorate 378 BuiltIn WorkgroupSize
|
||||||
@ -57,29 +57,29 @@ spv.subgroupShuffleRelative.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 0
|
29: 19(int) Constant 0
|
||||||
30: 6(int) Constant 0
|
30: 6(int) Constant 0
|
||||||
31: TypePointer Uniform 17(float)
|
31: TypePointer StorageBuffer 17(float)
|
||||||
35: 6(int) Constant 3
|
35: 6(int) Constant 3
|
||||||
39: 19(int) Constant 1
|
39: 19(int) Constant 1
|
||||||
40: TypeVector 17(float) 2
|
40: TypeVector 17(float) 2
|
||||||
41: TypePointer Uniform 18(fvec4)
|
41: TypePointer StorageBuffer 18(fvec4)
|
||||||
51: 19(int) Constant 2
|
51: 19(int) Constant 2
|
||||||
52: TypeVector 17(float) 3
|
52: TypeVector 17(float) 3
|
||||||
62: 19(int) Constant 3
|
62: 19(int) Constant 3
|
||||||
69: TypePointer Uniform 19(int)
|
69: TypePointer StorageBuffer 19(int)
|
||||||
76: TypeVector 19(int) 2
|
76: TypeVector 19(int) 2
|
||||||
77: TypePointer Uniform 20(ivec4)
|
77: TypePointer StorageBuffer 20(ivec4)
|
||||||
87: TypeVector 19(int) 3
|
87: TypeVector 19(int) 3
|
||||||
103: TypePointer Uniform 6(int)
|
103: TypePointer StorageBuffer 6(int)
|
||||||
110: TypeVector 6(int) 2
|
110: TypeVector 6(int) 2
|
||||||
111: TypePointer Uniform 21(ivec4)
|
111: TypePointer StorageBuffer 21(ivec4)
|
||||||
121: TypeVector 6(int) 3
|
121: TypeVector 6(int) 3
|
||||||
137: TypePointer Uniform 22(float64_t)
|
137: TypePointer StorageBuffer 22(float64_t)
|
||||||
144: TypeVector 22(float64_t) 2
|
144: TypeVector 22(float64_t) 2
|
||||||
145: TypePointer Uniform 23(f64vec4)
|
145: TypePointer StorageBuffer 23(f64vec4)
|
||||||
155: TypeVector 22(float64_t) 3
|
155: TypeVector 22(float64_t) 3
|
||||||
173: TypeBool
|
173: TypeBool
|
||||||
183: 76(ivec2) ConstantComposite 29 29
|
183: 76(ivec2) ConstantComposite 29 29
|
||||||
|
@ -38,7 +38,7 @@ spv.subgroupVote.comp
|
|||||||
MemberDecorate 24(Buffers) 2 Offset 32
|
MemberDecorate 24(Buffers) 2 Offset 32
|
||||||
MemberDecorate 24(Buffers) 3 Offset 64
|
MemberDecorate 24(Buffers) 3 Offset 64
|
||||||
MemberDecorate 24(Buffers) 4 Offset 96
|
MemberDecorate 24(Buffers) 4 Offset 96
|
||||||
Decorate 24(Buffers) BufferBlock
|
Decorate 24(Buffers) Block
|
||||||
Decorate 27(data) DescriptorSet 0
|
Decorate 27(data) DescriptorSet 0
|
||||||
Decorate 27(data) Binding 0
|
Decorate 27(data) Binding 0
|
||||||
Decorate 215 BuiltIn WorkgroupSize
|
Decorate 215 BuiltIn WorkgroupSize
|
||||||
@ -59,31 +59,31 @@ spv.subgroupVote.comp
|
|||||||
23: TypeVector 22(float64_t) 4
|
23: TypeVector 22(float64_t) 4
|
||||||
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 19(int)
|
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4) 19(int)
|
||||||
25: TypeArray 24(Buffers) 15
|
25: TypeArray 24(Buffers) 15
|
||||||
26: TypePointer Uniform 25
|
26: TypePointer StorageBuffer 25
|
||||||
27(data): 26(ptr) Variable Uniform
|
27(data): 26(ptr) Variable StorageBuffer
|
||||||
29: 19(int) Constant 4
|
29: 19(int) Constant 4
|
||||||
30: TypePointer Uniform 19(int)
|
30: TypePointer StorageBuffer 19(int)
|
||||||
33: 19(int) Constant 0
|
33: 19(int) Constant 0
|
||||||
34: TypeBool
|
34: TypeBool
|
||||||
36: 6(int) Constant 3
|
36: 6(int) Constant 3
|
||||||
41: 6(int) Constant 0
|
41: 6(int) Constant 0
|
||||||
42: TypePointer Uniform 17(float)
|
42: TypePointer StorageBuffer 17(float)
|
||||||
46: 19(int) Constant 1
|
46: 19(int) Constant 1
|
||||||
50: TypeVector 17(float) 2
|
50: TypeVector 17(float) 2
|
||||||
51: TypePointer Uniform 18(fvec4)
|
51: TypePointer StorageBuffer 18(fvec4)
|
||||||
59: 19(int) Constant 2
|
59: 19(int) Constant 2
|
||||||
60: TypeVector 17(float) 3
|
60: TypeVector 17(float) 3
|
||||||
68: 19(int) Constant 3
|
68: 19(int) Constant 3
|
||||||
81: TypeVector 19(int) 2
|
81: TypeVector 19(int) 2
|
||||||
82: TypePointer Uniform 20(ivec4)
|
82: TypePointer StorageBuffer 20(ivec4)
|
||||||
90: TypeVector 19(int) 3
|
90: TypeVector 19(int) 3
|
||||||
104: TypePointer Uniform 6(int)
|
104: TypePointer StorageBuffer 6(int)
|
||||||
111: TypeVector 6(int) 2
|
111: TypeVector 6(int) 2
|
||||||
112: TypePointer Uniform 21(ivec4)
|
112: TypePointer StorageBuffer 21(ivec4)
|
||||||
120: TypeVector 6(int) 3
|
120: TypeVector 6(int) 3
|
||||||
142: TypePointer Uniform 22(float64_t)
|
142: TypePointer StorageBuffer 22(float64_t)
|
||||||
149: TypeVector 22(float64_t) 2
|
149: TypeVector 22(float64_t) 2
|
||||||
150: TypePointer Uniform 23(f64vec4)
|
150: TypePointer StorageBuffer 23(f64vec4)
|
||||||
158: TypeVector 22(float64_t) 3
|
158: TypeVector 22(float64_t) 3
|
||||||
182: 81(ivec2) ConstantComposite 33 33
|
182: 81(ivec2) ConstantComposite 33 33
|
||||||
183: TypeVector 34(bool) 2
|
183: TypeVector 34(bool) 2
|
||||||
|
15
Test/spv.1.3.8bitstorage-ssbo.vert
Normal file
15
Test/spv.1.3.8bitstorage-ssbo.vert
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_EXT_shader_8bit_storage: require
|
||||||
|
|
||||||
|
layout(binding = 0) readonly buffer Vertices
|
||||||
|
{
|
||||||
|
uint8_t vertices[];
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
color = vec4(int(vertices[gl_VertexIndex]));
|
||||||
|
}
|
15
Test/spv.1.3.8bitstorage-ubo.vert
Normal file
15
Test/spv.1.3.8bitstorage-ubo.vert
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_EXT_shader_8bit_storage: require
|
||||||
|
|
||||||
|
layout(binding = 0) readonly uniform Vertices
|
||||||
|
{
|
||||||
|
uint8_t vertices[512];
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
color = vec4(int(vertices[gl_VertexIndex]));
|
||||||
|
}
|
15
Test/spv.8bitstorage-ssbo.vert
Normal file
15
Test/spv.8bitstorage-ssbo.vert
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_EXT_shader_8bit_storage: require
|
||||||
|
|
||||||
|
layout(binding = 0) readonly buffer Vertices
|
||||||
|
{
|
||||||
|
uint8_t vertices[];
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
color = vec4(int(vertices[gl_VertexIndex]));
|
||||||
|
}
|
15
Test/spv.8bitstorage-ubo.vert
Normal file
15
Test/spv.8bitstorage-ubo.vert
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#version 450
|
||||||
|
|
||||||
|
#extension GL_EXT_shader_8bit_storage: require
|
||||||
|
|
||||||
|
layout(binding = 0) readonly uniform Vertices
|
||||||
|
{
|
||||||
|
uint8_t vertices[512];
|
||||||
|
};
|
||||||
|
|
||||||
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
color = vec4(int(vertices[gl_VertexIndex]));
|
||||||
|
}
|
@ -76,6 +76,10 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
|
|||||||
globalBufferDefaults.layoutMatrix = ElmColumnMajor;
|
globalBufferDefaults.layoutMatrix = ElmColumnMajor;
|
||||||
globalBufferDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd430 : ElpShared;
|
globalBufferDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd430 : ElpShared;
|
||||||
|
|
||||||
|
// use storage buffer on SPIR-V 1.3 and up
|
||||||
|
if (spvVersion.spv >= EShTargetSpv_1_3)
|
||||||
|
intermediate.setUseStorageBuffer();
|
||||||
|
|
||||||
globalInputDefaults.clear();
|
globalInputDefaults.clear();
|
||||||
globalOutputDefaults.clear();
|
globalOutputDefaults.clear();
|
||||||
|
|
||||||
|
@ -241,6 +241,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
"spv.8bitstorage_Error-int.frag",
|
"spv.8bitstorage_Error-int.frag",
|
||||||
"spv.8bitstorage-uint.frag",
|
"spv.8bitstorage-uint.frag",
|
||||||
"spv.8bitstorage_Error-uint.frag",
|
"spv.8bitstorage_Error-uint.frag",
|
||||||
|
"spv.8bitstorage-ubo.vert",
|
||||||
|
"spv.8bitstorage-ssbo.vert",
|
||||||
"spv.accessChain.frag",
|
"spv.accessChain.frag",
|
||||||
"spv.aggOps.frag",
|
"spv.aggOps.frag",
|
||||||
"spv.always-discard.frag",
|
"spv.always-discard.frag",
|
||||||
@ -365,6 +367,8 @@ INSTANTIATE_TEST_CASE_P(
|
|||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
Glsl, CompileVulkan1_1ToSpirvTest,
|
Glsl, CompileVulkan1_1ToSpirvTest,
|
||||||
::testing::ValuesIn(std::vector<std::string>({
|
::testing::ValuesIn(std::vector<std::string>({
|
||||||
|
"spv.1.3.8bitstorage-ubo.vert",
|
||||||
|
"spv.1.3.8bitstorage-ssbo.vert",
|
||||||
"spv.deviceGroup.frag",
|
"spv.deviceGroup.frag",
|
||||||
"spv.drawParams.vert",
|
"spv.drawParams.vert",
|
||||||
"spv.int8.frag",
|
"spv.int8.frag",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user