tests: Replace test_ps_viewport_index() with a shader runner test.

Mainly to allow testing the functionality in question with DXIL shaders
as well.
This commit is contained in:
Conor McCarthy
2024-05-01 14:36:30 +10:00
committed by Henri Verbeet
parent 55fe8df979
commit cd8cea6913
Notes: Henri Verbeet 2025-07-31 15:06:45 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1663
10 changed files with 154 additions and 119 deletions

View File

@@ -0,0 +1,43 @@
[require]
shader model >= 4.0
rt-vp-array-index
[rtv 0]
format r32g32b32a32-float
size (2d, 640, 480)
[vertex shader]
float4 main(in uint vertex_id : SV_VertexID, in uint instance_id : SV_InstanceID,
out uint viewport : SV_ViewportArrayIndex) : SV_Position
{
viewport = instance_id;
switch (vertex_id)
{
case 0:
return float4(-1, 1, 0, 1);
case 1:
return float4(3, 1, 0, 1);
case 2:
return float4(-1, -3, 0, 1);
default:
return float4(0, 0, 0, 0);
}
}
[pixel shader]
float4 main(float4 p : SV_Position, uint viewport : SV_ViewportArrayIndex) : SV_Target
{
return float4(viewport / 4.0, 0.0, 0.0, 1.0);
}
[test]
viewport 0 ( 0.0, 0.0, 320.0, 240.0)
viewport 1 (320.0, 0.0, 320.0, 240.0)
viewport 2 ( 0.0, 240.0, 320.0, 240.0)
viewport 3 (320.0, 240.0, 320.0, 240.0)
clear rtv 0 1.0 1.0 1.0 1.0
todo(sm>=6 | glsl) draw triangle list 3 4
probe rtv 0 (160, 120) f32(0.0, 0.0, 0.0, 1.0)
probe rtv 0 (480, 120) f32(0.25, 0.0, 0.0, 1.0)
probe rtv 0 (160, 360) f32(0.5, 0.0, 0.0, 1.0)
probe rtv 0 (480, 360) f32(0.75, 0.0, 0.0, 1.0)