rayQuery-global.rgen
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 44

                              Capability RayQueryKHR
                              Capability RayTracingKHR
                              Extension  "SPV_KHR_ray_query"
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main"
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_flags_primitive_culling"
                              SourceExtension  "GL_EXT_ray_query"
                              Name 4  "main"
                              Name 10  "otherWrapper(rq1;"
                              Name 9  "rq"
                              Name 13  "wrapper(rq1;"
                              Name 12  "rq"
                              Name 17  "rqGlobal"
                              Name 22  "rq2"
                              Name 27  "rtas"
                              Name 40  "rq2"
                              Decorate 27(rtas) DescriptorSet 0
                              Decorate 27(rtas) Binding 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeRayQueryKHR
               7:             TypePointer Private 6
               8:             TypeFunction 2 7(ptr)
              15:             TypeBool
    17(rqGlobal):      7(ptr) Variable Private
         22(rq2):      7(ptr) Variable Private
              25:             TypeAccelerationStructureKHR
              26:             TypePointer UniformConstant 25
        27(rtas):     26(ptr) Variable UniformConstant
              29:             TypeInt 32 0
              30:     29(int) Constant 0
              31:     29(int) Constant 255
              32:             TypeFloat 32
              33:             TypeVector 32(float) 3
              34:   32(float) Constant 0
              35:   33(fvec3) ConstantComposite 34 34 34
              36:   32(float) Constant 1065353216
              37:   33(fvec3) ConstantComposite 36 34 34
         40(rq2):      7(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
              28:          25 Load 27(rtas)
                              RayQueryInitializeKHR 17(rqGlobal) 28 30 31 35 34 37 36
              38:           2 FunctionCall 13(wrapper(rq1;) 17(rqGlobal)
              39:           2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
              41:          25 Load 27(rtas)
                              RayQueryInitializeKHR 40(rq2) 41 30 31 35 34 37 36
              42:           2 FunctionCall 13(wrapper(rq1;) 40(rq2)
              43:           2 FunctionCall 10(otherWrapper(rq1;) 40(rq2)
                              Return
                              FunctionEnd
10(otherWrapper(rq1;):           2 Function None 8
           9(rq):      7(ptr) FunctionParameter
              11:             Label
              16:    15(bool) RayQueryProceedKHR 9(rq)
              18:    15(bool) RayQueryProceedKHR 17(rqGlobal)
                              Return
                              FunctionEnd
13(wrapper(rq1;):           2 Function None 8
          12(rq):      7(ptr) FunctionParameter
              14:             Label
              19:    15(bool) RayQueryProceedKHR 12(rq)
              20:    15(bool) RayQueryProceedKHR 17(rqGlobal)
              21:           2 FunctionCall 10(otherWrapper(rq1;) 12(rq)
              23:           2 FunctionCall 10(otherWrapper(rq1;) 22(rq2)
              24:           2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
                              Return
                              FunctionEnd
