From f986436a905725bfe88dfd219d64e509c3b9f597 Mon Sep 17 00:00:00 2001 From: alelenv Date: Mon, 30 Mar 2020 10:24:30 -0700 Subject: [PATCH] Error assigns to objects of rayQueryEXT type. --- Test/baseResults/rayQuery-decls.rgen.out | 200 ------------------ Test/rayQuery-decls.rgen | 53 ----- .../MachineIndependent/ParseContextBase.cpp | 3 + gtests/Spv.FromFile.cpp | 1 - 4 files changed, 3 insertions(+), 254 deletions(-) delete mode 100644 Test/baseResults/rayQuery-decls.rgen.out delete mode 100644 Test/rayQuery-decls.rgen diff --git a/Test/baseResults/rayQuery-decls.rgen.out b/Test/baseResults/rayQuery-decls.rgen.out deleted file mode 100644 index aa6641145..000000000 --- a/Test/baseResults/rayQuery-decls.rgen.out +++ /dev/null @@ -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 diff --git a/Test/rayQuery-decls.rgen b/Test/rayQuery-decls.rgen deleted file mode 100644 index 34e550f28..000000000 --- a/Test/rayQuery-decls.rgen +++ /dev/null @@ -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); -} diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 81842d83b..b46400914 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -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; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 63f0c0ea2..7b2b45749 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -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",