--- /dev/null
+spv.image.load-formatted.frag
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 240
+
+ Capability Shader
+ Capability SampledRect
+ Capability Sampled1D
+ Capability SampledCubeArray
+ Capability SampledBuffer
+ Capability ImageMSArray
+ Capability ImageQuery
+ Capability StorageImageReadWithoutFormat
+ Capability StorageImageWriteWithoutFormat
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 132 142 152 233 237 239
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 450
+ SourceExtension "GL_EXT_shader_image_load_formatted"
+ Name 4 "main"
+ Name 9 "iv"
+ Name 15 "i1D"
+ Name 27 "i2D"
+ Name 38 "i3D"
+ Name 45 "iCube"
+ Name 55 "iCubeArray"
+ Name 62 "i2DRect"
+ Name 72 "i1DArray"
+ Name 82 "i2DArray"
+ Name 89 "iBuffer"
+ Name 98 "i2DMS"
+ Name 108 "i2DMSArray"
+ Name 127 "v"
+ Name 132 "ic1D"
+ Name 142 "ic2D"
+ Name 152 "ic3D"
+ Name 228 "wo2D"
+ Name 233 "fragData"
+ Name 237 "ic4D"
+ Name 239 "value"
+ Decorate 15(i1D) DescriptorSet 0
+ Decorate 15(i1D) Binding 0
+ Decorate 27(i2D) DescriptorSet 0
+ Decorate 27(i2D) Binding 1
+ Decorate 38(i3D) DescriptorSet 0
+ Decorate 38(i3D) Binding 2
+ Decorate 45(iCube) DescriptorSet 0
+ Decorate 45(iCube) Binding 3
+ Decorate 55(iCubeArray) DescriptorSet 0
+ Decorate 55(iCubeArray) Binding 4
+ Decorate 62(i2DRect) DescriptorSet 0
+ Decorate 62(i2DRect) Binding 5
+ Decorate 72(i1DArray) DescriptorSet 0
+ Decorate 72(i1DArray) Binding 6
+ Decorate 82(i2DArray) DescriptorSet 0
+ Decorate 82(i2DArray) Binding 7
+ Decorate 89(iBuffer) DescriptorSet 0
+ Decorate 89(iBuffer) Binding 8
+ Decorate 98(i2DMS) DescriptorSet 0
+ Decorate 98(i2DMS) Binding 9
+ Decorate 108(i2DMSArray) DescriptorSet 0
+ Decorate 108(i2DMSArray) Binding 10
+ Decorate 132(ic1D) Flat
+ Decorate 142(ic2D) Flat
+ Decorate 152(ic3D) Flat
+ Decorate 228(wo2D) DescriptorSet 0
+ Decorate 228(wo2D) Binding 1
+ Decorate 228(wo2D) NonReadable
+ Decorate 237(ic4D) Flat
+ Decorate 239(value) Flat
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeInt 32 1
+ 7: TypeVector 6(int) 3
+ 8: TypePointer Function 7(ivec3)
+ 10: 6(int) Constant 0
+ 11: 7(ivec3) ConstantComposite 10 10 10
+ 12: TypeFloat 32
+ 13: TypeImage 12(float) 1D nonsampled format:Unknown
+ 14: TypePointer UniformConstant 13
+ 15(i1D): 14(ptr) Variable UniformConstant
+ 18: TypeInt 32 0
+ 19: 18(int) Constant 0
+ 20: TypePointer Function 6(int)
+ 25: TypeImage 12(float) 2D nonsampled format:Unknown
+ 26: TypePointer UniformConstant 25
+ 27(i2D): 26(ptr) Variable UniformConstant
+ 29: TypeVector 6(int) 2
+ 36: TypeImage 12(float) 3D nonsampled format:Unknown
+ 37: TypePointer UniformConstant 36
+ 38(i3D): 37(ptr) Variable UniformConstant
+ 43: TypeImage 12(float) Cube nonsampled format:Unknown
+ 44: TypePointer UniformConstant 43
+ 45(iCube): 44(ptr) Variable UniformConstant
+ 53: TypeImage 12(float) Cube array nonsampled format:Unknown
+ 54: TypePointer UniformConstant 53
+ 55(iCubeArray): 54(ptr) Variable UniformConstant
+ 60: TypeImage 12(float) Rect nonsampled format:Unknown
+ 61: TypePointer UniformConstant 60
+ 62(i2DRect): 61(ptr) Variable UniformConstant
+ 70: TypeImage 12(float) 1D array nonsampled format:Unknown
+ 71: TypePointer UniformConstant 70
+ 72(i1DArray): 71(ptr) Variable UniformConstant
+ 80: TypeImage 12(float) 2D array nonsampled format:Unknown
+ 81: TypePointer UniformConstant 80
+ 82(i2DArray): 81(ptr) Variable UniformConstant
+ 87: TypeImage 12(float) Buffer nonsampled format:Unknown
+ 88: TypePointer UniformConstant 87
+ 89(iBuffer): 88(ptr) Variable UniformConstant
+ 96: TypeImage 12(float) 2D multi-sampled nonsampled format:Unknown
+ 97: TypePointer UniformConstant 96
+ 98(i2DMS): 97(ptr) Variable UniformConstant
+ 106: TypeImage 12(float) 2D array multi-sampled nonsampled format:Unknown
+ 107: TypePointer UniformConstant 106
+ 108(i2DMSArray): 107(ptr) Variable UniformConstant
+ 125: TypeVector 12(float) 4
+ 126: TypePointer Function 125(fvec4)
+ 128: 12(float) Constant 0
+ 129: 125(fvec4) ConstantComposite 128 128 128 128
+ 131: TypePointer Input 6(int)
+ 132(ic1D): 131(ptr) Variable Input
+ 141: TypePointer Input 29(ivec2)
+ 142(ic2D): 141(ptr) Variable Input
+ 151: TypePointer Input 7(ivec3)
+ 152(ic3D): 151(ptr) Variable Input
+ 210: 6(int) Constant 1
+ 216: 6(int) Constant 2
+ 220: 6(int) Constant 3
+ 226: 6(int) Constant 4
+ 228(wo2D): 26(ptr) Variable UniformConstant
+ 232: TypePointer Output 125(fvec4)
+ 233(fragData): 232(ptr) Variable Output
+ 235: TypeVector 6(int) 4
+ 236: TypePointer Input 235(ivec4)
+ 237(ic4D): 236(ptr) Variable Input
+ 238: TypePointer Input 18(int)
+ 239(value): 238(ptr) Variable Input
+ 4(main): 2 Function None 3
+ 5: Label
+ 9(iv): 8(ptr) Variable Function
+ 127(v): 126(ptr) Variable Function
+ Store 9(iv) 11
+ 16: 13 Load 15(i1D)
+ 17: 6(int) ImageQuerySize 16
+ 21: 20(ptr) AccessChain 9(iv) 19
+ 22: 6(int) Load 21
+ 23: 6(int) IAdd 22 17
+ 24: 20(ptr) AccessChain 9(iv) 19
+ Store 24 23
+ 28: 25 Load 27(i2D)
+ 30: 29(ivec2) ImageQuerySize 28
+ 31: 7(ivec3) Load 9(iv)
+ 32: 29(ivec2) VectorShuffle 31 31 0 1
+ 33: 29(ivec2) IAdd 32 30
+ 34: 7(ivec3) Load 9(iv)
+ 35: 7(ivec3) VectorShuffle 34 33 3 4 2
+ Store 9(iv) 35
+ 39: 36 Load 38(i3D)
+ 40: 7(ivec3) ImageQuerySize 39
+ 41: 7(ivec3) Load 9(iv)
+ 42: 7(ivec3) IAdd 41 40
+ Store 9(iv) 42
+ 46: 43 Load 45(iCube)
+ 47: 29(ivec2) ImageQuerySize 46
+ 48: 7(ivec3) Load 9(iv)
+ 49: 29(ivec2) VectorShuffle 48 48 0 1
+ 50: 29(ivec2) IAdd 49 47
+ 51: 7(ivec3) Load 9(iv)
+ 52: 7(ivec3) VectorShuffle 51 50 3 4 2
+ Store 9(iv) 52
+ 56: 53 Load 55(iCubeArray)
+ 57: 7(ivec3) ImageQuerySize 56
+ 58: 7(ivec3) Load 9(iv)
+ 59: 7(ivec3) IAdd 58 57
+ Store 9(iv) 59
+ 63: 60 Load 62(i2DRect)
+ 64: 29(ivec2) ImageQuerySize 63
+ 65: 7(ivec3) Load 9(iv)
+ 66: 29(ivec2) VectorShuffle 65 65 0 1
+ 67: 29(ivec2) IAdd 66 64
+ 68: 7(ivec3) Load 9(iv)
+ 69: 7(ivec3) VectorShuffle 68 67 3 4 2
+ Store 9(iv) 69
+ 73: 70 Load 72(i1DArray)
+ 74: 29(ivec2) ImageQuerySize 73
+ 75: 7(ivec3) Load 9(iv)
+ 76: 29(ivec2) VectorShuffle 75 75 0 1
+ 77: 29(ivec2) IAdd 76 74
+ 78: 7(ivec3) Load 9(iv)
+ 79: 7(ivec3) VectorShuffle 78 77 3 4 2
+ Store 9(iv) 79
+ 83: 80 Load 82(i2DArray)
+ 84: 7(ivec3) ImageQuerySize 83
+ 85: 7(ivec3) Load 9(iv)
+ 86: 7(ivec3) IAdd 85 84
+ Store 9(iv) 86
+ 90: 87 Load 89(iBuffer)
+ 91: 6(int) ImageQuerySize 90
+ 92: 20(ptr) AccessChain 9(iv) 19
+ 93: 6(int) Load 92
+ 94: 6(int) IAdd 93 91
+ 95: 20(ptr) AccessChain 9(iv) 19
+ Store 95 94
+ 99: 96 Load 98(i2DMS)
+ 100: 29(ivec2) ImageQuerySize 99
+ 101: 7(ivec3) Load 9(iv)
+ 102: 29(ivec2) VectorShuffle 101 101 0 1
+ 103: 29(ivec2) IAdd 102 100
+ 104: 7(ivec3) Load 9(iv)
+ 105: 7(ivec3) VectorShuffle 104 103 3 4 2
+ Store 9(iv) 105
+ 109: 106 Load 108(i2DMSArray)
+ 110: 7(ivec3) ImageQuerySize 109
+ 111: 7(ivec3) Load 9(iv)
+ 112: 7(ivec3) IAdd 111 110
+ Store 9(iv) 112
+ 113: 96 Load 98(i2DMS)
+ 114: 6(int) ImageQuerySamples 113
+ 115: 20(ptr) AccessChain 9(iv) 19
+ 116: 6(int) Load 115
+ 117: 6(int) IAdd 116 114
+ 118: 20(ptr) AccessChain 9(iv) 19
+ Store 118 117
+ 119: 106 Load 108(i2DMSArray)
+ 120: 6(int) ImageQuerySamples 119
+ 121: 20(ptr) AccessChain 9(iv) 19
+ 122: 6(int) Load 121
+ 123: 6(int) IAdd 122 120
+ 124: 20(ptr) AccessChain 9(iv) 19
+ Store 124 123
+ Store 127(v) 129
+ 130: 13 Load 15(i1D)
+ 133: 6(int) Load 132(ic1D)
+ 134: 125(fvec4) ImageRead 130 133
+ 135: 125(fvec4) Load 127(v)
+ 136: 125(fvec4) FAdd 135 134
+ Store 127(v) 136
+ 137: 13 Load 15(i1D)
+ 138: 6(int) Load 132(ic1D)
+ 139: 125(fvec4) Load 127(v)
+ ImageWrite 137 138 139
+ 140: 25 Load 27(i2D)
+ 143: 29(ivec2) Load 142(ic2D)
+ 144: 125(fvec4) ImageRead 140 143
+ 145: 125(fvec4) Load 127(v)
+ 146: 125(fvec4) FAdd 145 144
+ Store 127(v) 146
+ 147: 25 Load 27(i2D)
+ 148: 29(ivec2) Load 142(ic2D)
+ 149: 125(fvec4) Load 127(v)
+ ImageWrite 147 148 149
+ 150: 36 Load 38(i3D)
+ 153: 7(ivec3) Load 152(ic3D)
+ 154: 125(fvec4) ImageRead 150 153
+ 155: 125(fvec4) Load 127(v)
+ 156: 125(fvec4) FAdd 155 154
+ Store 127(v) 156
+ 157: 36 Load 38(i3D)
+ 158: 7(ivec3) Load 152(ic3D)
+ 159: 125(fvec4) Load 127(v)
+ ImageWrite 157 158 159
+ 160: 43 Load 45(iCube)
+ 161: 7(ivec3) Load 152(ic3D)
+ 162: 125(fvec4) ImageRead 160 161
+ 163: 125(fvec4) Load 127(v)
+ 164: 125(fvec4) FAdd 163 162
+ Store 127(v) 164
+ 165: 43 Load 45(iCube)
+ 166: 7(ivec3) Load 152(ic3D)
+ 167: 125(fvec4) Load 127(v)
+ ImageWrite 165 166 167
+ 168: 53 Load 55(iCubeArray)
+ 169: 7(ivec3) Load 152(ic3D)
+ 170: 125(fvec4) ImageRead 168 169
+ 171: 125(fvec4) Load 127(v)
+ 172: 125(fvec4) FAdd 171 170
+ Store 127(v) 172
+ 173: 53 Load 55(iCubeArray)
+ 174: 7(ivec3) Load 152(ic3D)
+ 175: 125(fvec4) Load 127(v)
+ ImageWrite 173 174 175
+ 176: 60 Load 62(i2DRect)
+ 177: 29(ivec2) Load 142(ic2D)
+ 178: 125(fvec4) ImageRead 176 177
+ 179: 125(fvec4) Load 127(v)
+ 180: 125(fvec4) FAdd 179 178
+ Store 127(v) 180
+ 181: 60 Load 62(i2DRect)
+ 182: 29(ivec2) Load 142(ic2D)
+ 183: 125(fvec4) Load 127(v)
+ ImageWrite 181 182 183
+ 184: 70 Load 72(i1DArray)
+ 185: 29(ivec2) Load 142(ic2D)
+ 186: 125(fvec4) ImageRead 184 185
+ 187: 125(fvec4) Load 127(v)
+ 188: 125(fvec4) FAdd 187 186
+ Store 127(v) 188
+ 189: 70 Load 72(i1DArray)
+ 190: 29(ivec2) Load 142(ic2D)
+ 191: 125(fvec4) Load 127(v)
+ ImageWrite 189 190 191
+ 192: 80 Load 82(i2DArray)
+ 193: 7(ivec3) Load 152(ic3D)
+ 194: 125(fvec4) ImageRead 192 193
+ 195: 125(fvec4) Load 127(v)
+ 196: 125(fvec4) FAdd 195 194
+ Store 127(v) 196
+ 197: 80 Load 82(i2DArray)
+ 198: 7(ivec3) Load 152(ic3D)
+ 199: 125(fvec4) Load 127(v)
+ ImageWrite 197 198 199
+ 200: 87 Load 89(iBuffer)
+ 201: 6(int) Load 132(ic1D)
+ 202: 125(fvec4) ImageRead 200 201
+ 203: 125(fvec4) Load 127(v)
+ 204: 125(fvec4) FAdd 203 202
+ Store 127(v) 204
+ 205: 87 Load 89(iBuffer)
+ 206: 6(int) Load 132(ic1D)
+ 207: 125(fvec4) Load 127(v)
+ ImageWrite 205 206 207
+ 208: 96 Load 98(i2DMS)
+ 209: 29(ivec2) Load 142(ic2D)
+ 211: 125(fvec4) ImageRead 208 209 Sample 210
+ 212: 125(fvec4) Load 127(v)
+ 213: 125(fvec4) FAdd 212 211
+ Store 127(v) 213
+ 214: 96 Load 98(i2DMS)
+ 215: 29(ivec2) Load 142(ic2D)
+ 217: 125(fvec4) Load 127(v)
+ ImageWrite 214 215 217 Sample 216
+ 218: 106 Load 108(i2DMSArray)
+ 219: 7(ivec3) Load 152(ic3D)
+ 221: 125(fvec4) ImageRead 218 219 Sample 220
+ 222: 125(fvec4) Load 127(v)
+ 223: 125(fvec4) FAdd 222 221
+ Store 127(v) 223
+ 224: 106 Load 108(i2DMSArray)
+ 225: 7(ivec3) Load 152(ic3D)
+ 227: 125(fvec4) Load 127(v)
+ ImageWrite 224 225 227 Sample 226
+ 229: 25 Load 228(wo2D)
+ 230: 29(ivec2) Load 142(ic2D)
+ 231: 125(fvec4) Load 127(v)
+ ImageWrite 229 230 231
+ 234: 125(fvec4) Load 127(v)
+ Store 233(fragData) 234
+ Return
+ FunctionEnd
--- /dev/null
+#version 450\r
+\r
+#extension GL_EXT_shader_image_load_formatted : require\r
+\r
+layout(binding = 0) uniform image1D i1D;\r
+layout(binding = 1) uniform image2D i2D;\r
+layout(binding = 2) uniform image3D i3D;\r
+layout(binding = 3) uniform imageCube iCube;\r
+layout(binding = 4) uniform imageCubeArray iCubeArray;\r
+layout(binding = 5) uniform image2DRect i2DRect;\r
+layout(binding = 6) uniform image1DArray i1DArray;\r
+layout(binding = 7) uniform image2DArray i2DArray;\r
+layout(binding = 8) uniform imageBuffer iBuffer;\r
+layout(binding = 9) uniform image2DMS i2DMS;\r
+layout(binding = 10) uniform image2DMSArray i2DMSArray;\r
+\r
+flat in int ic1D;\r
+flat in ivec2 ic2D;\r
+flat in ivec3 ic3D;\r
+flat in ivec4 ic4D;\r
+\r
+writeonly layout(binding = 1) uniform image2D wo2D;\r
+\r
+flat in uint value;\r
+\r
+out vec4 fragData;\r
+\r
+void main()\r
+{\r
+ ivec3 iv = ivec3(0);\r
+ iv.x += imageSize(i1D);\r
+ iv.xy += imageSize(i2D);\r
+ iv.xyz += imageSize(i3D);\r
+ iv.xy += imageSize(iCube);\r
+ iv.xyz += imageSize(iCubeArray);\r
+ iv.xy += imageSize(i2DRect);\r
+ iv.xy += imageSize(i1DArray);\r
+ iv.xyz += imageSize(i2DArray);\r
+ iv.x += imageSize(iBuffer);\r
+ iv.xy += imageSize(i2DMS);\r
+ iv.xyz += imageSize(i2DMSArray);\r
+\r
+ iv.x += imageSamples(i2DMS);\r
+ iv.x += imageSamples(i2DMSArray);\r
+\r
+ vec4 v = vec4(0.0);\r
+ v += imageLoad(i1D, ic1D);\r
+ imageStore(i1D, ic1D, v);\r
+ v += imageLoad(i2D, ic2D);\r
+ imageStore(i2D, ic2D, v);\r
+ v += imageLoad(i3D, ic3D);\r
+ imageStore(i3D, ic3D, v);\r
+ v += imageLoad(iCube, ic3D);\r
+ imageStore(iCube, ic3D, v);\r
+ v += imageLoad(iCubeArray, ic3D);\r
+ imageStore(iCubeArray, ic3D, v);\r
+ v += imageLoad(i2DRect, ic2D);\r
+ imageStore(i2DRect, ic2D, v);\r
+ v += imageLoad(i1DArray, ic2D);\r
+ imageStore(i1DArray, ic2D, v);\r
+ v += imageLoad(i2DArray, ic3D);\r
+ imageStore(i2DArray, ic3D, v);\r
+ v += imageLoad(iBuffer, ic1D);\r
+ imageStore(iBuffer, ic1D, v);\r
+ v += imageLoad(i2DMS, ic2D, 1);\r
+ imageStore(i2DMS, ic2D, 2, v);\r
+ v += imageLoad(i2DMSArray, ic3D, 3);\r
+ imageStore(i2DMSArray, ic3D, 4, v);\r
+\r
+ imageStore(wo2D, ic2D, v);\r
+\r
+ fragData = v;\r
+}\r
+\r