mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-10 04:20:06 +00:00
Merge pull request #2166 from alelenv/rq_lvalue_fix
Error out assignments to objects of rayQueryEXT type.
This commit is contained in:
commit
e7c94f4973
@ -1,200 +0,0 @@
|
||||
rayQuery-decls.rgen
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80008
|
||||
// Id's are bound by 130
|
||||
|
||||
Capability RayQueryProvisionalKHR
|
||||
Capability RayTracingNV
|
||||
Extension "SPV_KHR_ray_query"
|
||||
Extension "SPV_NV_ray_tracing"
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint RayGenerationKHR 4 "main" 12 17
|
||||
Source GLSL 460
|
||||
SourceExtension "GL_EXT_ray_query"
|
||||
SourceExtension "GL_NV_ray_tracing"
|
||||
Name 4 "main"
|
||||
Name 8 "launchIndex("
|
||||
Name 12 "gl_LaunchIDNV"
|
||||
Name 17 "gl_LaunchSizeNV"
|
||||
Name 38 "index"
|
||||
Name 42 "Ray"
|
||||
MemberName 42(Ray) 0 "pos"
|
||||
MemberName 42(Ray) 1 "tmin"
|
||||
MemberName 42(Ray) 2 "dir"
|
||||
MemberName 42(Ray) 3 "tmax"
|
||||
Name 44 "ray"
|
||||
Name 45 "Ray"
|
||||
MemberName 45(Ray) 0 "pos"
|
||||
MemberName 45(Ray) 1 "tmin"
|
||||
MemberName 45(Ray) 2 "dir"
|
||||
MemberName 45(Ray) 3 "tmax"
|
||||
Name 47 "Rays"
|
||||
MemberName 47(Rays) 0 "rays"
|
||||
Name 49 ""
|
||||
Name 73 "g_rayQueryArray"
|
||||
Name 74 "block"
|
||||
MemberName 74(block) 0 "idx"
|
||||
Name 76 ""
|
||||
Name 81 "rayQuery0b"
|
||||
Name 86 "rayQuery0a"
|
||||
Name 89 "rayQuery0c"
|
||||
Name 96 "rtas"
|
||||
Name 107 "rayQuery1c"
|
||||
Name 129 "g_rayQueryUnused"
|
||||
Decorate 12(gl_LaunchIDNV) BuiltIn LaunchIdKHR
|
||||
Decorate 17(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
|
||||
MemberDecorate 45(Ray) 0 Offset 0
|
||||
MemberDecorate 45(Ray) 1 Offset 12
|
||||
MemberDecorate 45(Ray) 2 Offset 16
|
||||
MemberDecorate 45(Ray) 3 Offset 28
|
||||
Decorate 46 ArrayStride 32
|
||||
MemberDecorate 47(Rays) 0 Offset 0
|
||||
Decorate 47(Rays) BufferBlock
|
||||
Decorate 49 DescriptorSet 0
|
||||
Decorate 49 Binding 2
|
||||
MemberDecorate 74(block) 0 Offset 0
|
||||
Decorate 74(block) BufferBlock
|
||||
Decorate 96(rtas) DescriptorSet 0
|
||||
Decorate 96(rtas) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: TypeFunction 6(int)
|
||||
10: TypeVector 6(int) 3
|
||||
11: TypePointer Input 10(ivec3)
|
||||
12(gl_LaunchIDNV): 11(ptr) Variable Input
|
||||
13: 6(int) Constant 2
|
||||
14: TypePointer Input 6(int)
|
||||
17(gl_LaunchSizeNV): 11(ptr) Variable Input
|
||||
18: 6(int) Constant 0
|
||||
22: 6(int) Constant 1
|
||||
37: TypePointer Function 6(int)
|
||||
40: TypeFloat 32
|
||||
41: TypeVector 40(float) 3
|
||||
42(Ray): TypeStruct 41(fvec3) 40(float) 41(fvec3) 40(float)
|
||||
43: TypePointer Function 42(Ray)
|
||||
45(Ray): TypeStruct 41(fvec3) 40(float) 41(fvec3) 40(float)
|
||||
46: TypeRuntimeArray 45(Ray)
|
||||
47(Rays): TypeStruct 46
|
||||
48: TypePointer Uniform 47(Rays)
|
||||
49: 48(ptr) Variable Uniform
|
||||
50: TypeInt 32 1
|
||||
51: 50(int) Constant 0
|
||||
53: TypePointer Uniform 45(Ray)
|
||||
57: TypePointer Function 41(fvec3)
|
||||
60: 50(int) Constant 1
|
||||
61: TypePointer Function 40(float)
|
||||
64: 50(int) Constant 2
|
||||
67: 50(int) Constant 3
|
||||
69: TypeRayQueryProvisionalKHR
|
||||
70: 6(int) Constant 4
|
||||
71: TypeArray 69 70
|
||||
72: TypePointer Function 71
|
||||
74(block): TypeStruct 6(int)
|
||||
75: TypePointer ShaderRecordBufferKHR 74(block)
|
||||
76: 75(ptr) Variable ShaderRecordBufferKHR
|
||||
77: TypePointer ShaderRecordBufferKHR 6(int)
|
||||
80: TypePointer Function 69
|
||||
94: TypeAccelerationStructureKHR
|
||||
95: TypePointer UniformConstant 94
|
||||
96(rtas): 95(ptr) Variable UniformConstant
|
||||
98: 6(int) Constant 16
|
||||
109: 6(int) Constant 32
|
||||
119: 6(int) Constant 3
|
||||
120: 6(int) Constant 64
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
38(index): 37(ptr) Variable Function
|
||||
44(ray): 43(ptr) Variable Function
|
||||
73(g_rayQueryArray): 72(ptr) Variable Function
|
||||
81(rayQuery0b): 80(ptr) Variable Function
|
||||
86(rayQuery0a): 80(ptr) Variable Function
|
||||
89(rayQuery0c): 80(ptr) Variable Function
|
||||
107(rayQuery1c): 80(ptr) Variable Function
|
||||
129(g_rayQueryUnused): 80(ptr) Variable Function
|
||||
39: 6(int) FunctionCall 8(launchIndex()
|
||||
Store 38(index) 39
|
||||
52: 6(int) Load 38(index)
|
||||
54: 53(ptr) AccessChain 49 51 52
|
||||
55: 45(Ray) Load 54
|
||||
56: 41(fvec3) CompositeExtract 55 0
|
||||
58: 57(ptr) AccessChain 44(ray) 51
|
||||
Store 58 56
|
||||
59: 40(float) CompositeExtract 55 1
|
||||
62: 61(ptr) AccessChain 44(ray) 60
|
||||
Store 62 59
|
||||
63: 41(fvec3) CompositeExtract 55 2
|
||||
65: 57(ptr) AccessChain 44(ray) 64
|
||||
Store 65 63
|
||||
66: 40(float) CompositeExtract 55 3
|
||||
68: 61(ptr) AccessChain 44(ray) 67
|
||||
Store 68 66
|
||||
78: 77(ptr) AccessChain 76 51
|
||||
79: 6(int) Load 78
|
||||
82: 69 Load 81(rayQuery0b)
|
||||
83: 80(ptr) AccessChain 73(g_rayQueryArray) 79
|
||||
Store 83 82
|
||||
84: 77(ptr) AccessChain 76 51
|
||||
85: 6(int) Load 84
|
||||
87: 69 Load 86(rayQuery0a)
|
||||
88: 80(ptr) AccessChain 73(g_rayQueryArray) 85
|
||||
Store 88 87
|
||||
90: 77(ptr) AccessChain 76 51
|
||||
91: 6(int) Load 90
|
||||
92: 80(ptr) AccessChain 73(g_rayQueryArray) 91
|
||||
93: 69 Load 92
|
||||
Store 89(rayQuery0c) 93
|
||||
97: 94 Load 96(rtas)
|
||||
99: 57(ptr) AccessChain 44(ray) 51
|
||||
100: 41(fvec3) Load 99
|
||||
101: 61(ptr) AccessChain 44(ray) 60
|
||||
102: 40(float) Load 101
|
||||
103: 57(ptr) AccessChain 44(ray) 64
|
||||
104: 41(fvec3) Load 103
|
||||
105: 61(ptr) AccessChain 44(ray) 67
|
||||
106: 40(float) Load 105
|
||||
RayQueryInitializeKHR 89(rayQuery0c) 97 22 98 100 102 104 106
|
||||
108: 94 Load 96(rtas)
|
||||
110: 57(ptr) AccessChain 44(ray) 51
|
||||
111: 41(fvec3) Load 110
|
||||
112: 61(ptr) AccessChain 44(ray) 60
|
||||
113: 40(float) Load 112
|
||||
114: 57(ptr) AccessChain 44(ray) 64
|
||||
115: 41(fvec3) Load 114
|
||||
116: 61(ptr) AccessChain 44(ray) 67
|
||||
117: 40(float) Load 116
|
||||
RayQueryInitializeKHR 107(rayQuery1c) 108 22 109 111 113 115 117
|
||||
118: 94 Load 96(rtas)
|
||||
121: 57(ptr) AccessChain 44(ray) 51
|
||||
122: 41(fvec3) Load 121
|
||||
123: 61(ptr) AccessChain 44(ray) 60
|
||||
124: 40(float) Load 123
|
||||
125: 57(ptr) AccessChain 44(ray) 64
|
||||
126: 41(fvec3) Load 125
|
||||
127: 61(ptr) AccessChain 44(ray) 67
|
||||
128: 40(float) Load 127
|
||||
RayQueryInitializeKHR 107(rayQuery1c) 118 119 120 122 124 126 128
|
||||
Return
|
||||
FunctionEnd
|
||||
8(launchIndex(): 6(int) Function None 7
|
||||
9: Label
|
||||
15: 14(ptr) AccessChain 12(gl_LaunchIDNV) 13
|
||||
16: 6(int) Load 15
|
||||
19: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 18
|
||||
20: 6(int) Load 19
|
||||
21: 6(int) IMul 16 20
|
||||
23: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 22
|
||||
24: 6(int) Load 23
|
||||
25: 6(int) IMul 21 24
|
||||
26: 14(ptr) AccessChain 12(gl_LaunchIDNV) 22
|
||||
27: 6(int) Load 26
|
||||
28: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 18
|
||||
29: 6(int) Load 28
|
||||
30: 6(int) IMul 27 29
|
||||
31: 6(int) IAdd 25 30
|
||||
32: 14(ptr) AccessChain 12(gl_LaunchIDNV) 18
|
||||
33: 6(int) Load 32
|
||||
34: 6(int) IAdd 31 33
|
||||
ReturnValue 34
|
||||
FunctionEnd
|
@ -1,53 +0,0 @@
|
||||
#version 460
|
||||
#extension GL_NV_ray_tracing : enable
|
||||
#extension GL_EXT_ray_query : enable
|
||||
|
||||
struct Ray
|
||||
{
|
||||
vec3 pos;
|
||||
float tmin;
|
||||
vec3 dir;
|
||||
float tmax;
|
||||
};
|
||||
|
||||
layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas;
|
||||
layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
|
||||
layout(shaderRecordNV) buffer block
|
||||
{
|
||||
uint idx;
|
||||
};
|
||||
|
||||
uint launchIndex()
|
||||
{
|
||||
return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x;
|
||||
}
|
||||
|
||||
rayQueryEXT g_rayQueryArray[4];
|
||||
rayQueryEXT g_rayQueryUnused;
|
||||
|
||||
void main()
|
||||
{
|
||||
uint index = launchIndex();
|
||||
Ray ray = rays[index];
|
||||
|
||||
rayQueryEXT rayQuery0a;
|
||||
rayQueryEXT rayQuery0b;
|
||||
|
||||
g_rayQueryArray[idx] = rayQuery0b; // Stored here, then overwritten with rayQuery0a
|
||||
g_rayQueryArray[idx] = rayQuery0a;
|
||||
|
||||
// No separate allocation, just a handle copy
|
||||
// optimizations should have eliminated load from global array
|
||||
rayQueryEXT rayQuery0c = g_rayQueryArray[idx];
|
||||
|
||||
// rayQuery0a is the one actually used here
|
||||
rayQueryInitializeEXT(rayQuery0c, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
|
||||
|
||||
// AllocateRayQuery occurs here, rather than next to allocas
|
||||
// Should not be extray allocate, since above should allocate and copy
|
||||
rayQueryEXT rayQuery1c;
|
||||
// update the rayFlags as RAY_FLAG_FORCE_OPAQUE
|
||||
rayQueryInitializeEXT(rayQuery1c, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
|
||||
|
||||
rayQueryInitializeEXT(rayQuery1c, rtas, gl_RayFlagsOpaqueEXT|gl_RayFlagsNoOpaqueEXT, gl_RayFlagsCullOpaqueEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
|
||||
}
|
@ -184,6 +184,9 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op,
|
||||
case EbtAccStruct:
|
||||
message = "can't modify accelerationStructureNV";
|
||||
break;
|
||||
case EbtRayQuery:
|
||||
message = "can't modify rayQueryEXT";
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
|
@ -231,7 +231,6 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"spv.while-simple.vert",
|
||||
// vulkan-specific tests
|
||||
"rayQuery.rgen",
|
||||
"rayQuery-decls.rgen",
|
||||
"rayQuery-no-cse.rgen",
|
||||
"rayQuery-initialize.rgen",
|
||||
"rayQuery-allOps.rgen",
|
||||
|
Loading…
Reference in New Issue
Block a user