Apply memory decorations from GLSL source to the top-level OpVariable. Previously, these decorations would only be applied to individual members. While this is correct behavior, it is more convenient for some front ends to see the decorations (specifically ReadOnly and WriteOnly) applied to the whole variable rather than individual members.
330 lines
22 KiB
Text
330 lines
22 KiB
Text
hlsl.buffer.frag
|
|
Shader version: 500
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:30 Function Definition: foo( ( temp float)
|
|
0:30 Function Parameters:
|
|
0:? Sequence
|
|
0:31 Branch: Return with expression
|
|
0:31 Constant:
|
|
0:31 1.000000
|
|
0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Parameters:
|
|
0:43 'input' ( in 4-component vector of float)
|
|
0:? Sequence
|
|
0:45 move second child to first child ( temp 4-component vector of float)
|
|
0:45 a: direct index for structure ( temp 4-component vector of float)
|
|
0:45 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:45 Constant:
|
|
0:45 0 (const int)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 vector-scale ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 'input' ( in 4-component vector of float)
|
|
0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
|
|
0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
|
|
0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
|
|
0:45 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 Function Call: foo( ( temp float)
|
|
0:46 Branch: Return with expression
|
|
0:46 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Definition: PixelShaderFunction( ( temp void)
|
|
0:43 Function Parameters:
|
|
0:? Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
0:43 Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:43 a: direct index for structure ( temp 4-component vector of float)
|
|
0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:43 Constant:
|
|
0:43 0 (const int)
|
|
0:? Linker Objects
|
|
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
Shader version: 500
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:30 Function Definition: foo( ( temp float)
|
|
0:30 Function Parameters:
|
|
0:? Sequence
|
|
0:31 Branch: Return with expression
|
|
0:31 Constant:
|
|
0:31 1.000000
|
|
0:43 Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Parameters:
|
|
0:43 'input' ( in 4-component vector of float)
|
|
0:? Sequence
|
|
0:45 move second child to first child ( temp 4-component vector of float)
|
|
0:45 a: direct index for structure ( temp 4-component vector of float)
|
|
0:45 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:45 Constant:
|
|
0:45 0 (const int)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 vector-scale ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 add ( temp 4-component vector of float)
|
|
0:45 'input' ( in 4-component vector of float)
|
|
0:45 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
|
|
0:45 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
|
|
0:45 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
|
|
0:45 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
|
|
0:45 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:45 Constant:
|
|
0:45 0 (const uint)
|
|
0:45 Function Call: foo( ( temp float)
|
|
0:46 Branch: Return with expression
|
|
0:46 'ret' ( temp structure{ temp 4-component vector of float a})
|
|
0:43 Function Definition: PixelShaderFunction( ( temp void)
|
|
0:43 Function Parameters:
|
|
0:? Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
0:43 Sequence
|
|
0:43 move second child to first child ( temp 4-component vector of float)
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:43 a: direct index for structure ( temp 4-component vector of float)
|
|
0:43 Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
|
|
0:? 'input' ( temp 4-component vector of float)
|
|
0:43 Constant:
|
|
0:43 0 (const int)
|
|
0:? Linker Objects
|
|
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
|
|
0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
|
|
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
|
|
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
|
|
0:? 'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
|
|
0:? '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
|
|
0:? 'input' ( in 4-component vector of float FragCoord)
|
|
|
|
Validation failed
|
|
// Module Version 10000
|
|
// Generated by (magic number): 8000b
|
|
// Id's are bound by 73
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "PixelShaderFunction" 65 68
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Source HLSL 500
|
|
Name 4 "PixelShaderFunction"
|
|
Name 8 "foo("
|
|
Name 12 "id"
|
|
MemberName 12(id) 0 "a"
|
|
Name 15 "@PixelShaderFunction(vf4;"
|
|
Name 14 "input"
|
|
Name 21 "ret"
|
|
Name 24 "cbufName2"
|
|
MemberName 24(cbufName2) 0 "v24"
|
|
Name 26 ""
|
|
Name 31 "buf1"
|
|
MemberName 31(buf1) 0 "v1"
|
|
Name 33 ""
|
|
Name 37 "buf2"
|
|
MemberName 37(buf2) 0 "v2"
|
|
Name 39 ""
|
|
Name 43 "cbufName"
|
|
MemberName 43(cbufName) 0 "v3"
|
|
MemberName 43(cbufName) 1 "i3"
|
|
Name 45 ""
|
|
Name 50 "tbufName"
|
|
MemberName 50(tbufName) 0 "v4"
|
|
MemberName 50(tbufName) 1 "i4"
|
|
MemberName 50(tbufName) 2 "f1"
|
|
MemberName 50(tbufName) 3 "f3"
|
|
MemberName 50(tbufName) 4 "f4"
|
|
MemberName 50(tbufName) 5 "f5"
|
|
MemberName 50(tbufName) 6 "f6"
|
|
MemberName 50(tbufName) 7 "f7"
|
|
MemberName 50(tbufName) 8 "m1"
|
|
MemberName 50(tbufName) 9 "m2"
|
|
MemberName 50(tbufName) 10 "m3"
|
|
MemberName 50(tbufName) 11 "m4"
|
|
Name 52 ""
|
|
Name 63 "input"
|
|
Name 65 "input"
|
|
Name 68 "@entryPointOutput.a"
|
|
Name 69 "param"
|
|
Decorate 24(cbufName2) Block
|
|
MemberDecorate 24(cbufName2) 0 Offset 0
|
|
Decorate 26 Binding 3
|
|
Decorate 26 DescriptorSet 0
|
|
Decorate 31(buf1) Block
|
|
MemberDecorate 31(buf1) 0 Offset 0
|
|
Decorate 33 Binding 0
|
|
Decorate 33 DescriptorSet 0
|
|
Decorate 37(buf2) BufferBlock
|
|
MemberDecorate 37(buf2) 0 NonWritable
|
|
MemberDecorate 37(buf2) 0 Offset 0
|
|
Decorate 39 NonWritable
|
|
Decorate 39 Binding 1
|
|
Decorate 39 DescriptorSet 0
|
|
Decorate 43(cbufName) Block
|
|
MemberDecorate 43(cbufName) 0 Offset 0
|
|
MemberDecorate 43(cbufName) 1 Offset 20
|
|
Decorate 45 Binding 2
|
|
Decorate 45 DescriptorSet 0
|
|
Decorate 50(tbufName) BufferBlock
|
|
MemberDecorate 50(tbufName) 0 NonWritable
|
|
MemberDecorate 50(tbufName) 0 Offset 16
|
|
MemberDecorate 50(tbufName) 1 NonWritable
|
|
MemberDecorate 50(tbufName) 1 Offset 48
|
|
MemberDecorate 50(tbufName) 2 NonWritable
|
|
MemberDecorate 50(tbufName) 2 Offset 60
|
|
MemberDecorate 50(tbufName) 3 NonWritable
|
|
MemberDecorate 50(tbufName) 3 Offset 64
|
|
MemberDecorate 50(tbufName) 4 NonWritable
|
|
MemberDecorate 50(tbufName) 4 Offset 68
|
|
MemberDecorate 50(tbufName) 5 NonWritable
|
|
MemberDecorate 50(tbufName) 5 Offset 72
|
|
MemberDecorate 50(tbufName) 6 NonWritable
|
|
MemberDecorate 50(tbufName) 6 Offset 76
|
|
MemberDecorate 50(tbufName) 7 NonWritable
|
|
MemberDecorate 50(tbufName) 7 Offset 128
|
|
MemberDecorate 50(tbufName) 8 RowMajor
|
|
MemberDecorate 50(tbufName) 8 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 8 NonWritable
|
|
MemberDecorate 50(tbufName) 8 Offset 112
|
|
MemberDecorate 50(tbufName) 9 ColMajor
|
|
MemberDecorate 50(tbufName) 9 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 9 NonWritable
|
|
MemberDecorate 50(tbufName) 9 Offset 176
|
|
MemberDecorate 50(tbufName) 10 RowMajor
|
|
MemberDecorate 50(tbufName) 10 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 10 NonWritable
|
|
MemberDecorate 50(tbufName) 10 Offset 240
|
|
MemberDecorate 50(tbufName) 11 RowMajor
|
|
MemberDecorate 50(tbufName) 11 MatrixStride 16
|
|
MemberDecorate 50(tbufName) 11 NonWritable
|
|
MemberDecorate 50(tbufName) 11 Offset 304
|
|
Decorate 52 NonWritable
|
|
Decorate 52 Binding 8
|
|
Decorate 52 DescriptorSet 0
|
|
Decorate 65(input) BuiltIn FragCoord
|
|
Decorate 68(@entryPointOutput.a) Location 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeFunction 6(float)
|
|
10: TypeVector 6(float) 4
|
|
11: TypePointer Function 10(fvec4)
|
|
12(id): TypeStruct 10(fvec4)
|
|
13: TypeFunction 12(id) 11(ptr)
|
|
17: 6(float) Constant 1065353216
|
|
20: TypePointer Function 12(id)
|
|
22: TypeInt 32 1
|
|
23: 22(int) Constant 0
|
|
24(cbufName2): TypeStruct 10(fvec4)
|
|
25: TypePointer Uniform 24(cbufName2)
|
|
26: 25(ptr) Variable Uniform
|
|
27: TypePointer Uniform 10(fvec4)
|
|
31(buf1): TypeStruct 10(fvec4)
|
|
32: TypePointer Uniform 31(buf1)
|
|
33: 32(ptr) Variable Uniform
|
|
37(buf2): TypeStruct 10(fvec4)
|
|
38: TypePointer Uniform 37(buf2)
|
|
39: 38(ptr) Variable Uniform
|
|
43(cbufName): TypeStruct 10(fvec4) 22(int)
|
|
44: TypePointer Uniform 43(cbufName)
|
|
45: 44(ptr) Variable Uniform
|
|
49: TypeMatrix 10(fvec4) 3
|
|
50(tbufName): TypeStruct 10(fvec4) 22(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 49 49 49 49
|
|
51: TypePointer Uniform 50(tbufName)
|
|
52: 51(ptr) Variable Uniform
|
|
64: TypePointer Input 10(fvec4)
|
|
65(input): 64(ptr) Variable Input
|
|
67: TypePointer Output 10(fvec4)
|
|
68(@entryPointOutput.a): 67(ptr) Variable Output
|
|
4(PixelShaderFunction): 2 Function None 3
|
|
5: Label
|
|
63(input): 11(ptr) Variable Function
|
|
69(param): 11(ptr) Variable Function
|
|
66: 10(fvec4) Load 65(input)
|
|
Store 63(input) 66
|
|
70: 10(fvec4) Load 63(input)
|
|
Store 69(param) 70
|
|
71: 12(id) FunctionCall 15(@PixelShaderFunction(vf4;) 69(param)
|
|
72: 10(fvec4) CompositeExtract 71 0
|
|
Store 68(@entryPointOutput.a) 72
|
|
Return
|
|
FunctionEnd
|
|
8(foo(): 6(float) Function None 7
|
|
9: Label
|
|
ReturnValue 17
|
|
FunctionEnd
|
|
15(@PixelShaderFunction(vf4;): 12(id) Function None 13
|
|
14(input): 11(ptr) FunctionParameter
|
|
16: Label
|
|
21(ret): 20(ptr) Variable Function
|
|
28: 27(ptr) AccessChain 26 23
|
|
29: 10(fvec4) Load 28
|
|
30: 10(fvec4) Load 14(input)
|
|
34: 27(ptr) AccessChain 33 23
|
|
35: 10(fvec4) Load 34
|
|
36: 10(fvec4) FAdd 30 35
|
|
40: 27(ptr) AccessChain 39 23
|
|
41: 10(fvec4) Load 40
|
|
42: 10(fvec4) FAdd 36 41
|
|
46: 27(ptr) AccessChain 45 23
|
|
47: 10(fvec4) Load 46
|
|
48: 10(fvec4) FAdd 42 47
|
|
53: 27(ptr) AccessChain 52 23
|
|
54: 10(fvec4) Load 53
|
|
55: 10(fvec4) FAdd 48 54
|
|
56: 6(float) FunctionCall 8(foo()
|
|
57: 10(fvec4) VectorTimesScalar 55 56
|
|
58: 10(fvec4) FAdd 29 57
|
|
59: 11(ptr) AccessChain 21(ret) 23
|
|
Store 59 58
|
|
60: 12(id) Load 21(ret)
|
|
ReturnValue 60
|
|
FunctionEnd
|