From 8106c5a199e9f185ed99de675216ef0da6ad8805 Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Tue, 20 May 2025 18:28:16 +0200 Subject: [PATCH] tests/hlsl: Test the interstage interface for minimum precision types. --- .../shader-interstage-interface.shader_test | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/tests/hlsl/shader-interstage-interface.shader_test b/tests/hlsl/shader-interstage-interface.shader_test index 8ece6b73e..808fc83ae 100644 --- a/tests/hlsl/shader-interstage-interface.shader_test +++ b/tests/hlsl/shader-interstage-interface.shader_test @@ -104,6 +104,111 @@ clear rtv 0 1.0 1.0 1.0 1.0 todo(msl) draw triangle strip 4 probe (0, 0) rgba(0.0, 1.0, 0.0, 1.0) +[require] +shader model >= 4.0 + +[input layout] +0 r32g32-float SV_POSITION +0 r32g32-float TEXCOORD 0 +1 r32g32-uint TEXCOORD 1 + +[vb 0] +-1.0 -1.0 700.0 5.0 +-1.0 1.0 700.0 5.0 + 1.0 -1.0 700.0 5.0 + 1.0 1.0 700.0 5.0 + +[vb 1] +format r32-uint +0x7fff 2 +0x7fff 2 +0x7fff 2 +0x7fff 2 + +[vertex shader] +struct vertex +{ + float4 position : SV_Position; + min16float2 t0 : TEXCOORD0; + min16uint2 t1 : TEXCOORD1; +}; + +void main(in vertex vin, out vertex vout) +{ + vout = vin; +} + +[pixel shader] +uniform min16float h; + +float4 main(float4 position : SV_Position, min16float2 t0 : TEXCOORD0, min16uint2 t1 : TEXCOORD1) : SV_Target +{ + // Prevent float -> half -> float being optimised out by doing a half-precision operation. + return float4(t0 - min16float2(h, h), t1); +} + +[test] +uniform 0 uint 0 +todo(glsl | msl) draw triangle strip 4 +probe (0, 0) rgba(700.0, 5.0, 32767.0, 2.0) + +[input layout] +0 r32g32-float SV_POSITION +1 r32g32-sint TEXCOORD 0 + +[vb 0] +-1.0 -1.0 +-1.0 1.0 + 1.0 -1.0 + 1.0 1.0 + +[vb 1] +format r32-sint +-7000 -2 +-7000 -2 +-7000 -2 +-7000 -2 + +[vertex shader] +struct vertex +{ + float4 position : SV_Position; + min16int2 t0 : TEXCOORD0; +}; + +void main(in vertex vin, out vertex vout) +{ + vout = vin; +} + +[pixel shader] +int4 main(float4 position : SV_Position, min16int2 t0 : TEXCOORD0) : SV_Target +{ + return int4(t0, 0, 0); +} + +[rtv 0] +format r32g32b32a32-sint +size (2d, 640, 480) + +[test] +todo(msl) draw triangle strip 4 +todo(opengl) probe (0, 0) rgbai(-7000, -2, 0, 0) + +[pixel shader] +uint4 main(float4 position : SV_Position, min16int2 t0 : TEXCOORD0) : SV_Target +{ + return uint4(t0, 0, 0); +} + +[rtv 0] +format r32g32b32a32-uint +size (2d, 640, 480) + +[test] +todo(msl) draw triangle strip 4 +probe (0, 0) rgbai(-7000, -2, 0, 0) + [require] shader model >= 6.2 native-16-bit