Add support for GL_EXT_shared_memory_block
Uses SPV_KHR_workgroup_memory_explicit_layout. Note that if GL_EXT_scalar_block_layout is enabled, Workgroup blocks can also use scalar layout.
This commit is contained in:
parent
3785ddd59a
commit
4bfbf62794
33 changed files with 822 additions and 8 deletions
|
|
@ -7,7 +7,7 @@ ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute s
|
|||
ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute
|
||||
ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader
|
||||
ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader
|
||||
ERROR: 0:44: 'shared' : cannot apply layout qualifiers to a shared variable
|
||||
ERROR: 0:44: 'shared block' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
|
||||
ERROR: 0:45: 'shared' : initializer can only be a null initializer ('{}')
|
||||
ERROR: 0:47: 'local_size' : can only apply to 'in'
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-compone
|
|||
ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found
|
||||
ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float'
|
||||
ERROR: 0:197: 'subroutine' : feature not yet implemented
|
||||
ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification
|
||||
ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification
|
||||
ERROR: 0:198: 'subroutine' : feature not yet implemented
|
||||
ERROR: 0:199: 'subroutine' : feature not yet implemented
|
||||
ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute s
|
|||
ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute
|
||||
ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader
|
||||
ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader
|
||||
ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable
|
||||
ERROR: 0:48: 'shared block' : not supported for this version or the enabled extensions
|
||||
ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers
|
||||
ERROR: 0:49: 'shared' : initializer can only be a null initializer ('{}')
|
||||
ERROR: 0:52: 'local_size' : cannot change previously set size
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 25
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability Int16
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 10
|
||||
ExecutionMode 4 LocalSize 2 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 8 "first"
|
||||
MemberName 8(first) 0 "a"
|
||||
MemberName 8(first) 1 "f"
|
||||
Name 10 ""
|
||||
MemberDecorate 8(first) 0 Offset 0
|
||||
MemberDecorate 8(first) 1 Offset 2
|
||||
Decorate 8(first) Block
|
||||
Decorate 24 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 16 1
|
||||
7: TypeFloat 16
|
||||
8(first): TypeStruct 6(int16_t) 7(float16_t)
|
||||
9: TypePointer Workgroup 8(first)
|
||||
10: 9(ptr) Variable Workgroup
|
||||
11: TypeInt 32 1
|
||||
12: 11(int) Constant 0
|
||||
13: 6(int16_t) Constant 3
|
||||
14: TypePointer Workgroup 6(int16_t)
|
||||
16: 11(int) Constant 1
|
||||
17:7(float16_t) Constant 18982
|
||||
18: TypePointer Workgroup 7(float16_t)
|
||||
20: TypeInt 32 0
|
||||
21: TypeVector 20(int) 3
|
||||
22: 20(int) Constant 2
|
||||
23: 20(int) Constant 1
|
||||
24: 21(ivec3) ConstantComposite 22 23 23
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
15: 14(ptr) AccessChain 10 12
|
||||
Store 15 13
|
||||
19: 18(ptr) AccessChain 10 16
|
||||
Store 19 17
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 20
|
||||
|
||||
Capability Shader
|
||||
Capability Int8
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 9
|
||||
ExecutionMode 4 LocalSize 2 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types"
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 7 "first"
|
||||
MemberName 7(first) 0 "a"
|
||||
Name 9 ""
|
||||
MemberDecorate 7(first) 0 Offset 0
|
||||
Decorate 7(first) Block
|
||||
Decorate 19 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 8 1
|
||||
7(first): TypeStruct 6(int8_t)
|
||||
8: TypePointer Workgroup 7(first)
|
||||
9: 8(ptr) Variable Workgroup
|
||||
10: TypeInt 32 1
|
||||
11: 10(int) Constant 0
|
||||
12: 6(int8_t) Constant 2
|
||||
13: TypePointer Workgroup 6(int8_t)
|
||||
15: TypeInt 32 0
|
||||
16: TypeVector 15(int) 3
|
||||
17: 15(int) Constant 2
|
||||
18: 15(int) Constant 1
|
||||
19: 16(ivec3) ConstantComposite 17 18 18
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
14: 13(ptr) AccessChain 9 11
|
||||
Store 14 12
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp
|
||||
ERROR: Linking compute stage: cannot mix use of shared variables inside and outside blocks
|
||||
|
||||
SPIR-V is not generated for failed compile or link
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 24
|
||||
|
||||
Capability Shader
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 9 16
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 7 "first"
|
||||
MemberName 7(first) 0 "a"
|
||||
Name 9 ""
|
||||
Name 14 "second"
|
||||
MemberName 14(second) 0 "b"
|
||||
Name 16 ""
|
||||
MemberDecorate 7(first) 0 Offset 0
|
||||
Decorate 7(first) Block
|
||||
MemberDecorate 14(second) 0 Offset 0
|
||||
Decorate 14(second) Block
|
||||
Decorate 23 BuiltIn WorkgroupSize
|
||||
Decorate 9 Aliased
|
||||
Decorate 16 Aliased
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7(first): TypeStruct 6(int)
|
||||
8: TypePointer Workgroup 7(first)
|
||||
9: 8(ptr) Variable Workgroup
|
||||
10: 6(int) Constant 0
|
||||
11: 6(int) Constant 2
|
||||
12: TypePointer Workgroup 6(int)
|
||||
14(second): TypeStruct 6(int)
|
||||
15: TypePointer Workgroup 14(second)
|
||||
16: 15(ptr) Variable Workgroup
|
||||
17: 6(int) Constant 3
|
||||
19: TypeInt 32 0
|
||||
20: TypeVector 19(int) 3
|
||||
21: 19(int) Constant 8
|
||||
22: 19(int) Constant 1
|
||||
23: 20(ivec3) ConstantComposite 21 22 22
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13: 12(ptr) AccessChain 9 10
|
||||
Store 13 11
|
||||
18: 12(ptr) AccessChain 16 10
|
||||
Store 18 17
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 17
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 8 10
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 8 "a"
|
||||
Name 10 "b"
|
||||
Decorate 16 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7: TypePointer Workgroup 6(int)
|
||||
8(a): 7(ptr) Variable Workgroup
|
||||
9: 6(int) Constant 2
|
||||
10(b): 7(ptr) Variable Workgroup
|
||||
11: 6(int) Constant 3
|
||||
12: TypeInt 32 0
|
||||
13: TypeVector 12(int) 3
|
||||
14: 12(int) Constant 8
|
||||
15: 12(int) Constant 1
|
||||
16: 13(ivec3) ConstantComposite 14 15 15
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Store 8(a) 9
|
||||
Store 10(b) 11
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 19
|
||||
|
||||
Capability Shader
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 9
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 7 "first"
|
||||
MemberName 7(first) 0 "a"
|
||||
Name 9 ""
|
||||
MemberDecorate 7(first) 0 Offset 0
|
||||
Decorate 7(first) Block
|
||||
Decorate 18 BuiltIn WorkgroupSize
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 1
|
||||
7(first): TypeStruct 6(int)
|
||||
8: TypePointer Workgroup 7(first)
|
||||
9: 8(ptr) Variable Workgroup
|
||||
10: 6(int) Constant 0
|
||||
11: 6(int) Constant 2
|
||||
12: TypePointer Workgroup 6(int)
|
||||
14: TypeInt 32 0
|
||||
15: TypeVector 14(int) 3
|
||||
16: 14(int) Constant 8
|
||||
17: 14(int) Constant 1
|
||||
18: 15(ivec3) ConstantComposite 16 17 17
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
13: 12(ptr) AccessChain 9 10
|
||||
Store 13 11
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.scalar.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 29
|
||||
|
||||
Capability Shader
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 28
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_scalar_block_layout"
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 17 "T"
|
||||
MemberName 17(T) 0 "t"
|
||||
Name 24 "S"
|
||||
MemberName 24(S) 0 "f"
|
||||
MemberName 24(S) 1 "v2"
|
||||
MemberName 24(S) 2 "v3"
|
||||
MemberName 24(S) 3 "v4"
|
||||
MemberName 24(S) 4 "t"
|
||||
MemberName 24(S) 5 "f_array"
|
||||
MemberName 24(S) 6 "v2_array"
|
||||
MemberName 24(S) 7 "v3_array"
|
||||
MemberName 24(S) 8 "v4_array"
|
||||
MemberName 24(S) 9 "t_array"
|
||||
Name 26 "Block"
|
||||
MemberName 26(Block) 0 "s"
|
||||
MemberName 26(Block) 1 "s_array"
|
||||
Name 28 ""
|
||||
Decorate 10 BuiltIn WorkgroupSize
|
||||
Decorate 16 ArrayStride 4
|
||||
MemberDecorate 17(T) 0 Offset 0
|
||||
Decorate 19 ArrayStride 4
|
||||
Decorate 20 ArrayStride 8
|
||||
Decorate 21 ArrayStride 12
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 23 ArrayStride 12
|
||||
MemberDecorate 24(S) 0 Offset 0
|
||||
MemberDecorate 24(S) 1 Offset 4
|
||||
MemberDecorate 24(S) 2 Offset 12
|
||||
MemberDecorate 24(S) 3 Offset 24
|
||||
MemberDecorate 24(S) 4 Offset 40
|
||||
MemberDecorate 24(S) 5 Offset 52
|
||||
MemberDecorate 24(S) 6 Offset 76
|
||||
MemberDecorate 24(S) 7 Offset 124
|
||||
MemberDecorate 24(S) 8 Offset 196
|
||||
MemberDecorate 24(S) 9 Offset 292
|
||||
Decorate 25 ArrayStride 364
|
||||
MemberDecorate 26(Block) 0 Offset 0
|
||||
MemberDecorate 26(Block) 1 Offset 364
|
||||
Decorate 26(Block) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeVector 6(int) 3
|
||||
8: 6(int) Constant 8
|
||||
9: 6(int) Constant 1
|
||||
10: 7(ivec3) ConstantComposite 8 9 9
|
||||
11: TypeFloat 32
|
||||
12: TypeVector 11(float) 2
|
||||
13: TypeVector 11(float) 3
|
||||
14: TypeVector 11(float) 4
|
||||
15: 6(int) Constant 3
|
||||
16: TypeArray 11(float) 15
|
||||
17(T): TypeStruct 16
|
||||
18: 6(int) Constant 6
|
||||
19: TypeArray 11(float) 18
|
||||
20: TypeArray 12(fvec2) 18
|
||||
21: TypeArray 13(fvec3) 18
|
||||
22: TypeArray 14(fvec4) 18
|
||||
23: TypeArray 17(T) 18
|
||||
24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
|
||||
25: TypeArray 24(S) 18
|
||||
26(Block): TypeStruct 24(S) 25
|
||||
27: TypePointer Workgroup 26(Block)
|
||||
28: 27(ptr) Variable Workgroup
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.std140.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 29
|
||||
|
||||
Capability Shader
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 28
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 17 "T"
|
||||
MemberName 17(T) 0 "t"
|
||||
Name 24 "S"
|
||||
MemberName 24(S) 0 "f"
|
||||
MemberName 24(S) 1 "v2"
|
||||
MemberName 24(S) 2 "v3"
|
||||
MemberName 24(S) 3 "v4"
|
||||
MemberName 24(S) 4 "t"
|
||||
MemberName 24(S) 5 "f_array"
|
||||
MemberName 24(S) 6 "v2_array"
|
||||
MemberName 24(S) 7 "v3_array"
|
||||
MemberName 24(S) 8 "v4_array"
|
||||
MemberName 24(S) 9 "t_array"
|
||||
Name 26 "Block"
|
||||
MemberName 26(Block) 0 "s"
|
||||
MemberName 26(Block) 1 "s_array"
|
||||
Name 28 ""
|
||||
Decorate 10 BuiltIn WorkgroupSize
|
||||
Decorate 16 ArrayStride 16
|
||||
MemberDecorate 17(T) 0 Offset 0
|
||||
Decorate 19 ArrayStride 16
|
||||
Decorate 20 ArrayStride 16
|
||||
Decorate 21 ArrayStride 16
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 23 ArrayStride 48
|
||||
MemberDecorate 24(S) 0 Offset 0
|
||||
MemberDecorate 24(S) 1 Offset 8
|
||||
MemberDecorate 24(S) 2 Offset 16
|
||||
MemberDecorate 24(S) 3 Offset 32
|
||||
MemberDecorate 24(S) 4 Offset 48
|
||||
MemberDecorate 24(S) 5 Offset 96
|
||||
MemberDecorate 24(S) 6 Offset 192
|
||||
MemberDecorate 24(S) 7 Offset 288
|
||||
MemberDecorate 24(S) 8 Offset 384
|
||||
MemberDecorate 24(S) 9 Offset 480
|
||||
Decorate 25 ArrayStride 768
|
||||
MemberDecorate 26(Block) 0 Offset 0
|
||||
MemberDecorate 26(Block) 1 Offset 768
|
||||
Decorate 26(Block) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeVector 6(int) 3
|
||||
8: 6(int) Constant 8
|
||||
9: 6(int) Constant 1
|
||||
10: 7(ivec3) ConstantComposite 8 9 9
|
||||
11: TypeFloat 32
|
||||
12: TypeVector 11(float) 2
|
||||
13: TypeVector 11(float) 3
|
||||
14: TypeVector 11(float) 4
|
||||
15: 6(int) Constant 3
|
||||
16: TypeArray 11(float) 15
|
||||
17(T): TypeStruct 16
|
||||
18: 6(int) Constant 6
|
||||
19: TypeArray 11(float) 18
|
||||
20: TypeArray 12(fvec2) 18
|
||||
21: TypeArray 13(fvec3) 18
|
||||
22: TypeArray 14(fvec4) 18
|
||||
23: TypeArray 17(T) 18
|
||||
24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
|
||||
25: TypeArray 24(S) 18
|
||||
26(Block): TypeStruct 24(S) 25
|
||||
27: TypePointer Workgroup 26(Block)
|
||||
28: 27(ptr) Variable Workgroup
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
spv.WorkgroupMemoryExplicitLayout.std430.comp
|
||||
// Module Version 10400
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 29
|
||||
|
||||
Capability Shader
|
||||
Capability CapabilityWorkgroupMemoryExplicitLayoutKHR
|
||||
Extension "SPV_KHR_workgroup_memory_explicit_layout"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 28
|
||||
ExecutionMode 4 LocalSize 8 1 1
|
||||
Source GLSL 430
|
||||
SourceExtension "GL_EXT_shared_memory_block"
|
||||
Name 4 "main"
|
||||
Name 17 "T"
|
||||
MemberName 17(T) 0 "t"
|
||||
Name 24 "S"
|
||||
MemberName 24(S) 0 "f"
|
||||
MemberName 24(S) 1 "v2"
|
||||
MemberName 24(S) 2 "v3"
|
||||
MemberName 24(S) 3 "v4"
|
||||
MemberName 24(S) 4 "t"
|
||||
MemberName 24(S) 5 "f_array"
|
||||
MemberName 24(S) 6 "v2_array"
|
||||
MemberName 24(S) 7 "v3_array"
|
||||
MemberName 24(S) 8 "v4_array"
|
||||
MemberName 24(S) 9 "t_array"
|
||||
Name 26 "Block"
|
||||
MemberName 26(Block) 0 "s"
|
||||
MemberName 26(Block) 1 "s_array"
|
||||
Name 28 ""
|
||||
Decorate 10 BuiltIn WorkgroupSize
|
||||
Decorate 16 ArrayStride 4
|
||||
MemberDecorate 17(T) 0 Offset 0
|
||||
Decorate 19 ArrayStride 4
|
||||
Decorate 20 ArrayStride 8
|
||||
Decorate 21 ArrayStride 16
|
||||
Decorate 22 ArrayStride 16
|
||||
Decorate 23 ArrayStride 12
|
||||
MemberDecorate 24(S) 0 Offset 0
|
||||
MemberDecorate 24(S) 1 Offset 8
|
||||
MemberDecorate 24(S) 2 Offset 16
|
||||
MemberDecorate 24(S) 3 Offset 32
|
||||
MemberDecorate 24(S) 4 Offset 48
|
||||
MemberDecorate 24(S) 5 Offset 60
|
||||
MemberDecorate 24(S) 6 Offset 88
|
||||
MemberDecorate 24(S) 7 Offset 144
|
||||
MemberDecorate 24(S) 8 Offset 240
|
||||
MemberDecorate 24(S) 9 Offset 336
|
||||
Decorate 25 ArrayStride 416
|
||||
MemberDecorate 26(Block) 0 Offset 0
|
||||
MemberDecorate 26(Block) 1 Offset 416
|
||||
Decorate 26(Block) Block
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeVector 6(int) 3
|
||||
8: 6(int) Constant 8
|
||||
9: 6(int) Constant 1
|
||||
10: 7(ivec3) ConstantComposite 8 9 9
|
||||
11: TypeFloat 32
|
||||
12: TypeVector 11(float) 2
|
||||
13: TypeVector 11(float) 3
|
||||
14: TypeVector 11(float) 4
|
||||
15: 6(int) Constant 3
|
||||
16: TypeArray 11(float) 15
|
||||
17(T): TypeStruct 16
|
||||
18: 6(int) Constant 6
|
||||
19: TypeArray 11(float) 18
|
||||
20: TypeArray 12(fvec2) 18
|
||||
21: TypeArray 13(fvec3) 18
|
||||
22: TypeArray 14(fvec4) 18
|
||||
23: TypeArray 17(T) 18
|
||||
24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23
|
||||
25: TypeArray 24(S) 18
|
||||
26(Block): TypeStruct 24(S) 25
|
||||
27: TypePointer Workgroup 26(Block)
|
||||
28: 27(ptr) Variable Workgroup
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
18
Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
Normal file
18
Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types: enable
|
||||
|
||||
layout(local_size_x = 2) in;
|
||||
|
||||
shared first
|
||||
{
|
||||
int16_t a;
|
||||
float16_t f;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
a = int16_t(3);
|
||||
f = float16_t(12.3);
|
||||
}
|
||||
16
Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
Normal file
16
Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types: enable
|
||||
|
||||
layout(local_size_x = 2) in;
|
||||
|
||||
shared first
|
||||
{
|
||||
int8_t a;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
a = int8_t(2);
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
shared first
|
||||
{
|
||||
int a;
|
||||
};
|
||||
|
||||
shared int b;
|
||||
|
||||
// Cannot mix shared block and shared non-block, will fail at linking.
|
||||
|
||||
void main()
|
||||
{
|
||||
a = 2;
|
||||
b = 3;
|
||||
}
|
||||
21
Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
Normal file
21
Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
shared first
|
||||
{
|
||||
int a;
|
||||
};
|
||||
|
||||
shared second
|
||||
{
|
||||
int b;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
a = 2;
|
||||
b = 3;
|
||||
}
|
||||
14
Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
Normal file
14
Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
shared int a;
|
||||
shared int b;
|
||||
|
||||
void main()
|
||||
{
|
||||
a = 2;
|
||||
b = 3;
|
||||
}
|
||||
15
Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
Normal file
15
Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
shared first
|
||||
{
|
||||
int a;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
a = 2;
|
||||
}
|
||||
39
Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp
Normal file
39
Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_scalar_block_layout : enable
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
struct T
|
||||
{
|
||||
float t[3];
|
||||
};
|
||||
|
||||
struct S
|
||||
{
|
||||
float f;
|
||||
vec2 v2;
|
||||
vec3 v3;
|
||||
vec4 v4;
|
||||
T t;
|
||||
|
||||
float f_array[6];
|
||||
vec2 v2_array[6];
|
||||
vec3 v3_array[6];
|
||||
vec4 v4_array[6];
|
||||
T t_array[6];
|
||||
};
|
||||
|
||||
// Use a default qualifier.
|
||||
layout(scalar) shared;
|
||||
|
||||
shared Block
|
||||
{
|
||||
S s;
|
||||
S s_array[6];
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
35
Test/spv.WorkgroupMemoryExplicitLayout.std140.comp
Normal file
35
Test/spv.WorkgroupMemoryExplicitLayout.std140.comp
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
struct T
|
||||
{
|
||||
float t[3];
|
||||
};
|
||||
|
||||
struct S
|
||||
{
|
||||
float f;
|
||||
vec2 v2;
|
||||
vec3 v3;
|
||||
vec4 v4;
|
||||
T t;
|
||||
|
||||
float f_array[6];
|
||||
vec2 v2_array[6];
|
||||
vec3 v3_array[6];
|
||||
vec4 v4_array[6];
|
||||
T t_array[6];
|
||||
};
|
||||
|
||||
layout(std140) shared Block
|
||||
{
|
||||
S s;
|
||||
S s_array[6];
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
35
Test/spv.WorkgroupMemoryExplicitLayout.std430.comp
Normal file
35
Test/spv.WorkgroupMemoryExplicitLayout.std430.comp
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#version 430 core
|
||||
|
||||
#extension GL_EXT_shared_memory_block : enable
|
||||
|
||||
layout(local_size_x = 8) in;
|
||||
|
||||
struct T
|
||||
{
|
||||
float t[3];
|
||||
};
|
||||
|
||||
struct S
|
||||
{
|
||||
float f;
|
||||
vec2 v2;
|
||||
vec3 v3;
|
||||
vec4 v4;
|
||||
T t;
|
||||
|
||||
float f_array[6];
|
||||
vec2 v2_array[6];
|
||||
vec3 v3_array[6];
|
||||
vec4 v4_array[6];
|
||||
T t_array[6];
|
||||
};
|
||||
|
||||
layout(std430) shared Block
|
||||
{
|
||||
S s;
|
||||
S s_array[6];
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue