Merge pull request #1918 from KhronosGroup/format-attributes

HLSL: Add attributes for image formats and nonreadable/nonwritable
This commit is contained in:
John Kessenich 2019-10-03 11:23:16 -06:00 committed by GitHub
commit 135e3e35ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 697 additions and 1 deletions

View File

@ -0,0 +1,501 @@
hlsl.format.rwtexture.frag
Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Parameters:
0:? Sequence
0:59 move second child to first child ( temp 4-component vector of float)
0:59 Color: direct index for structure ( temp 4-component vector of float)
0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:59 Constant:
0:59 0 (const int)
0:59 Constant:
0:59 1.000000
0:59 1.000000
0:59 1.000000
0:59 1.000000
0:60 move second child to first child ( temp float)
0:60 Depth: direct index for structure ( temp float)
0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:60 Constant:
0:60 1 (const int)
0:60 Constant:
0:60 1.000000
0:62 Branch: Return with expression
0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Definition: main( ( temp void)
0:56 Function Parameters:
0:? Sequence
0:56 Sequence
0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:56 Color: direct index for structure ( temp 4-component vector of float)
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 move second child to first child ( temp float)
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:56 Depth: direct index for structure ( temp float)
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D)
0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D)
0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D)
0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D)
0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D)
0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D)
0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D)
0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D)
0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D)
0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray)
0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray)
0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray)
0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray)
0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray)
0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray)
0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray)
0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray)
0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray)
0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray)
0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray)
0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray)
0:? 'g_tTex08' (layout( r16) uniform iimage2DArray)
0:? 'g_tTex09' (layout( r8) uniform iimage2DArray)
0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray)
0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray)
0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray)
0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray)
0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray)
0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray)
0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray)
0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray)
0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray)
0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray)
0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray)
0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray)
0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray)
0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray)
0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray)
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Parameters:
0:? Sequence
0:59 move second child to first child ( temp 4-component vector of float)
0:59 Color: direct index for structure ( temp 4-component vector of float)
0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:59 Constant:
0:59 0 (const int)
0:59 Constant:
0:59 1.000000
0:59 1.000000
0:59 1.000000
0:59 1.000000
0:60 move second child to first child ( temp float)
0:60 Depth: direct index for structure ( temp float)
0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:60 Constant:
0:60 1 (const int)
0:60 Constant:
0:60 1.000000
0:62 Branch: Return with expression
0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Definition: main( ( temp void)
0:56 Function Parameters:
0:? Sequence
0:56 Sequence
0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:56 Color: direct index for structure ( temp 4-component vector of float)
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 0 (const int)
0:56 move second child to first child ( temp float)
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:56 Depth: direct index for structure ( temp float)
0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:56 Constant:
0:56 1 (const int)
0:? Linker Objects
0:? 'g_sSamp' (layout( binding=0) uniform sampler)
0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D)
0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D)
0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D)
0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D)
0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D)
0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D)
0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D)
0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D)
0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D)
0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray)
0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray)
0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray)
0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray)
0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray)
0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray)
0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray)
0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray)
0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray)
0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray)
0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray)
0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray)
0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray)
0:? 'g_tTex08' (layout( r16) uniform iimage2DArray)
0:? 'g_tTex09' (layout( r8) uniform iimage2DArray)
0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray)
0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray)
0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray)
0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray)
0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray)
0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray)
0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray)
0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray)
0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray)
0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray)
0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray)
0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray)
0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray)
0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray)
0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray)
0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray)
0:? '@entryPointOutput.Depth' ( out float FragDepth)
0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 160
Capability Shader
Capability Image1D
Capability StorageImageExtendedFormats
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 29 33
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthReplacing
Source HLSL 500
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
MemberName 8(PS_OUTPUT) 1 "Depth"
Name 10 "@main("
Name 13 "psout"
Name 26 "flattenTemp"
Name 29 "@entryPointOutput.Color"
Name 33 "@entryPointOutput.Depth"
Name 38 "g_sSamp"
Name 41 "g_tTex1df4"
Name 44 "g_tTex1di4"
Name 48 "g_tTex1du4"
Name 51 "g_tTex2df4"
Name 54 "g_tTex2di4"
Name 57 "g_tTex2du4"
Name 60 "g_tTex3df4"
Name 63 "g_tTex3di4"
Name 66 "g_tTex3du4"
Name 69 "g_tTex1df4a"
Name 72 "g_tTex1di4a"
Name 75 "g_tTex1du4a"
Name 78 "g_tTex2df4a"
Name 81 "g_tTex2di4a"
Name 84 "g_tTex2du4a"
Name 87 "g_tTex01"
Name 90 "g_tTex02"
Name 93 "g_tTex03"
Name 96 "g_tTex04"
Name 99 "g_tTex05"
Name 102 "g_tTex06"
Name 105 "g_tTex07"
Name 108 "g_tTex08"
Name 111 "g_tTex09"
Name 114 "g_tTex10"
Name 117 "g_tTex11"
Name 120 "g_tTex12"
Name 123 "g_tTex13"
Name 126 "g_tTex14"
Name 129 "g_tTex15"
Name 132 "g_tTex16"
Name 135 "g_tTex17"
Name 138 "g_tTex18"
Name 141 "g_tTex19"
Name 144 "g_tTex20"
Name 147 "g_tTex21"
Name 150 "g_tTex22"
Name 153 "g_tTex23"
Name 156 "g_tTex24"
Name 159 "g_tTex25"
Decorate 29(@entryPointOutput.Color) Location 0
Decorate 33(@entryPointOutput.Depth) BuiltIn FragDepth
Decorate 38(g_sSamp) DescriptorSet 0
Decorate 38(g_sSamp) Binding 0
Decorate 41(g_tTex1df4) DescriptorSet 0
Decorate 41(g_tTex1df4) Binding 0
Decorate 44(g_tTex1di4) DescriptorSet 0
Decorate 44(g_tTex1di4) Binding 0
Decorate 48(g_tTex1du4) DescriptorSet 0
Decorate 48(g_tTex1du4) Binding 0
Decorate 51(g_tTex2df4) DescriptorSet 0
Decorate 51(g_tTex2df4) Binding 0
Decorate 54(g_tTex2di4) DescriptorSet 0
Decorate 54(g_tTex2di4) Binding 0
Decorate 57(g_tTex2du4) DescriptorSet 0
Decorate 57(g_tTex2du4) Binding 0
Decorate 60(g_tTex3df4) DescriptorSet 0
Decorate 60(g_tTex3df4) Binding 0
Decorate 60(g_tTex3df4) NonWritable
Decorate 63(g_tTex3di4) DescriptorSet 0
Decorate 63(g_tTex3di4) Binding 0
Decorate 63(g_tTex3di4) NonReadable
Decorate 66(g_tTex3du4) DescriptorSet 0
Decorate 66(g_tTex3du4) Binding 0
Decorate 66(g_tTex3du4) NonWritable
Decorate 66(g_tTex3du4) NonReadable
Decorate 69(g_tTex1df4a) DescriptorSet 0
Decorate 69(g_tTex1df4a) Binding 0
Decorate 72(g_tTex1di4a) DescriptorSet 0
Decorate 72(g_tTex1di4a) Binding 0
Decorate 75(g_tTex1du4a) DescriptorSet 0
Decorate 75(g_tTex1du4a) Binding 0
Decorate 78(g_tTex2df4a) DescriptorSet 0
Decorate 78(g_tTex2df4a) Binding 0
Decorate 81(g_tTex2di4a) DescriptorSet 0
Decorate 81(g_tTex2di4a) Binding 0
Decorate 84(g_tTex2du4a) DescriptorSet 0
Decorate 84(g_tTex2du4a) Binding 0
Decorate 87(g_tTex01) DescriptorSet 0
Decorate 87(g_tTex01) Binding 0
Decorate 90(g_tTex02) DescriptorSet 0
Decorate 90(g_tTex02) Binding 0
Decorate 93(g_tTex03) DescriptorSet 0
Decorate 93(g_tTex03) Binding 0
Decorate 96(g_tTex04) DescriptorSet 0
Decorate 96(g_tTex04) Binding 0
Decorate 99(g_tTex05) DescriptorSet 0
Decorate 99(g_tTex05) Binding 0
Decorate 102(g_tTex06) DescriptorSet 0
Decorate 102(g_tTex06) Binding 0
Decorate 105(g_tTex07) DescriptorSet 0
Decorate 105(g_tTex07) Binding 0
Decorate 108(g_tTex08) DescriptorSet 0
Decorate 108(g_tTex08) Binding 0
Decorate 111(g_tTex09) DescriptorSet 0
Decorate 111(g_tTex09) Binding 0
Decorate 114(g_tTex10) DescriptorSet 0
Decorate 114(g_tTex10) Binding 0
Decorate 117(g_tTex11) DescriptorSet 0
Decorate 117(g_tTex11) Binding 0
Decorate 120(g_tTex12) DescriptorSet 0
Decorate 120(g_tTex12) Binding 0
Decorate 123(g_tTex13) DescriptorSet 0
Decorate 123(g_tTex13) Binding 0
Decorate 126(g_tTex14) DescriptorSet 0
Decorate 126(g_tTex14) Binding 0
Decorate 129(g_tTex15) DescriptorSet 0
Decorate 129(g_tTex15) Binding 0
Decorate 132(g_tTex16) DescriptorSet 0
Decorate 132(g_tTex16) Binding 0
Decorate 135(g_tTex17) DescriptorSet 0
Decorate 135(g_tTex17) Binding 0
Decorate 138(g_tTex18) DescriptorSet 0
Decorate 138(g_tTex18) Binding 0
Decorate 141(g_tTex19) DescriptorSet 0
Decorate 141(g_tTex19) Binding 0
Decorate 144(g_tTex20) DescriptorSet 0
Decorate 144(g_tTex20) Binding 0
Decorate 147(g_tTex21) DescriptorSet 0
Decorate 147(g_tTex21) Binding 0
Decorate 150(g_tTex22) DescriptorSet 0
Decorate 150(g_tTex22) Binding 0
Decorate 153(g_tTex23) DescriptorSet 0
Decorate 153(g_tTex23) Binding 0
Decorate 156(g_tTex24) DescriptorSet 0
Decorate 156(g_tTex24) Binding 0
Decorate 159(g_tTex25) DescriptorSet 0
Decorate 159(g_tTex25) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 8(PS_OUTPUT)
14: TypeInt 32 1
15: 14(int) Constant 0
16: 6(float) Constant 1065353216
17: 7(fvec4) ConstantComposite 16 16 16 16
18: TypePointer Function 7(fvec4)
20: 14(int) Constant 1
21: TypePointer Function 6(float)
28: TypePointer Output 7(fvec4)
29(@entryPointOutput.Color): 28(ptr) Variable Output
32: TypePointer Output 6(float)
33(@entryPointOutput.Depth): 32(ptr) Variable Output
36: TypeSampler
37: TypePointer UniformConstant 36
38(g_sSamp): 37(ptr) Variable UniformConstant
39: TypeImage 6(float) 1D nonsampled format:Rgba32f
40: TypePointer UniformConstant 39
41(g_tTex1df4): 40(ptr) Variable UniformConstant
42: TypeImage 14(int) 1D nonsampled format:Rg32f
43: TypePointer UniformConstant 42
44(g_tTex1di4): 43(ptr) Variable UniformConstant
45: TypeInt 32 0
46: TypeImage 45(int) 1D nonsampled format:Rgba8Snorm
47: TypePointer UniformConstant 46
48(g_tTex1du4): 47(ptr) Variable UniformConstant
49: TypeImage 6(float) 2D nonsampled format:Rgba8i
50: TypePointer UniformConstant 49
51(g_tTex2df4): 50(ptr) Variable UniformConstant
52: TypeImage 14(int) 2D nonsampled format:R11fG11fB10f
53: TypePointer UniformConstant 52
54(g_tTex2di4): 53(ptr) Variable UniformConstant
55: TypeImage 45(int) 2D nonsampled format:R8Snorm
56: TypePointer UniformConstant 55
57(g_tTex2du4): 56(ptr) Variable UniformConstant
58: TypeImage 6(float) 3D nonsampled format:Rg8
59: TypePointer UniformConstant 58
60(g_tTex3df4): 59(ptr) Variable UniformConstant
61: TypeImage 14(int) 3D nonsampled format:Rgba16i
62: TypePointer UniformConstant 61
63(g_tTex3di4): 62(ptr) Variable UniformConstant
64: TypeImage 45(int) 3D nonsampled format:R8i
65: TypePointer UniformConstant 64
66(g_tTex3du4): 65(ptr) Variable UniformConstant
67: TypeImage 6(float) 1D array nonsampled format:Rgba8ui
68: TypePointer UniformConstant 67
69(g_tTex1df4a): 68(ptr) Variable UniformConstant
70: TypeImage 14(int) 1D array nonsampled format:Rg32ui
71: TypePointer UniformConstant 70
72(g_tTex1di4a): 71(ptr) Variable UniformConstant
73: TypeImage 45(int) 1D array nonsampled format:R16ui
74: TypePointer UniformConstant 73
75(g_tTex1du4a): 74(ptr) Variable UniformConstant
76: TypeImage 6(float) 2D array nonsampled format:Rgb10a2ui
77: TypePointer UniformConstant 76
78(g_tTex2df4a): 77(ptr) Variable UniformConstant
79: TypeImage 14(int) 2D array nonsampled format:R8ui
80: TypePointer UniformConstant 79
81(g_tTex2di4a): 80(ptr) Variable UniformConstant
82: TypeImage 45(int) 2D array nonsampled format:Rgba16f
83: TypePointer UniformConstant 82
84(g_tTex2du4a): 83(ptr) Variable UniformConstant
85: TypeImage 14(int) 2D array nonsampled format:Rgba8
86: TypePointer UniformConstant 85
87(g_tTex01): 86(ptr) Variable UniformConstant
88: TypeImage 14(int) 2D array nonsampled format:Rg16f
89: TypePointer UniformConstant 88
90(g_tTex02): 89(ptr) Variable UniformConstant
91: TypeImage 14(int) 2D array nonsampled format:R16f
92: TypePointer UniformConstant 91
93(g_tTex03): 92(ptr) Variable UniformConstant
94: TypeImage 14(int) 2D array nonsampled format:Rgb10A2
95: TypePointer UniformConstant 94
96(g_tTex04): 95(ptr) Variable UniformConstant
97: TypeImage 14(int) 2D array nonsampled format:Rg16
98: TypePointer UniformConstant 97
99(g_tTex05): 98(ptr) Variable UniformConstant
100: TypeImage 14(int) 2D array nonsampled format:R32f
101: TypePointer UniformConstant 100
102(g_tTex06): 101(ptr) Variable UniformConstant
103: TypeImage 14(int) 2D array nonsampled format:Rgba16
104: TypePointer UniformConstant 103
105(g_tTex07): 104(ptr) Variable UniformConstant
106: TypeImage 14(int) 2D array nonsampled format:R16
107: TypePointer UniformConstant 106
108(g_tTex08): 107(ptr) Variable UniformConstant
109: TypeImage 14(int) 2D array nonsampled format:R8
110: TypePointer UniformConstant 109
111(g_tTex09): 110(ptr) Variable UniformConstant
112: TypeImage 14(int) 2D array nonsampled format:Rgba16Snorm
113: TypePointer UniformConstant 112
114(g_tTex10): 113(ptr) Variable UniformConstant
115: TypeImage 14(int) 2D array nonsampled format:Rg16Snorm
116: TypePointer UniformConstant 115
117(g_tTex11): 116(ptr) Variable UniformConstant
118: TypeImage 14(int) 2D array nonsampled format:R16Snorm
119: TypePointer UniformConstant 118
120(g_tTex12): 119(ptr) Variable UniformConstant
121: TypeImage 14(int) 2D array nonsampled format:R8Snorm
122: TypePointer UniformConstant 121
123(g_tTex13): 122(ptr) Variable UniformConstant
124: TypeImage 14(int) 2D array nonsampled format:Rgba32i
125: TypePointer UniformConstant 124
126(g_tTex14): 125(ptr) Variable UniformConstant
127: TypeImage 14(int) 2D array nonsampled format:R32i
128: TypePointer UniformConstant 127
129(g_tTex15): 128(ptr) Variable UniformConstant
130: TypeImage 14(int) 2D array nonsampled format:R32ui
131: TypePointer UniformConstant 130
132(g_tTex16): 131(ptr) Variable UniformConstant
133: TypeImage 14(int) 2D array nonsampled format:Rg16i
134: TypePointer UniformConstant 133
135(g_tTex17): 134(ptr) Variable UniformConstant
136: TypeImage 14(int) 2D array nonsampled format:R16i
137: TypePointer UniformConstant 136
138(g_tTex18): 137(ptr) Variable UniformConstant
139: TypeImage 14(int) 2D array nonsampled format:Rg32i
140: TypePointer UniformConstant 139
141(g_tTex19): 140(ptr) Variable UniformConstant
142: TypeImage 14(int) 2D array nonsampled format:Rg8i
143: TypePointer UniformConstant 142
144(g_tTex20): 143(ptr) Variable UniformConstant
145: TypeImage 14(int) 2D array nonsampled format:Rg8ui
146: TypePointer UniformConstant 145
147(g_tTex21): 146(ptr) Variable UniformConstant
148: TypeImage 14(int) 2D array nonsampled format:Rgba32ui
149: TypePointer UniformConstant 148
150(g_tTex22): 149(ptr) Variable UniformConstant
151: TypeImage 14(int) 2D array nonsampled format:Rgba16ui
152: TypePointer UniformConstant 151
153(g_tTex23): 152(ptr) Variable UniformConstant
154: TypeImage 14(int) 2D array nonsampled format:Rg32ui
155: TypePointer UniformConstant 154
156(g_tTex24): 155(ptr) Variable UniformConstant
157: TypeImage 14(int) 2D array nonsampled format:Rg16ui
158: TypePointer UniformConstant 157
159(g_tTex25): 158(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
26(flattenTemp): 12(ptr) Variable Function
27:8(PS_OUTPUT) FunctionCall 10(@main()
Store 26(flattenTemp) 27
30: 18(ptr) AccessChain 26(flattenTemp) 15
31: 7(fvec4) Load 30
Store 29(@entryPointOutput.Color) 31
34: 21(ptr) AccessChain 26(flattenTemp) 20
35: 6(float) Load 34
Store 33(@entryPointOutput.Depth) 35
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(psout): 12(ptr) Variable Function
19: 18(ptr) AccessChain 13(psout) 15
Store 19 17
22: 21(ptr) AccessChain 13(psout) 20
Store 22 16
23:8(PS_OUTPUT) Load 13(psout)
ReturnValue 23
FunctionEnd

View File

@ -0,0 +1,63 @@
SamplerState g_sSamp : register(s0);
[[spv::format_rgba32f]] RWTexture1D <float4> g_tTex1df4 : register(t0);
[[spv::format_rg32f]] RWTexture1D <int4> g_tTex1di4;
[[spv::format_rgba8snorm]] RWTexture1D <uint4> g_tTex1du4;
[[spv::format_rgba8i]] RWTexture2D <float4> g_tTex2df4;
[[spv::format_r11fg11fb10f]] RWTexture2D <int4> g_tTex2di4;
[[spv::format_r8snorm]] RWTexture2D <uint4> g_tTex2du4;
[[spv::format_rg8]] [[spv::nonwritable]] RWTexture3D <float4> g_tTex3df4;
[[spv::format_rgba16i]] [[spv::nonreadable]] RWTexture3D <int4> g_tTex3di4;
[[spv::format_r8i]] [[spv::nonwritable]] [[spv::nonreadable]] RWTexture3D <uint4> g_tTex3du4;
[[spv::format_rgba8ui]] RWTexture1DArray <float4> g_tTex1df4a;
[[spv::format_rg32ui]] RWTexture1DArray <int4> g_tTex1di4a;
[[spv::format_r16ui]] RWTexture1DArray <uint4> g_tTex1du4a;
[[spv::format_rgb10a2ui]] RWTexture2DArray <float4> g_tTex2df4a;
[[spv::format_r8ui]] RWTexture2DArray <int4> g_tTex2di4a;
[[spv::format_rgba16f]] RWTexture2DArray <uint4> g_tTex2du4a;
[[spv::format_rgba8 ]] RWTexture2DArray<int4> g_tTex01;
[[spv::format_rg16f ]] RWTexture2DArray<int4> g_tTex02;
[[spv::format_r16f ]] RWTexture2DArray<int4> g_tTex03;
[[spv::format_rgb10a2 ]] RWTexture2DArray<int4> g_tTex04;
[[spv::format_rg16 ]] RWTexture2DArray<int4> g_tTex05;
[[spv::format_r32f ]] RWTexture2DArray<int4> g_tTex06;
[[spv::format_rgba16 ]] RWTexture2DArray<int4> g_tTex07;
[[spv::format_r16 ]] RWTexture2DArray<int4> g_tTex08;
[[spv::format_r8 ]] RWTexture2DArray<int4> g_tTex09;
[[spv::format_rgba16snorm ]] RWTexture2DArray<int4> g_tTex10;
[[spv::format_rg16snorm ]] RWTexture2DArray<int4> g_tTex11;
[[spv::format_r16snorm ]] RWTexture2DArray<int4> g_tTex12;
[[spv::format_r8snorm ]] RWTexture2DArray<int4> g_tTex13;
[[spv::format_rgba32i ]] RWTexture2DArray<int4> g_tTex14;
[[spv::format_r32i ]] RWTexture2DArray<int4> g_tTex15;
[[spv::format_r32ui ]] RWTexture2DArray<int4> g_tTex16;
[[spv::format_rg16i ]] RWTexture2DArray<int4> g_tTex17;
[[spv::format_r16i ]] RWTexture2DArray<int4> g_tTex18;
[[spv::format_rg32i ]] RWTexture2DArray<int4> g_tTex19;
[[spv::format_rg8i ]] RWTexture2DArray<int4> g_tTex20;
[[spv::format_rg8ui ]] RWTexture2DArray<int4> g_tTex21;
[[spv::format_rgba32ui ]] RWTexture2DArray<int4> g_tTex22;
[[spv::format_rgba16ui ]] RWTexture2DArray<int4> g_tTex23;
[[spv::format_rg32ui ]] RWTexture2DArray<int4> g_tTex24;
[[spv::format_rg16ui ]] RWTexture2DArray<int4> g_tTex25;
struct PS_OUTPUT
{
float4 Color : SV_Target0;
float Depth : SV_Depth;
};
PS_OUTPUT main()
{
PS_OUTPUT psout;
psout.Color = 1.0;
psout.Depth = 1.0;
return psout;
}

0
glslang/MachineIndependent/Constant.cpp Executable file → Normal file
View File

0
glslang/MachineIndependent/ShaderLang.cpp Executable file → Normal file
View File

0
glslang/MachineIndependent/SymbolTable.cpp Executable file → Normal file
View File

0
glslang/MachineIndependent/SymbolTable.h Executable file → Normal file
View File

View File

@ -76,7 +76,49 @@ namespace glslang {
EatMaxIterations,
EatIterationMultiple,
EatPeelCount,
EatPartialCount
EatPartialCount,
EatFormatRgba32f,
EatFormatRgba16f,
EatFormatR32f,
EatFormatRgba8,
EatFormatRgba8Snorm,
EatFormatRg32f,
EatFormatRg16f,
EatFormatR11fG11fB10f,
EatFormatR16f,
EatFormatRgba16,
EatFormatRgb10A2,
EatFormatRg16,
EatFormatRg8,
EatFormatR16,
EatFormatR8,
EatFormatRgba16Snorm,
EatFormatRg16Snorm,
EatFormatRg8Snorm,
EatFormatR16Snorm,
EatFormatR8Snorm,
EatFormatRgba32i,
EatFormatRgba16i,
EatFormatRgba8i,
EatFormatR32i,
EatFormatRg32i,
EatFormatRg16i,
EatFormatRg8i,
EatFormatR16i,
EatFormatR8i,
EatFormatRgba32ui,
EatFormatRgba16ui,
EatFormatRgba8ui,
EatFormatR32ui,
EatFormatRgb10a2ui,
EatFormatRg32ui,
EatFormatRg16ui,
EatFormatRg8ui,
EatFormatR16ui,
EatFormatR8ui,
EatFormatUnknown,
EatNonWritable,
EatNonReadable
};
class TIntermAggregate;

0
glslang/MachineIndependent/parseVersions.h Executable file → Normal file
View File

1
gtests/Hlsl.FromFile.cpp Normal file → Executable file
View File

@ -230,6 +230,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.hull.void.tesc", "main"},
{"hlsl.hull.ctrlpt-1.tesc", "main"},
{"hlsl.hull.ctrlpt-2.tesc", "main"},
{"hlsl.format.rwtexture.frag", "main"},
{"hlsl.groupid.comp", "main"},
{"hlsl.identifier.sample.frag", "main"},
{"hlsl.if.frag", "PixelShaderFunction"},

View File

@ -58,6 +58,49 @@ namespace glslang {
return EatConstantId;
else if (name == "push_constant")
return EatPushConstant;
} else if (nameSpace == "spv") {
if (name == "format_rgba32f") return EatFormatRgba32f;
if (name == "format_rgba16f") return EatFormatRgba16f;
if (name == "format_r32f") return EatFormatR32f;
if (name == "format_rgba8") return EatFormatRgba8;
if (name == "format_rgba8snorm") return EatFormatRgba8Snorm;
if (name == "format_rg32f") return EatFormatRg32f;
if (name == "format_rg16f") return EatFormatRg16f;
if (name == "format_r11fg11fb10f") return EatFormatR11fG11fB10f;
if (name == "format_r16f") return EatFormatR16f;
if (name == "format_rgba16") return EatFormatRgba16;
if (name == "format_rgb10a2") return EatFormatRgb10A2;
if (name == "format_rg16") return EatFormatRg16;
if (name == "format_rg8") return EatFormatRg8;
if (name == "format_r16") return EatFormatR16;
if (name == "format_r8") return EatFormatR8;
if (name == "format_rgba16snorm") return EatFormatRgba16Snorm;
if (name == "format_rg16snorm") return EatFormatRg16Snorm;
if (name == "format_rg8snorm") return EatFormatRg8Snorm;
if (name == "format_r16snorm") return EatFormatR16Snorm;
if (name == "format_r8snorm") return EatFormatR8Snorm;
if (name == "format_rgba32i") return EatFormatRgba32i;
if (name == "format_rgba16i") return EatFormatRgba16i;
if (name == "format_rgba8i") return EatFormatRgba8i;
if (name == "format_r32i") return EatFormatR32i;
if (name == "format_rg32i") return EatFormatRg32i;
if (name == "format_rg16i") return EatFormatRg16i;
if (name == "format_rg8i") return EatFormatRg8i;
if (name == "format_r16i") return EatFormatR16i;
if (name == "format_r8i") return EatFormatR8i;
if (name == "format_rgba32ui") return EatFormatRgba32ui;
if (name == "format_rgba16ui") return EatFormatRgba16ui;
if (name == "format_rgba8ui") return EatFormatRgba8ui;
if (name == "format_r32ui") return EatFormatR32ui;
if (name == "format_rgb10a2ui") return EatFormatRgb10a2ui;
if (name == "format_rg32ui") return EatFormatRg32ui;
if (name == "format_rg16ui") return EatFormatRg16ui;
if (name == "format_rg8ui") return EatFormatRg8ui;
if (name == "format_r16ui") return EatFormatR16ui;
if (name == "format_r8ui") return EatFormatR8ui;
if (name == "nonwritable") return EatNonWritable;
if (name == "nonreadable") return EatNonReadable;
} else if (nameSpace.size() > 0)
return EatNone;

0
hlsl/hlslGrammar.cpp Executable file → Normal file
View File

0
hlsl/hlslGrammar.h Executable file → Normal file
View File

46
hlsl/hlslParseHelper.cpp Normal file → Executable file
View File

@ -1950,6 +1950,52 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr
setSpecConstantId(loc, type.getQualifier(), value);
}
break;
// image formats
case EatFormatRgba32f: type.getQualifier().layoutFormat = ElfRgba32f; break;
case EatFormatRgba16f: type.getQualifier().layoutFormat = ElfRgba16f; break;
case EatFormatR32f: type.getQualifier().layoutFormat = ElfR32f; break;
case EatFormatRgba8: type.getQualifier().layoutFormat = ElfRgba8; break;
case EatFormatRgba8Snorm: type.getQualifier().layoutFormat = ElfRgba8Snorm; break;
case EatFormatRg32f: type.getQualifier().layoutFormat = ElfRg32f; break;
case EatFormatRg16f: type.getQualifier().layoutFormat = ElfRg16f; break;
case EatFormatR11fG11fB10f: type.getQualifier().layoutFormat = ElfR11fG11fB10f; break;
case EatFormatR16f: type.getQualifier().layoutFormat = ElfR16f; break;
case EatFormatRgba16: type.getQualifier().layoutFormat = ElfRgba16; break;
case EatFormatRgb10A2: type.getQualifier().layoutFormat = ElfRgb10A2; break;
case EatFormatRg16: type.getQualifier().layoutFormat = ElfRg16; break;
case EatFormatRg8: type.getQualifier().layoutFormat = ElfRg8; break;
case EatFormatR16: type.getQualifier().layoutFormat = ElfR16; break;
case EatFormatR8: type.getQualifier().layoutFormat = ElfR8; break;
case EatFormatRgba16Snorm: type.getQualifier().layoutFormat = ElfRgba16Snorm; break;
case EatFormatRg16Snorm: type.getQualifier().layoutFormat = ElfRg16Snorm; break;
case EatFormatRg8Snorm: type.getQualifier().layoutFormat = ElfRg8Snorm; break;
case EatFormatR16Snorm: type.getQualifier().layoutFormat = ElfR16Snorm; break;
case EatFormatR8Snorm: type.getQualifier().layoutFormat = ElfR8Snorm; break;
case EatFormatRgba32i: type.getQualifier().layoutFormat = ElfRgba32i; break;
case EatFormatRgba16i: type.getQualifier().layoutFormat = ElfRgba16i; break;
case EatFormatRgba8i: type.getQualifier().layoutFormat = ElfRgba8i; break;
case EatFormatR32i: type.getQualifier().layoutFormat = ElfR32i; break;
case EatFormatRg32i: type.getQualifier().layoutFormat = ElfRg32i; break;
case EatFormatRg16i: type.getQualifier().layoutFormat = ElfRg16i; break;
case EatFormatRg8i: type.getQualifier().layoutFormat = ElfRg8i; break;
case EatFormatR16i: type.getQualifier().layoutFormat = ElfR16i; break;
case EatFormatR8i: type.getQualifier().layoutFormat = ElfR8i; break;
case EatFormatRgba32ui: type.getQualifier().layoutFormat = ElfRgba32ui; break;
case EatFormatRgba16ui: type.getQualifier().layoutFormat = ElfRgba16ui; break;
case EatFormatRgba8ui: type.getQualifier().layoutFormat = ElfRgba8ui; break;
case EatFormatR32ui: type.getQualifier().layoutFormat = ElfR32ui; break;
case EatFormatRgb10a2ui: type.getQualifier().layoutFormat = ElfRgb10a2ui; break;
case EatFormatRg32ui: type.getQualifier().layoutFormat = ElfRg32ui; break;
case EatFormatRg16ui: type.getQualifier().layoutFormat = ElfRg16ui; break;
case EatFormatRg8ui: type.getQualifier().layoutFormat = ElfRg8ui; break;
case EatFormatR16ui: type.getQualifier().layoutFormat = ElfR16ui; break;
case EatFormatR8ui: type.getQualifier().layoutFormat = ElfR8ui; break;
case EatFormatUnknown: type.getQualifier().layoutFormat = ElfNone; break;
case EatNonWritable: type.getQualifier().readonly = true; break;
case EatNonReadable: type.getQualifier().writeonly = true; break;
default:
if (! allowEntry)
warn(loc, "attribute does not apply to a type", "", "");

0
hlsl/hlslParseHelper.h Executable file → Normal file
View File