diff options
Diffstat (limited to 'tests/vkray')
| -rw-r--r-- | tests/vkray/raygen-trace-ray-param-non-struct.slang | 94 | ||||
| -rw-r--r-- | tests/vkray/raygen-trace-ray-param-struct.slang | 76 | ||||
| -rw-r--r-- | tests/vkray/raygen.slang | 16 |
3 files changed, 182 insertions, 4 deletions
diff --git a/tests/vkray/raygen-trace-ray-param-non-struct.slang b/tests/vkray/raygen-trace-ray-param-non-struct.slang new file mode 100644 index 000000000..c4451d941 --- /dev/null +++ b/tests/vkray/raygen-trace-ray-param-non-struct.slang @@ -0,0 +1,94 @@ +//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage raygeneration -entry main + +RaytracingAccelerationStructure as; + +RWStructuredBuffer<float> outputBuffer1; + +// addComplexity ensures the code does not optimize any `someInData1` +void addComplexity1(inout float someInData1) +{ + someInData1 = outputBuffer1[1]; +} +void addComplexity2(float dataIn) +{ + outputBuffer1[2] = dataIn; +} + +void main() +{ + RayDesc ray; + ray.Origin = float3(0); + ray.TMin = 1e-6; + ray.Direction = float3(0,0,1); + ray.TMax = 100.0f; + + // CHECK: ForceVarIntoStructTemporarily_t{{_[0-9]}} forceVarIntoStructTemporarily{{_[0-9]}}; + float someInData1 = 5.0f; + addComplexity1(someInData1); + + // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}} + // CHECK: TraceRay( + // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}}; + TraceRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1; + + // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}} + // CHECK: TraceMotionRay( + // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}}; + TraceMotionRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + 0.0f, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1; + + // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}} + // CHECK: NvTraceRayHitObject( + // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}}; + HitObject::TraceRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1; + + // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}} + // CHECK: TraceMotionRay( + // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}}; + HitObject::TraceMotionRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + 0.0f, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1; + + // CHECK: forceVarIntoStructTemporarily{{_[0-9]}}.data{{_[0-9]}} = {{.*}} + // CHECK: NvInvokeHitObject( + // CHECK: {{.*}} = forceVarIntoStructTemporarily{{.*}}.data{{.*}}; + HitObject hitObject_HitOrMiss; + HitObject::Invoke( + as, + hitObject_HitOrMiss, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1; + + addComplexity2(someInData1); +}
\ No newline at end of file diff --git a/tests/vkray/raygen-trace-ray-param-struct.slang b/tests/vkray/raygen-trace-ray-param-struct.slang new file mode 100644 index 000000000..d9a6d134a --- /dev/null +++ b/tests/vkray/raygen-trace-ray-param-struct.slang @@ -0,0 +1,76 @@ +//TEST:SIMPLE(filecheck=CHECK): -target hlsl -stage raygeneration -entry main + +RaytracingAccelerationStructure as; + +struct testStruct +{ + int data; +} + +RWStructuredBuffer<int> outputBuffer1; + +void main() +{ + RayDesc ray; + ray.Origin = float3(0); + ray.TMin = 1e-6; + ray.Direction = float3(0,0,1); + ray.TMax = 100.0f; + + testStruct someInData1; + someInData1.data = 5; + + // CHECK: TraceRay( + TraceRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1.data; + + // CHECK: TraceMotionRay( + TraceMotionRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + 0.0f, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1.data; + + // CHECK: NvTraceRayHitObject( + HitObject::TraceRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1.data; + + // CHECK: TraceMotionRay( + HitObject::TraceMotionRay(as, + 1, + 0xff, + 0, + 0, + 2, + ray, + 0.0f, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1.data; + + // CHECK: NvInvokeHitObject( + HitObject hitObject_HitOrMiss; + HitObject::Invoke( + as, + hitObject_HitOrMiss, + someInData1); + outputBuffer1[0] = outputBuffer1[0]+someInData1.data; +}
\ No newline at end of file diff --git a/tests/vkray/raygen.slang b/tests/vkray/raygen.slang index 18ac74d4b..d63b3a668 100644 --- a/tests/vkray/raygen.slang +++ b/tests/vkray/raygen.slang @@ -1,5 +1,6 @@ -//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 +//TEST:SIMPLE(filecheck=CHECK_SPV): -emit-spirv-directly -stage raygeneration -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK_HLSL): -stage raygeneration -entry main -target hlsl +//TEST:SIMPLE(filecheck=CHECK_GLSL): -stage raygeneration -entry main -target glsl #define TRACING_EPSILON 1e-6 @@ -116,5 +117,12 @@ void main() outputImage[int2(gl_LaunchIDNV.xy)] = float4(color, 1.0); } -// CHECK: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload -// CHECK: OpTraceRayKHR +// CHECK_SPV: %{{.*}} = OpVariable %_ptr_RayPayload{{(NV)?}}_ReflectionRay{{.*}} RayPayload +// CHECK_SPV: OpTraceRayKHR +// CHECK_SPV: OpTraceRayKHR + +// CHECK_HLSL: TraceRay +// CHECK_HLSL: TraceRay + +// CHECK_GLSL: traceRayEXT( +// CHECK_GLSL: traceRayEXT(
\ No newline at end of file |
