spv.paramMemory.frag
Validation failed
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 64

                              Capability Shader
                              Capability StorageImageReadWithoutFormat
                              Capability StorageImageWriteWithoutFormat
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 27 61
                              ExecutionMode 4 OriginUpperLeft
                              Source ESSL 310
                              Name 4  "main"
                              Name 16  "image_load(I21;vi2;"
                              Name 14  "image"
                              Name 15  "coords"
                              Name 23  "image_store(I21;vi2;vf4;"
                              Name 20  "image"
                              Name 21  "coords"
                              Name 22  "data"
                              Name 27  "in_coords"
                              Name 35  "read1"
                              Name 38  "read2"
                              Name 43  "image3"
                              Name 46  "param"
                              Name 48  "param"
                              Name 52  "image4"
                              Name 56  "param"
                              Name 58  "param"
                              Name 61  "out_color"
                              Decorate 14(image) Coherent
                              Decorate 14(image) NonWritable
                              Decorate 20(image) Coherent
                              Decorate 20(image) NonReadable
                              Decorate 27(in_coords) Flat
                              Decorate 27(in_coords) Location 0
                              Decorate 43(image3) DescriptorSet 0
                              Decorate 43(image3) Binding 1
                              Decorate 43(image3) Coherent
                              Decorate 43(image3) NonReadable
                              Decorate 52(image4) DescriptorSet 0
                              Decorate 52(image4) Binding 3
                              Decorate 52(image4) NonReadable
                              Decorate 61(out_color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeImage 6(float) 2D nonsampled format:Unknown
               8:             TypePointer UniformConstant 7
               9:             TypeInt 32 1
              10:             TypeVector 9(int) 2
              11:             TypePointer Function 10(ivec2)
              12:             TypeVector 6(float) 4
              13:             TypeFunction 12(fvec4) 8(ptr) 11(ptr)
              18:             TypePointer Function 12(fvec4)
              19:             TypeFunction 2 8(ptr) 11(ptr) 18(ptr)
              26:             TypePointer Input 10(ivec2)
   27(in_coords):     26(ptr) Variable Input
              36:    6(float) Constant 1053609165
              37:   12(fvec4) ConstantComposite 36 36 36 36
              39:    6(float) Constant 1056964608
              40:   12(fvec4) ConstantComposite 39 39 39 39
              41:             TypeImage 6(float) 2D nonsampled format:Rgba32f
              42:             TypePointer UniformConstant 41
      43(image3):     42(ptr) Variable UniformConstant
              50:             TypeImage 6(float) 2D nonsampled format:Rgba16f
              51:             TypePointer UniformConstant 50
      52(image4):     51(ptr) Variable UniformConstant
              54:    6(float) Constant 1073741824
              60:             TypePointer Output 12(fvec4)
   61(out_color):     60(ptr) Variable Output
              62:    6(float) Constant 0
              63:   12(fvec4) ConstantComposite 62 62 62 62
         4(main):           2 Function None 3
               5:             Label
       35(read1):     18(ptr) Variable Function
       38(read2):     18(ptr) Variable Function
       46(param):     11(ptr) Variable Function
       48(param):     18(ptr) Variable Function
       56(param):     11(ptr) Variable Function
       58(param):     18(ptr) Variable Function
                              Store 35(read1) 37
                              Store 38(read2) 40
              44:   12(fvec4) Load 35(read1)
              45:   12(fvec4) VectorTimesScalar 44 39
              47:   10(ivec2) Load 27(in_coords)
                              Store 46(param) 47
                              Store 48(param) 45
              49:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 43(image3) 46(param) 48(param)
              53:   12(fvec4) Load 38(read2)
              55:   12(fvec4) VectorTimesScalar 53 54
              57:   10(ivec2) Load 27(in_coords)
                              Store 56(param) 57
                              Store 58(param) 55
              59:           2 FunctionCall 23(image_store(I21;vi2;vf4;) 52(image4) 56(param) 58(param)
                              Store 61(out_color) 63
                              Return
                              FunctionEnd
16(image_load(I21;vi2;):   12(fvec4) Function None 13
       14(image):      8(ptr) FunctionParameter
      15(coords):     11(ptr) FunctionParameter
              17:             Label
              25:           7 Load 14(image)
              28:   10(ivec2) Load 27(in_coords)
              29:   12(fvec4) ImageRead 25 28
                              ReturnValue 29
                              FunctionEnd
23(image_store(I21;vi2;vf4;):           2 Function None 19
       20(image):      8(ptr) FunctionParameter
      21(coords):     11(ptr) FunctionParameter
        22(data):     18(ptr) FunctionParameter
              24:             Label
              32:           7 Load 20(image)
              33:   10(ivec2) Load 27(in_coords)
              34:   12(fvec4) Load 22(data)
                              ImageWrite 32 33 34
                              Return
                              FunctionEnd
