diff options
| author | Yong He <yonghe@outlook.com> | 2023-09-13 09:48:32 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-13 09:48:32 -0700 |
| commit | d2466a602774fcaec063e2f8cdbf86fd5e160a21 (patch) | |
| tree | 13d453cbf79c51ddba4131453da89055fe9740af /tests/vkray | |
| parent | c0a77c360436c4f1ec4d284e331063c35bdf95ad (diff) | |
Add all RayQuery SPIRV Intrinsics. (#3204)
* Add all RayQuery SPIRV Intrinsics.
* Fix
* Fix.
* fix.
* Fix.
* Fix.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tests/vkray')
| -rw-r--r-- | tests/vkray/anyhit.slang | 10 | ||||
| -rw-r--r-- | tests/vkray/callable.slang | 11 | ||||
| -rw-r--r-- | tests/vkray/callable.slang.glsl | 24 | ||||
| -rw-r--r-- | tests/vkray/closesthit.slang | 17 | ||||
| -rw-r--r-- | tests/vkray/closesthit.slang.glsl | 71 | ||||
| -rw-r--r-- | tests/vkray/entry-point-params.slang | 10 | ||||
| -rw-r--r-- | tests/vkray/entry-point-params.slang.glsl | 38 |
7 files changed, 44 insertions, 137 deletions
diff --git a/tests/vkray/anyhit.slang b/tests/vkray/anyhit.slang index 515c66f14..baafb00a0 100644 --- a/tests/vkray/anyhit.slang +++ b/tests/vkray/anyhit.slang @@ -5,7 +5,7 @@ // where we cannot infer the required SPIR-V version from the code // (and glslang doesn't include any such inference ability). -//TEST:CROSS_COMPILE: -profile glsl_460+spirv_1_4 -stage anyhit -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+spirv_1_4 -stage anyhit -entry main -target spirv-assembly struct SphereHitAttributes { @@ -45,3 +45,11 @@ void main( } } } + +// CHECK: OpCapability RayTracing +// CHECK: OpEntryPoint AnyHitNV %main "main" +// CHECK: %_ptr_HitAttributeNV_SphereHitAttributes_0 = OpTypePointer HitAttributeNV %SphereHitAttributes_0 +// CHECK: %_S{{.*}} = OpVariable %_ptr_HitAttributeNV_SphereHitAttributes_0 HitAttributeNV +// CHECK: %{{.*}} = OpAccessChain %_ptr_HitAttributeNV_v3float %_S{{.*}} %int_0 +// CHECK: OpTerminateRayKHR +// CHECK: OpIgnoreIntersectionKHR diff --git a/tests/vkray/callable.slang b/tests/vkray/callable.slang index 5fdbd0eb5..0f96266f6 100644 --- a/tests/vkray/callable.slang +++ b/tests/vkray/callable.slang @@ -1,6 +1,6 @@ // callable.slang -//TEST:CROSS_COMPILE: -profile glsl_460+spirv_1_4 -stage callable -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+spirv_1_4 -stage callable -entry main -target spirv-assembly import callable_shared; @@ -14,3 +14,12 @@ void main(in out MaterialPayload ioPayload) ioPayload.uv, 0); } + +// CHECK: OpCapability RayTracingKHR +// CHECK: OpExtension "SPV_KHR_ray_tracing" +// CHECK: OpEntryPoint CallableNV %main +// CHECK: %_ptr_IncomingCallableDataNV_MaterialPayload_0 = OpTypePointer IncomingCallableDataNV %MaterialPayload_0 +// CHECK: %_ptr_IncomingCallableDataNV_v2float = OpTypePointer IncomingCallableDataNV %v2float +// CHECK: %_ptr_IncomingCallableDataNV_v4float = OpTypePointer IncomingCallableDataNV %v4float +// CHECK: %{{.*}} = OpAccessChain %_ptr_IncomingCallableDataNV_v2float %_S1 %int_1 +// CHECK: %{{.*}} = OpAccessChain %_ptr_IncomingCallableDataNV_v4float %_S1 %int_0 diff --git a/tests/vkray/callable.slang.glsl b/tests/vkray/callable.slang.glsl deleted file mode 100644 index 871ffcbb7..000000000 --- a/tests/vkray/callable.slang.glsl +++ /dev/null @@ -1,24 +0,0 @@ -#version 460 -#extension GL_EXT_ray_tracing : require -layout(row_major) uniform; -layout(row_major) buffer; -layout(binding = 0) -uniform texture2D gAlbedoMap_0; - -layout(binding = 1) -uniform sampler gSampler_0; - -struct MaterialPayload_0 -{ - vec4 albedo_0; - vec2 uv_0; -}; - -callableDataInEXT MaterialPayload_0 _S1; - -void main() -{ - _S1.albedo_0 = (textureLod(sampler2D(gAlbedoMap_0,gSampler_0), (_S1.uv_0), (0.0))); - return; -} - diff --git a/tests/vkray/closesthit.slang b/tests/vkray/closesthit.slang index b1b73c94e..b2af4501c 100644 --- a/tests/vkray/closesthit.slang +++ b/tests/vkray/closesthit.slang @@ -1,5 +1,5 @@ // closesthit.slang -//TEST:CROSS_COMPILE: -profile glsl_460+GL_NV_ray_tracing -stage closesthit -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage closesthit -entry main -target spirv-assembly struct ReflectionRay { @@ -30,3 +30,18 @@ void main( ioPayload.color = color; } + +// 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 diff --git a/tests/vkray/closesthit.slang.glsl b/tests/vkray/closesthit.slang.glsl deleted file mode 100644 index bb3e81f87..000000000 --- a/tests/vkray/closesthit.slang.glsl +++ /dev/null @@ -1,71 +0,0 @@ -// closesthit.slang.glsl -#version 460 -#extension GL_NV_ray_tracing : require - -#define tmp_shaderrecord _S1 -#define tmp_colors StructuredBuffer_float4_t_0 -#define tmp_hitattrs _S2 -#define tmp_payload _S3 -#define tmp_customidx _S4 -#define tmp_instanceid _S5 -#define tmp_add_0 _S6 -#define tmp_primid _S7 -#define tmp_add_1 _S8 -#define tmp_hitkind _S9 -#define tmp_hitt _S10 -#define tmp_tmin _S11 - -struct SLANG_ParameterGroup_ShaderRecord_0 -{ - uint shaderRecordID_0; -}; - -layout(shaderRecordNV) -buffer tmp_shaderrecord -{ - uint shaderRecordID_0; -} ShaderRecord_0; - -layout(std430, binding = 0) readonly buffer tmp_colors -{ - vec4 _data[]; -} colors_0; - -struct BuiltInTriangleIntersectionAttributes_0 -{ - vec2 barycentrics_0; -}; - - -hitAttributeNV BuiltInTriangleIntersectionAttributes_0 tmp_hitattrs; - -struct ReflectionRay_0 -{ - vec4 color_0; -}; - -rayPayloadInNV ReflectionRay_0 tmp_payload; - -void main() -{ - uint tmp_instanceid = gl_InstanceID; - uint tmp_shift_0 = tmp_instanceid << 1; - - uint tmp_customidx = gl_InstanceCustomIndexNV; - - uint tmp_add_0 = tmp_shift_0 + tmp_customidx; - uint tmp_primid = gl_PrimitiveID; - - uint tmp_add_1 = tmp_add_0 + tmp_primid; - uint tmp_hitkind = gl_HitKindNV; - - vec4 color_1 = colors_0._data[tmp_add_1 + tmp_hitkind + ShaderRecord_0.shaderRecordID_0]; - - float tmp_hitt = gl_RayTmaxNV; - float tmp_tmin = gl_RayTminNV; - - tmp_payload.color_0 = color_1 * (tmp_hitt - tmp_tmin); - - return; -} - diff --git a/tests/vkray/entry-point-params.slang b/tests/vkray/entry-point-params.slang index 25ee29d0d..075692b19 100644 --- a/tests/vkray/entry-point-params.slang +++ b/tests/vkray/entry-point-params.slang @@ -3,7 +3,7 @@ // Test that entry-point `uniform` parameters on ray-tracing // shaders properly map to the "shader record" in SPIR-V output. -//TEST:CROSS_COMPILE: -profile glsl_460+spirv_1_4 -stage raygeneration -entry main -target spirv-assembly +//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+spirv_1_4 -stage raygeneration -entry main -target spirv-assembly RWStructuredBuffer<float> buffer; @@ -12,3 +12,11 @@ void main( { buffer[DispatchRaysIndex().x] = value; } + +// 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 diff --git a/tests/vkray/entry-point-params.slang.glsl b/tests/vkray/entry-point-params.slang.glsl deleted file mode 100644 index a505b337e..000000000 --- a/tests/vkray/entry-point-params.slang.glsl +++ /dev/null @@ -1,38 +0,0 @@ -//TEST_IGNORE_FILE: -#version 460 - -#if USE_NV_RT -#extension GL_NV_ray_tracing : require -#define callableDataInEXT callableDataInNV -#define gl_LaunchIDEXT gl_LaunchIDNV -#define hitAttributeEXT hitAttributeNV -#define ignoreIntersectionEXT ignoreIntersectionNV -#define rayPayloadInEXT rayPayloadInNV -#define shaderRecordEXT shaderRecordNV -#define terminateRayEXT terminateRayNV -#else -#extension GL_EXT_ray_tracing : require -#endif - -layout(std430, binding = 0) -buffer StructuredBuffer_float_t_0 { - float _data[]; -} buffer_0; - -struct EntryPointParams_0 -{ - float value_0; -}; - -layout(shaderRecordEXT) -buffer _S1 -{ - float value_0; -} _S2; - -void main() -{ - uvec3 _S3 = gl_LaunchIDEXT; - buffer_0._data[_S3.x] = _S2.value_0; - return; -} |
