tests/shader_runner_metal: Enable supported UAV formats.

This commit is contained in:
Giovanni Mascellani
2025-09-29 11:55:49 +02:00
committed by Henri Verbeet
parent b4174f5252
commit 7e1fa8f3df
Notes: Henri Verbeet 2025-09-30 17:25:50 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1756
8 changed files with 44 additions and 18 deletions

View File

@@ -144,5 +144,5 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID)
}
[test]
todo(glsl) dispatch 1 1 1
todo(glsl | msl) dispatch 1 1 1
probe uav 3 (0, 0, 1024, 1) u32(1024)

View File

@@ -46,16 +46,16 @@ float4 main(float4 position : SV_Position, uint coverage : SV_Coverage) : SV_Tar
[test]
sample mask 0x01
clear rtv 0 0.0 0.0 0.0 0.0
todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 0.25, 0.0, 0.25)
todo(sm<6 | msl) draw quad
probe (0, 0) f32(0.0, 0.25, 0.0, 0.25)
probe uav 1 (0, 0, 4, 4) u32(0x01)
sample mask 0x03
todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 0.5, 0.0, 0.5)
todo(sm<6 | msl) draw quad
probe (0, 0) f32(0.0, 0.5, 0.0, 0.5)
probe uav 1 (0, 0, 4, 4) u32(0x03)
sample mask 0x07
todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 0.75, 0.0, 0.75)
todo(sm<6 | msl) draw quad
probe (0, 0) f32(0.0, 0.75, 0.0, 0.75)
probe uav 1 (0, 0, 4, 4) u32(0x07)
[uav 1]
@@ -69,10 +69,10 @@ size (2d, 4, 4)
[test]
clear rtv 0 0.0 0.0 0.0 0.0
sample mask 0x09
todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 0.5, 0.0, 0.5)
todo(sm<6 | msl) draw quad
probe (0, 0) f32(0.0, 0.5, 0.0, 0.5)
probe uav 1 (0, 0, 4, 4) u32(0x09)
sample mask 0x0f
todo(sm<6) draw quad
probe (0, 0) rgba (0.0, 1.0, 0.0, 1.0)
todo(sm<6 | msl) draw quad
probe (0, 0) f32(0.0, 1.0, 0.0, 1.0)
probe uav 1 (0, 0, 4, 4) u32(0x0f)

View File

@@ -68,12 +68,12 @@ float4 main(float4 pos : sv_position) : sv_target
[test]
uniform 0 float4 1 2 3 4
todo(glsl) draw quad
todo(glsl | msl) draw quad
probe (0, 0) f32(1, 2, 3, 4)
probe uav 1 (0, 0) f32(1.0)
probe uav 1 (1, 0) f32(1.0)
uniform 0 float4 9 8 7 6
todo(glsl) draw quad
todo(glsl | msl) draw quad
probe (0, 0) f32(1, 2, 3, 4)
probe uav 1 (0, 0) f32(2.0)
probe uav 1 (1, 0) f32(1.0)

View File

@@ -219,7 +219,7 @@ void main(uint2 id : sv_dispatchthreadid)
}
[test]
dispatch 1 1 1
todo(msl) dispatch 1 1 1
probe uav 0 (0, 0) f32(2.0)
if(sm<6) probe uav 0 (0, 1) f32(1.0)
if(sm<6) probe uav 0 (1, 0) f32(2.0)

View File

@@ -26,7 +26,7 @@ float4 main() : sv_target
}
[test]
draw quad
todo(msl) draw quad
probe uav 1 (0, 0) f32(1.0, 2.0, 3.0, 4.0)
[pixel shader fail]

View File

@@ -24,7 +24,7 @@ void main()
}
[test]
dispatch 1 1 1
todo(msl) dispatch 1 1 1
probe uav 0 (0, 0) f32(0.6)
probe uav 0 (1, 0) f32(0.6)
probe uav 0 (2, 0) f32(0.6)

View File

@@ -62,7 +62,7 @@ void main(uint id : SV_GroupIndex)
}
[test]
dispatch 1 1 1
todo(msl) dispatch 1 1 1
probe uav 2 (0) u32(0xf01)
bug(mvk) probe uav 2 (1) u32(0x503)
probe uav 2 (2) u32(0x511)
@@ -130,7 +130,7 @@ void main(uint id : SV_GroupIndex)
}
[test]
dispatch 1 1 1
todo(msl) dispatch 1 1 1
probe uav 2 (0) u32(0x701)
bug(mvk) probe uav 2 (1) u32(0x503)
probe uav 2 (2) u32(0x511)

View File

@@ -1192,6 +1192,32 @@ static bool metal_runner_init(struct metal_runner *runner)
runner->caps.tags[0] = "msl";
runner->caps.tag_count = 1;
if (runner->device.readWriteTextureSupport >= MTLReadWriteTextureTier1)
{
runner->caps.format_caps[DXGI_FORMAT_R32_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R32_SINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R32_FLOAT] |= FORMAT_CAP_UAV_LOAD;
}
if (runner->device.readWriteTextureSupport >= MTLReadWriteTextureTier2)
{
runner->caps.format_caps[DXGI_FORMAT_R32G32B32A32_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R32G32B32A32_SINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R32G32B32A32_FLOAT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16G16B16A16_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16G16B16A16_SINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16G16B16A16_FLOAT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8G8B8A8_UNORM] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8G8B8A8_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8G8B8A8_SINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16_SINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R16_FLOAT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8_UNORM] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8_UINT] |= FORMAT_CAP_UAV_LOAD;
runner->caps.format_caps[DXGI_FORMAT_R8_SINT] |= FORMAT_CAP_UAV_LOAD;
}
return true;
}