Do not output location decoration for certain variables in ray tracing storage
authorAshwin Lele <alele@nvidia.com>
Mon, 6 Dec 2021 21:09:03 +0000 (13:09 -0800)
committerAshwin Lele <alele@nvidia.com>
Mon, 6 Dec 2021 21:09:03 +0000 (13:09 -0800)
classes.

18 files changed:
SPIRV/GlslangToSpv.cpp
Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
Test/baseResults/spv.MissShaderMotion.rmiss.out
Test/baseResults/spv.RayGenShaderMotion.rgen.out
Test/baseResults/spv.ext.AnyHitShader.rahit.out
Test/baseResults/spv.ext.ClosestHitShader.rchit.out
Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
Test/baseResults/spv.ext.MissShader.rmiss.out
Test/baseResults/spv.ext.RayCallable.rcall.out
Test/baseResults/spv.ext.RayConstants.rgen.out
Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
Test/baseResults/spv.ext.RayGenShader.rgen.out
Test/baseResults/spv.ext.RayGenShader11.rgen.out
Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
Test/baseResults/spv.ext.World3x4.rahit.out

index e471b9f..2a83b92 100644 (file)
@@ -8716,8 +8716,18 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
             builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutOffset);
     }
 
-    if (symbol->getQualifier().hasLocation())
-        builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
+    if (symbol->getQualifier().hasLocation()) {
+        if (!(glslangIntermediate->isRayTracingStage() && glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing)
+              && (builder.getStorageClass(id) == spv::StorageClassRayPayloadKHR ||
+                  builder.getStorageClass(id) == spv::StorageClassIncomingRayPayloadKHR ||
+                  builder.getStorageClass(id) == spv::StorageClassCallableDataKHR ||
+                  builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR))) {
+            // Location values are used to link TraceRayKHR and ExecuteCallableKHR to corresponding variables
+            // but are not valid in SPIRV since they are supported only for Input/Output Storage classes.
+            builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation);
+        }
+    }
+
     builder.addDecoration(id, TranslateInvariantDecoration(symbol->getType().getQualifier()));
     if (symbol->getQualifier().hasStream() && glslangIntermediate->isMultiStream()) {
         builder.addCapability(spv::CapabilityGeometryStreams);
index e89abb4..45679eb 100644 (file)
@@ -21,7 +21,6 @@ spv.ClosestHitShaderMotion.rchit
                               Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
                               Decorate 16(accEXT) DescriptorSet 0
                               Decorate 16(accEXT) Binding 0
-                              Decorate 32(incomingPayloadEXT) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
index 2f18338..185c934 100644 (file)
@@ -21,7 +21,6 @@ spv.MissShaderMotion.rmiss
                               Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
                               Decorate 16(accEXT) DescriptorSet 0
                               Decorate 16(accEXT) Binding 0
-                              Decorate 32(localPayloadEXT) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
index f9b9fa5..a6af236 100644 (file)
@@ -26,7 +26,6 @@ spv.RayGenShaderMotion.rgen
                               Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 29(accEXT) DescriptorSet 0
                               Decorate 29(accEXT) Binding 0
-                              Decorate 46(payloadEXT) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index 880be33..df779bd 100644 (file)
@@ -69,7 +69,6 @@ spv.ext.AnyHitShader.rahit
                               Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
                               Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
                               Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
-                              Decorate 84(incomingPayload) Location 1
                               Decorate 98(gl_SubgroupSize) RelaxedPrecision
                               Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
                               Decorate 99 RelaxedPrecision
index 40903e6..9a4eb28 100644 (file)
@@ -70,8 +70,6 @@ spv.ext.ClosestHitShader.rchit
                               Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
                               Decorate 85(accEXT) DescriptorSet 0
                               Decorate 85(accEXT) Binding 0
-                              Decorate 98(incomingPayload) Location 1
-                              Decorate 100(localPayload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index 7f5af89..24ab4f4 100644 (file)
@@ -34,7 +34,6 @@ spv.ext.ClosestHitShader_Subgroup.rchit
                               Name 61  "gl_SMIDNV"
                               Decorate 8(accEXT) DescriptorSet 0
                               Decorate 8(accEXT) Binding 0
-                              Decorate 26(incomingPayload) Location 1
                               Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 29 RelaxedPrecision
index d2dfc17..1acd5ae 100644 (file)
@@ -53,7 +53,6 @@ spv.ext.MissShader.rmiss
                               Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
                               Decorate 36(accEXT) DescriptorSet 0
                               Decorate 36(accEXT) Binding 0
-                              Decorate 51(incomingPayload) Location 1
                               Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize
                               Decorate 53(gl_SubGroupSizeARB) Volatile
                               Decorate 53(gl_SubGroupSizeARB) Coherent
@@ -67,7 +66,6 @@ spv.ext.MissShader.rmiss
                               Decorate 74(s2D) Binding 1
                               Decorate 78(c2) Location 2
                               Decorate 85(lodClamp) Location 3
-                              Decorate 89(localPayload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index d429116..50e7fd8 100644 (file)
@@ -22,8 +22,6 @@ spv.ext.RayCallable.rcall
                               Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                               Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                               Decorate 16(dataBlock) Block
-                              Decorate 18 Location 1
-                              Decorate 29(data0) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index afd5083..6ef9dd4 100644 (file)
@@ -15,7 +15,6 @@ spv.ext.RayConstants.rgen
                               Name 26  "payload"
                               Decorate 8(accEXT) DescriptorSet 0
                               Decorate 8(accEXT) Binding 0
-                              Decorate 26(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeAccelerationStructureKHR
index 95d9213..88e3c00 100644 (file)
@@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout.rgen
                               MemberDecorate 36(block) 9 Offset 120
                               MemberDecorate 36(block) 10 Offset 128
                               Decorate 36(block) Block
-                              Decorate 60(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index f5e32c1..ce5c306 100644 (file)
@@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout140.rgen
                               MemberDecorate 36(block) 9 Offset 136
                               MemberDecorate 36(block) 10 Offset 144
                               Decorate 36(block) Block
-                              Decorate 60(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index d952adf..7462abd 100644 (file)
@@ -49,7 +49,6 @@ spv.ext.RayGenSBTlayout430.rgen
                               MemberDecorate 36(block) 9 Offset 120
                               MemberDecorate 36(block) 10 Offset 128
                               Decorate 36(block) Block
-                              Decorate 60(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index c6d6530..3573455 100644 (file)
@@ -50,7 +50,6 @@ spv.ext.RayGenSBTlayoutscalar.rgen
                               MemberDecorate 36(block) 9 Offset 96
                               MemberDecorate 36(block) 10 Offset 104
                               Decorate 36(block) Block
-                              Decorate 60(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index bfaf64b..46f920a 100644 (file)
@@ -34,7 +34,6 @@ spv.ext.RayGenShader.rgen
                               MemberDecorate 38(block) 0 Offset 0
                               MemberDecorate 38(block) 1 Offset 16
                               Decorate 38(block) Block
-                              Decorate 53(payload) Location 1
                               Decorate 54(accEXT1) DescriptorSet 0
                               Decorate 54(accEXT1) Binding 1
                               Decorate 57(imageu) DescriptorSet 0
index 048b02b..b31ebd9 100644 (file)
@@ -30,7 +30,6 @@ spv.ext.RayGenShader11.rgen
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) Block
-                              Decorate 52(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
index ee39e35..08f72b2 100644 (file)
@@ -43,7 +43,6 @@ spv.ext.RayGenShaderArray.rgen
                               MemberDecorate 36(block) 3 Offset 32
                               MemberDecorate 36(block) 4 Offset 40
                               Decorate 36(block) Block
-                              Decorate 61(payload) Location 1
                               Decorate 65(accEXT1) DescriptorSet 0
                               Decorate 65(accEXT1) Binding 1
                               Decorate 80 DecorationNonUniformEXT
index 40d73d1..8c60912 100644 (file)
@@ -28,7 +28,6 @@ spv.ext.World3x4.rahit
                               Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
                               Decorate 78(result) DescriptorSet 0
                               Decorate 78(result) Binding 0
-                              Decorate 89(hitValue) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32