Bladeren bron

[spirv] Enforce SPIR-V 1.4 for SPV_KHR_ray_tracing. (#2877)

* Enforce SPIR-V 1.4 for SPV_KHR_ray_tracing.

* Update with review feedback 1.
alelenv 5 jaren geleden
bovenliggende
commit
64b6772812

+ 2 - 0
tools/clang/lib/SPIRV/CapabilityVisitor.cpp

@@ -523,6 +523,8 @@ bool CapabilityVisitor::visit(SpirvEntryPoint *entryPoint) {
       addCapability(spv::Capability::RayTracingNV);
       addCapability(spv::Capability::RayTracingNV);
       addExtension(Extension::NV_ray_tracing, "SPV_NV_ray_tracing", {});
       addExtension(Extension::NV_ray_tracing, "SPV_NV_ray_tracing", {});
     } else {
     } else {
+      // KHR_ray_tracing extension requires SPIR-V 1.4/Vulkan 1.2
+      featureManager.requestTargetEnv(SPV_ENV_VULKAN_1_2, "Raytracing", {});
       addCapability(spv::Capability::RayTracingProvisionalKHR);
       addCapability(spv::Capability::RayTracingProvisionalKHR);
       addExtension(Extension::KHR_ray_tracing, "SPV_KHR_ray_tracing", {});
       addExtension(Extension::KHR_ray_tracing, "SPV_KHR_ray_tracing", {});
     }
     }

+ 1 - 1
tools/clang/test/CodeGenSPIRV/raytracing.khr.closesthit.hlsl

@@ -1,4 +1,4 @@
-// Run: %dxc -T lib_6_3
+// Run: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
 // CHECK:  OpCapability RayTracingProvisionalKHR
 // CHECK:  OpCapability RayTracingProvisionalKHR
 // CHECK:  OpExtension "SPV_KHR_ray_tracing"
 // CHECK:  OpExtension "SPV_KHR_ray_tracing"
 // CHECK:  OpDecorate [[a:%\d+]] BuiltIn LaunchIdNV
 // CHECK:  OpDecorate [[a:%\d+]] BuiltIn LaunchIdNV

+ 1 - 1
tools/clang/test/CodeGenSPIRV/vk.layout.shader-record-nv.std430.hlsl

@@ -1,4 +1,4 @@
-// Run: %dxc -T lib_6_3 
+// Run: %dxc -T lib_6_3 -fspv-extension=SPV_NV_ray_tracing
 
 
 // CHECK: OpDecorate %_arr_v2float_uint_3 ArrayStride 8
 // CHECK: OpDecorate %_arr_v2float_uint_3 ArrayStride 8
 // CHECK: OpDecorate %_arr_mat3v2float_uint_2 ArrayStride 32
 // CHECK: OpDecorate %_arr_mat3v2float_uint_2 ArrayStride 32

+ 1 - 1
tools/clang/test/CodeGenSPIRV/vk.shader-record-nv.hlsl

@@ -1,4 +1,4 @@
-// Run: %dxc -T lib_6_3
+// Run: %dxc -T lib_6_3 -fspv-extension=SPV_NV_ray_tracing
 
 
 struct T {
 struct T {
     float2 val[3];
     float2 val[3];

+ 1 - 1
tools/clang/test/CodeGenSPIRV/vk.shader-record-nv.offset.hlsl

@@ -1,4 +1,4 @@
-// Run: %dxc -T lib_6_3
+// Run: %dxc -T lib_6_3 -fspv-extension=SPV_NV_ray_tracing
 
 
 // CHECK: OpMemberDecorate %type_ShaderRecordBufferNV_S 0 Offset 0
 // CHECK: OpMemberDecorate %type_ShaderRecordBufferNV_S 0 Offset 0
 // CHECK: OpMemberDecorate %type_ShaderRecordBufferNV_S 1 Offset 8
 // CHECK: OpMemberDecorate %type_ShaderRecordBufferNV_S 1 Offset 8

+ 1 - 0
tools/clang/unittests/SPIRV/CodeGenSpirvTest.cpp

@@ -2112,6 +2112,7 @@ TEST_F(FileTest, RayTracingNVLibrary) {
 
 
 // === Raytracing KHR examples ===
 // === Raytracing KHR examples ===
 TEST_F(FileTest, RayTracingKHRClosestHit) {
 TEST_F(FileTest, RayTracingKHRClosestHit) {
+  useVulkan1p2();
   runFileTest("raytracing.khr.closesthit.hlsl");
   runFileTest("raytracing.khr.closesthit.hlsl");
 }
 }