[SPIR-V] Enable rayquery tests (#6627)

These tests were previously marked as "unsupported" because they were
misconfigured at the time they were added and never run. Minor changes
have been made to make them passing tests.

Note that rayquery_assign.cs.hlsl has been removed because it no longer
produces an error. A similar non-erroring check exists in
rayquery_init_expr.hlsl

Related to #6616
This commit is contained in:
Natalie Chouinard 2024-05-17 09:33:42 -04:00 коммит произвёл GitHub
Родитель 83ba82e1f3
Коммит d64f5f2699
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
14 изменённых файлов: 95 добавлений и 81 удалений

Просмотреть файл

@ -1,4 +1,5 @@
// RUN: %dxc -T cs_6_5 -E main -fspv-target-env=vulkan1.2
// RUN: %dxc -T cs_6_5 -E main -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
RaytracingAccelerationStructure g_topLevel : register(t0, space0);
RWTexture2D<float4> g_output : register(u1, space0);
@ -17,11 +18,11 @@ void main(uint2 launchIndex: SV_DispatchThreadID)
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
q.TraceRayInline(g_topLevel, 0, 0xff, ray);
// CHECK: [[rayquery:%\d+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
q.Proceed();
// CHECK: OpRayQueryProceedKHR %bool [[rayquery]]
if(q.CommittedStatus() == COMMITTED_TRIANGLE_HIT)
// CHECK: [[status:%\d+]] = OpRayQueryGetIntersectionTypeKHR %uint [[rayquery]] %uint_1
// CHECK: [[status:%[0-9]+]] = OpRayQueryGetIntersectionTypeKHR %uint [[rayquery]] %uint_1
// CHECK: OpIEqual %bool [[status]] %uint_1
{
T += float3(1, 0, 1);

Просмотреть файл

@ -1,4 +1,5 @@
// RUN: %dxc -T ds_6_5 -E main -fspv-target-env=vulkan1.2
// RUN: %dxc -T ds_6_5 -E main -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
@ -52,11 +53,12 @@ void doInitialize(RayQuery<RAY_FLAG_FORCE_OPAQUE> query, RayDesc ray)
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
return v;

Просмотреть файл

@ -1,4 +1,5 @@
// RUN: %dxc -T gs_6_5 -E main -fspv-target-env=vulkan1.2
// RUN: %dxc -T gs_6_5 -E main -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_query
@ -29,11 +30,12 @@ void main(line Empty e[4], inout PointStream<Out> OutputStream0)
{
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
Out output = (Out)0;

Просмотреть файл

@ -1,6 +1,6 @@
// RUN: %dxc -T hs_6_5 -E main -fspv-target-env=vulkan1.2
// RUN: %dxc -T hs_6_5 -E main -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpCapability RayTraversalPrimitiveCullingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
#define MAX_POINTS 3
@ -56,19 +56,20 @@ void doInitialize(RayQuery<RAY_FLAG_FORCE_OPAQUE|RAY_FLAG_SKIP_TRIANGLES> query,
query.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_NON_OPAQUE,0xFF,ray);
}
[outputtopology("triangle_ccw")]
[outputcontrolpoints(MAX_POINTS)]
[patchconstantfunc("mainConstant")]
CONTROL_POINT main(InputPatch<VS_CONTROL_POINT_OUTPUT, MAX_POINTS> ip, uint cpid : SV_OutputControlPointID) {
// CHECK: %rayQueryKHR = OpTypeRayQueryKHR
// CHECK: %_ptr_Function_rayQueryKHR = OpTypePointer Function %rayQueryKHR
// CHECK: [[rayquery:%\d+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
RayQuery<RAY_FLAG_FORCE_OPAQUE|RAY_FLAG_SKIP_TRIANGLES> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_517 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_257 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_259 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_259 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
CONTROL_POINT result;
return result;

Просмотреть файл

@ -1,6 +1,5 @@
// RUN: %dxc -E main -T ps_6_5 -fspv-target-env=vulkan1.2
// RUN: %dxc -E main -T ps_6_5 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// RUN: %dxc -T gs_6_5 -E main
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_query
@ -23,11 +22,12 @@ uint4 main() : SV_Target
{
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
return float4(1.0, 0.0, 0.0, 1.0);
}

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RayDesc MakeRayDesc()
@ -23,7 +24,7 @@ struct Payload
{
float4 color;
};
// CHECK: OpTypePointer HitAttributeNV %Attribute
struct Attribute
{
float2 bary;
@ -34,9 +35,10 @@ void main(inout Payload MyPayload, in Attribute MyAttr) {
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
}

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RayDesc MakeRayDesc()
@ -27,11 +28,12 @@ struct Payload
[shader("miss")]
void main(inout Payload MyPayload) {
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
}

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RayDesc MakeRayDesc()
@ -23,7 +24,7 @@ struct Payload
{
float4 color;
};
// CHECK: OpTypePointer HitAttributeNV %Attribute
struct Attribute
{
float2 bary;
@ -32,11 +33,12 @@ struct Attribute
[shader("closesthit")]
void main(inout Payload MyPayload, in Attribute MyAttr) {
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
}

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: %accelerationStructureNV = OpTypeAccelerationStructureKHR
// CHECK-NOT: OpTypeAccelerationStructureKHR
@ -33,11 +34,12 @@ void main() {
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
// CHECK: OpTraceNV {{%\d+}} %uint_0 %uint_255 %uint_0 %uint_1 %uint_0 {{%\d+}} {{%\d+}} {{%\d+}} {{%\d+}} %uint_0
// CHECK: OpTraceRayKHR {{%[0-9]+}} %uint_0 %uint_255 %uint_0 %uint_1 %uint_0 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999 %myPayload
TraceRay(AccelerationStructure, 0x0, 0xff, 0, 1, 0, ray, myPayload);
}

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RayDesc MakeRayDesc()
@ -24,15 +25,21 @@ struct CallData
float4 data;
};
[shader("callable")]
struct Attribute
{
float2 bary;
};
[shader("intersection")]
void main() {
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
Attribute myHitAttribute = { float2(0.0f,0.0f) };

Просмотреть файл

@ -1,8 +1,9 @@
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayTracingKHR
// RUN: %dxc -T lib_6_3 -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_tracing"
// CHECK: OpCapability RayTracingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RayDesc MakeRayDesc()
@ -29,9 +30,10 @@ void main(inout Payload MyPayload) {
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
RayQuery<RAY_FLAG_FORCE_OPAQUE> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_1 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_3 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
}

Просмотреть файл

@ -1,8 +1,7 @@
// RUN: %dxc -T vs_6_5 -E main -fspv-target-env=vulkan1.2
// CHECK: OpCapability RayQueryKHR
// CHECK: OpCapability RayTraversalPrimitiveCullingKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// RUN: %dxc -T vs_6_5 -E main -fspv-target-env=vulkan1.2 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
RaytracingAccelerationStructure AccelerationStructure : register(t0);
RWByteAddressBuffer log : register(u0);
@ -33,13 +32,13 @@ void main()
{
// CHECK: %rayQueryKHR = OpTypeRayQueryKHR
// CHECK: %_ptr_Function_rayQueryKHR = OpTypePointer Function %rayQueryKHR
// CHECK: [[rayquery:%\d+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
RayQuery<RAY_FLAG_FORCE_OPAQUE|RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH> q;
RayDesc ray = MakeRayDesc();
// CHECK: [[accel:%\d+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_517 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: [[accel:%[0-9]+]] = OpLoad %accelerationStructureNV %AccelerationStructure
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_517 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
q.TraceRayInline(AccelerationStructure,RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES, 0xFF, ray);
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_5 %uint_255 {{%\d+}} %float_0 {{%\d+}} %float_9999
// CHECK: OpRayQueryInitializeKHR [[rayquery]] [[accel]] %uint_5 %uint_255 {{%[0-9]+}} %float_0 {{%[0-9]+}} %float_9999
doInitialize(q, ray);
}

Просмотреть файл

@ -1,4 +1,5 @@
// RUN: dxc -T cs_6_5 -E CS -fspv-target-env=vulkan1.2
// RUN: %dxc -T cs_6_5 -E CS -fspv-target-env=vulkan1.2 -O0 -spirv %s | FileCheck %s
// CHECK: OpCapability RayQueryKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
@ -28,7 +29,7 @@ void CS()
q.TraceRayInline(AccelerationStructure,RAY_FLAG_NONE,0xFF,ray);
float4x3 mat4x3;
float3x4 mat3x4;
// CHECK: [[rayquery:%\d+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: [[rayquery:%[0-9]+]] = OpVariable %_ptr_Function_rayQueryKHR Function
// CHECK: OpRayQueryProceedKHR %bool [[rayquery]]
while(q.Proceed())
{

Просмотреть файл

@ -1,9 +0,0 @@
// RUN: %dxc -T cs_6_5 -E CS -fspv-target-env=vulkan1.2
// CHECK: error: store value of type 'RayQuery<RAY_FLAG_FORCE_OPAQUE | RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH>' is unsupported
[numThreads(1,1,1)]
void CS()
{
RayQuery<RAY_FLAG_FORCE_OPAQUE|RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH> q;
RayQuery<RAY_FLAG_FORCE_OPAQUE|RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH> b = q;
}