summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-09-28 18:08:06 -0700
committerGitHub <noreply@github.com>2023-09-28 18:08:06 -0700
commitaf61737e7ba107e9e92164bf39ce6ab34e05ce82 (patch)
tree37747b26fb951548256669124adb83c0246a8f32 /tests
parentb7d318f48db2cb83a41d665f1727ae93fc555124 (diff)
[Direct SPIRV]: ray tracing pipeline intrinsics. (#3244)
* Use a dedicated inst opcode to retrieve ray payload locations. * [Direct SPIRV]: ray tracing pipeline intrinsics. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/vkray/closesthit.slang25
-rw-r--r--tests/vkray/entry-point-params.slang9
-rw-r--r--tests/vkray/intersection.slang13
-rw-r--r--tests/vkray/raygen.slang8
4 files changed, 35 insertions, 20 deletions
diff --git a/tests/vkray/closesthit.slang b/tests/vkray/closesthit.slang
index b2af4501c..7ec3199e2 100644
--- a/tests/vkray/closesthit.slang
+++ b/tests/vkray/closesthit.slang
@@ -1,5 +1,6 @@
// closesthit.slang
//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage closesthit -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly
struct ReflectionRay
{
@@ -33,15 +34,15 @@ void main(
// CHECK: OpCapability RayTracing
// CHECK: OpEntryPoint ClosestHitNV %main "main"
-// CHECK: OpDecorate %gl_InstanceID BuiltIn InstanceId
-// CHECK: OpDecorate %gl_InstanceCustomIndexNV BuiltIn InstanceCustomIndexNV
-// CHECK: OpDecorate %gl_PrimitiveID BuiltIn PrimitiveId
-// CHECK: OpDecorate %gl_HitKindNV BuiltIn HitKindNV
-// CHECK: OpDecorate %gl_RayTmaxNV BuiltIn RayTmaxNV
-// CHECK: OpDecorate %gl_RayTminNV BuiltIn RayTminNV
-// CHECK: %ShaderRecord_0 = OpVariable %_ptr_ShaderRecordBufferNV__S{{.*}} ShaderRecordBufferNV
-// CHECK: %{{.*}} = OpVariable %_ptr_IncomingRayPayloadNV_ReflectionRay_0 IncomingRayPayloadNV
-// CHECK: %{{.*}} = OpLoad %int %gl_InstanceID
-// CHECK: %{{.*}} = OpLoad %int %gl_InstanceCustomIndexNV
-// CHECK: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_uint %ShaderRecord_0 %int_0
-// CHECK: %{{.*}} = OpAccessChain %_ptr_IncomingRayPayloadNV_v4float %_S{{.*}} %int_0
+// CHECK-DAG: OpDecorate %[[INSTANCE_ID:[A-Za-z0-9_]+]] BuiltIn InstanceId
+// CHECK-DAG: OpDecorate %[[INSTANCE_INDEX:[A-Za-z0-9_]+]] BuiltIn InstanceCustomIndexNV
+// CHECK-DAG: OpDecorate %{{.*}} BuiltIn PrimitiveId
+// CHECK-DAG: OpDecorate %{{.*}} BuiltIn HitKindNV
+// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTmaxNV
+// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTminNV
+// CHECK-DAG: %ShaderRecord{{.*}} = OpVariable %_ptr_ShaderRecordBufferNV{{.*}} ShaderRecordBufferNV
+// CHECK-DAG: %{{.*}} = OpVariable %_ptr_IncomingRayPayloadNV_ReflectionRay{{.*}} IncomingRayPayloadNV
+// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_ID]]
+// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_INDEX]]
+// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_uint %ShaderRecord{{.*}} %int_0
+// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_IncomingRayPayloadNV_v4float %{{.*}} %int_0
diff --git a/tests/vkray/entry-point-params.slang b/tests/vkray/entry-point-params.slang
index 075692b19..993f2a3b7 100644
--- a/tests/vkray/entry-point-params.slang
+++ b/tests/vkray/entry-point-params.slang
@@ -4,6 +4,7 @@
// shaders properly map to the "shader record" in SPIR-V output.
//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+spirv_1_4 -stage raygeneration -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK): -stage raygeneration -entry main -target spirv-assembly -emit-spirv-directly
RWStructuredBuffer<float> buffer;
@@ -16,7 +17,7 @@ void main(
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpEntryPoint RayGenerationNV %main
-// CHECK: OpDecorate %gl_LaunchIDEXT BuiltIn LaunchIdNV
-// CHECK: %gl_LaunchIDEXT = OpVariable %_ptr_Input_v3uint Input
-// CHECK: %{{.*}} = OpLoad %v3uint %gl_LaunchIDEXT
-// CHECK: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_float %_S2 %int_0
+// CHECK-DAG: OpDecorate %[[LaunchID:[A-Za-z0-9_]+]] BuiltIn LaunchIdNV
+// CHECK-DAG: %[[LaunchID]] = OpVariable %_ptr_Input_v3uint Input
+// CHECK-DAG: %{{.*}} = OpLoad %v3uint %[[LaunchID]]
+// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_float %{{.*}} %int_0
diff --git a/tests/vkray/intersection.slang b/tests/vkray/intersection.slang
index 65705c845..4b4495680 100644
--- a/tests/vkray/intersection.slang
+++ b/tests/vkray/intersection.slang
@@ -1,6 +1,6 @@
// intersection.slang
-//TEST:CROSS_COMPILE: -profile glsl_460+GL_NV_ray_tracing -stage intersection -entry main -target spirv-assembly
-
+//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage intersection -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK): -emit-spirv-directly -stage intersection -entry main -target spirv-assembly
struct Sphere
{
float3 position;
@@ -45,3 +45,12 @@ void main()
ReportHit(tHit, 0, attrs);
}
}
+
+// CHECK: OpEntryPoint IntersectionNV %main "main"
+// CHECK: OpDecorate %[[rayTMin:[a-zA-Z0-9_]+]] BuiltIn RayTminNV
+
+// CHECK-DAG: %[[ATTR:[A-Za-z0-9_]+]] = OpVariable %_ptr_HitAttributeNV_SphereHitAttributes{{.*}} HitAttributeNV
+// CHECK-DAG: %[[VAL:[A-Za-z0-9_]+]] = Op{{.+}} %SphereHitAttributes{{.*}} {{.*}}
+// CHECK-DAG: OpStore %[[ATTR]] %[[VAL]]
+
+// CHECK-DAG: OpReportIntersectionKHR
diff --git a/tests/vkray/raygen.slang b/tests/vkray/raygen.slang
index ac82ccf1a..84260611b 100644
--- a/tests/vkray/raygen.slang
+++ b/tests/vkray/raygen.slang
@@ -1,4 +1,5 @@
//TEST:CROSS_COMPILE: -profile glsl_460+GL_EXT_ray_tracing -stage raygeneration -entry main -target spirv-assembly
+//TEST:SIMPLE(filecheck=CHECK): -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly
#define TRACING_EPSILON 1e-6
@@ -46,8 +47,8 @@ void main()
(float(gl_LaunchIDNV.y) + 0.5f) / float(gl_LaunchSizeNV.y)
);
- float3 P = samplerPosition.Sample(sampler, inUV).rgb;
- float3 N = samplerNormal.Sample(sampler, inUV).rgb * 2.0 - 1.0;
+ float3 P = samplerPosition.SampleLevel(sampler, inUV, 0).rgb;
+ float3 N = samplerNormal.SampleLevel(sampler, inUV, 0).rgb * 2.0 - 1.0;
float3 lightPos = ubo.light.position.xyz;
float3 lightDelta = lightPos - P;
@@ -114,3 +115,6 @@ void main()
outputImage[int2(gl_LaunchIDNV.xy)] = float4(color, 1.0);
}
+
+// CHECK: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload
+// CHECK: OpTraceRayKHR