From 33e8bfd43f66613f6f834fb0e1816ef43071f2e4 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 5 Sep 2024 11:53:56 -0700 Subject: Fix SPIRV SV_TessFactor type adaptation logic. (#5010) * Fix SPIRV SV_TessFactor type adaptation logic. * Fix compile error. --- tests/bugs/gh-4456.slang | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/bugs/gh-4456.slang (limited to 'tests/bugs') diff --git a/tests/bugs/gh-4456.slang b/tests/bugs/gh-4456.slang new file mode 100644 index 000000000..05b346e77 --- /dev/null +++ b/tests/bugs/gh-4456.slang @@ -0,0 +1,52 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -lang slang -D__spirv__ -emit-spirv-directly -profile ds_6_5 -entry main + +// CHECK: OpEntryPoint + +struct VSSceneIn { + float3 pos : POSITION; +}; + +struct PSSceneIn { + float4 pos : SV_Position; +}; + +struct HSPerVertexData { + PSSceneIn v; +}; + +struct HSPerPatchData { + float edges[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; +}; + +RaytracingAccelerationStructure AccelerationStructure : register(t0); +RayDesc MakeRayDesc() +{ + RayDesc desc; + desc.Origin = float3(0,0,0); + desc.Direction = float3(1,0,0); + desc.TMin = 0.0f; + desc.TMax = 9999.0; + return desc; +} +void doInitialize(out RayQuery query, RayDesc ray) +{ + query.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_NON_OPAQUE,0xFF,ray); +} + +[domain("tri")] PSSceneIn main( + const float3 bary : SV_DomainLocation, + const OutputPatch patch, + const HSPerPatchData perPatchData) +{ + PSSceneIn v; + v.pos = patch[0].v.pos * bary.x + patch[1].v.pos * bary.y + patch[2].v.pos * bary.z + perPatchData.edges[1]; + + RayQuery q; + RayDesc ray = MakeRayDesc(); + + q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray); + doInitialize(q, ray); + + return v; +} -- cgit v1.2.3