vkd3d-shader/msl: Implement support for VKD3DSPR_IDXTEMP registers.

This commit is contained in:
Henri Verbeet
2025-05-22 22:37:28 +02:00
parent 66d0c2a426
commit ea5cf883fa
Notes: Henri Verbeet 2025-06-09 16:31:45 +02:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1547
6 changed files with 38 additions and 22 deletions

View File

@@ -180,11 +180,11 @@ uniform 0 float4 2.0 2.0 2.0 2.0
uniform 4 float4 3.0 3.0 3.0 3.0
if(sm<4) uniform 8 float4 0 0 0 0
if(sm>=4) uniform 8 uint4 0 0 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba(2.0, 2.0, 2.0, 2.0)
if(sm<4) uniform 8 float4 1 0 0 0
if(sm>=4) uniform 8 uint4 1 0 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba(3.0, 3.0, 3.0, 3.0)
% OOB indexes are illegal, but sm < 6 allows them in dead code.

View File

@@ -136,5 +136,5 @@ float4 main() : sv_target
[test]
uniform 0 float 3
todo(msl) draw quad
draw quad
probe (0, 0) rgba (12, 13, 14, 15)

View File

@@ -235,12 +235,12 @@ uint4 main() : sv_target
[test]
uniform 0 uint 0
uniform 1 uint 100
todo(msl) draw quad
draw quad
% In D3D12 with SM5 all reads to the array return 0
if(sm>=6 | !d3d12) probe (0, 0) rgbaui(100, 2, 0x7ff, 0xfff)
uniform 0 uint 2
uniform 1 uint 1000
todo(msl) draw quad
draw quad
if(sm>=6 | !d3d12) probe (0, 0) rgbaui(1, 2, 1000, 0xfff)
[rtv 0]
@@ -261,12 +261,12 @@ int4 main() : sv_target
[test]
uniform 0 uint 0
uniform 1 uint 100
todo(msl) draw quad
draw quad
% In D3D12 with SM5 all reads to the array return 0
if(sm>=6 | !d3d12) probe (0, 0) rgbaui(100, 2, 0x7ff, 0xfff)
uniform 0 uint 2
uniform 1 uint 1000
todo(msl) draw quad
draw quad
if(sm>=6 | !d3d12) probe (0, 0) rgbaui(1, 2, 1000, 0xfff)
[rtv 0]
@@ -287,9 +287,9 @@ float4 main() : sv_target
[test]
uniform 0 uint 0
uniform 1 float 3.0
todo(msl) draw quad
draw quad
probe (0, 0) rgba(3.0, 2.0, 0.5, 111.0)
uniform 0 uint 2
uniform 1 float 5.0
todo(msl) draw quad
draw quad
probe (0, 0) rgba(1.0, 2.0, 5.0, 111.0)

View File

@@ -67,7 +67,7 @@ float4 main() : sv_target
[test]
uniform 0 float 2.3
todo(msl) draw quad
draw quad
probe (0, 0) rgba (3, 3, 3, 3)
@@ -108,16 +108,16 @@ float4 main() : sv_target
[test]
uniform 0 float4 0 0 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (1.0, 2.0, 3.0, 4.0)
uniform 0 float4 1 0 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (5.0, 6.0, 7.0, 8.0)
uniform 0 float4 0 1 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (5.0, 6.0, 7.0, 8.0)
uniform 0 float4 1 1 0 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (9.0, 10.0, 11.0, 12.0)
@@ -136,7 +136,7 @@ float4 main() : sv_target
[test]
uniform 0 float4 0 0 2.4 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (1.0, 120.0, 90.0, 4.0)
@@ -268,15 +268,15 @@ float4 main() : sv_target
[test]
uniform 0 int 0
uniform 1 int 0
todo(msl) draw quad
draw quad
probe (0, 0) rgba (100, 6, 7, 8)
uniform 0 int 2
uniform 1 int 2
todo(msl) draw quad
draw quad
probe (0, 0) rgba (5, 6, 100, 8)
uniform 0 int 1
uniform 1 int 3
todo(msl) draw quad
draw quad
probe (0, 0) rgba (5, 6, 7, 4)
@@ -305,7 +305,7 @@ uniform 0 float4 1 2 3 4
uniform 4 float4 5 6 7 8
uniform 8 int 3
uniform 9 int 4
todo(msl) draw quad
draw quad
probe (0, 0) rgba (1126, 3344, 5566, 3788)
@@ -325,7 +325,7 @@ float4 main() : sv_target
[test]
uniform 0 uint 1
uniform 1 uint 0x40a00000
todo(msl) draw quad
draw quad
probe (0, 0) rgba (1, 5, 3, 4)
@@ -356,7 +356,7 @@ uniform 8 float 3.0
uniform 12 float 4.0
uniform 16 uint4 3 1 0 2
uniform 20 uint4 0 3 1 2
todo(msl) draw quad
draw quad
if(sm<4) probe (0,0) rgba (1.0, 1.0, 1.0, 1.0)
if(sm>=4 & sm<6) todo probe (0,0) rgba (4.0, 4.0, 4.0, 4.0)
if(sm>=6) probe (0,0) rgba (4.0, 3.0, 2.0, 1.0)

View File

@@ -101,7 +101,7 @@ float4 main(struct ps_data ps_input) : SV_Target
[test]
uniform 0 uint4 1 2 0 1
clear rtv 0 1.0 1.0 1.0 1.0
todo(msl) draw triangle strip 4
draw triangle strip 4
probe (0, 0) rgba(0.0, 1.0, 0.0, 1.0)
[require]