Bläddra i källkod

[spirv] Fix target env error message. (#3346)

Ehsan 4 år sedan
förälder
incheckning
bcf56f2670

+ 1 - 1
tools/clang/lib/SPIRV/FeatureManager.cpp

@@ -97,7 +97,7 @@ bool FeatureManager::requestTargetEnv(spv_target_env requestedEnv,
                                       SourceLocation srcLoc) {
   if (targetEnv < requestedEnv) {
     emitError("%0 is required for %1 but not permitted to use", srcLoc)
-        << (requestedEnv == SPV_ENV_VULKAN_1_2 ? "Vulkan 1.2" : "Vulkan 1.1")
+        << (requestedEnv > SPV_ENV_VULKAN_1_1 ? "Vulkan 1.2" : "Vulkan 1.1")
         << target;
     emitNote("please specify your target environment via command line option "
              "-fspv-target-env=",

+ 27 - 0
tools/clang/test/CodeGenSPIRV/raytracing.target-env-error.hlsl

@@ -0,0 +1,27 @@
+// Run: %dxc -T lib_6_3
+
+// CHECK: error: Vulkan 1.2 is required for Raytracing but not permitted to use
+
+struct Payload {
+  float4 color;
+};
+struct CallData {
+  float4 data;
+};
+struct Attribute {
+  float2 bary;
+};
+
+RaytracingAccelerationStructure rs;
+[shader("closesthit")]
+void main(inout Payload MyPayload, in Attribute MyAttr) {
+  Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
+  CallData myCallData = { float4(0.0f,0.0f,0.0f,0.0f) };
+  RayDesc rayDesc;
+  rayDesc.Origin = float3(0.0f, 0.0f, 0.0f);
+  rayDesc.Direction = float3(0.0f, 0.0f, -1.0f);
+  rayDesc.TMin = 0.0f;
+  rayDesc.TMax = 1000.0f;
+  TraceRay(rs, 0x0, 0xff, 0, 1, 0, rayDesc, myPayload);
+  CallShader(0, myCallData);
+}

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

@@ -2269,6 +2269,10 @@ TEST_F(FileTest, RayTracingTerminate) {
   runFileTest("raytracing.khr.terminate.hlsl");
 }
 
+TEST_F(FileTest, RayTracingTargetEnvErro) {
+  runFileTest("raytracing.target-env-error.hlsl", Expect::Failure);
+}
+
 // For decoration uniqueness
 TEST_F(FileTest, DecorationUnique) { runFileTest("decoration.unique.hlsl"); }