mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
4d17758657
Do not rely on a draw or dispatch command to do this. This allows more efficiently testing syntax, in cases where testing the actual shader functionality is not interesting.
150 lines
2.4 KiB
Plaintext
150 lines
2.4 KiB
Plaintext
[require]
|
|
shader model >= 5.0
|
|
|
|
[pixel shader fail]
|
|
RWTexture2D<float4> u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
/* All four components must be written in a single statement. */
|
|
u[uint2(0, 0)].xy = float2(1, 2);
|
|
u[uint2(0, 0)].zw = float2(3, 4);
|
|
return 0;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
Texture2D<float4> u;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
/* SRVs are not writable. */
|
|
u[uint2(0, 0)].xyzw = float4(1, 2, 3, 4);
|
|
return 0;
|
|
}
|
|
|
|
|
|
[uav 1]
|
|
format r32 float
|
|
size (2, 2)
|
|
|
|
0.1 0.2
|
|
0.3 0.4
|
|
|
|
[uav 2]
|
|
size (1, 1)
|
|
|
|
0.5 0.6 0.7 0.8
|
|
|
|
[pixel shader]
|
|
RWTexture2D<float> u;
|
|
RWTexture2D<float4> v;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
u[uint2(0, 0)] = 0.5;
|
|
u[uint2(0, 1)].x = 0.6;
|
|
u[uint2(1, 1)] = 0.7;
|
|
v[uint2(0, 0)].yxwz = float4(1, 2, 3, 4);
|
|
return 0;
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe uav 1 (0, 0) r (0.5)
|
|
probe uav 1 (0, 1) r (0.6)
|
|
probe uav 1 (1, 0) r (0.2)
|
|
probe uav 1 (1, 1) r (0.7)
|
|
probe uav 2 (0, 0) rgba (2.0, 1.0, 4.0, 3.0)
|
|
|
|
|
|
% UAVs are implicitly allocated starting from the highest render target slot.
|
|
% They cannot overlap render target slots, and also cannot be allocated any
|
|
% lower than the highest render target.
|
|
% This ceases to be true with shader model 5.1.
|
|
|
|
[render target 1]
|
|
format r32g32b32a32 float
|
|
size (640, 480)
|
|
|
|
[uav 2]
|
|
size (1, 1)
|
|
|
|
0.1 0.2 0.3 0.4
|
|
|
|
[pixel shader fail]
|
|
RWTexture2D<float4> u : register(u0);
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
u[uint2(0, 0)] = float4(0.9, 0.8, 0.7, 0.6);
|
|
return 0;
|
|
}
|
|
|
|
[pixel shader fail]
|
|
RWTexture2D<float4> u : register(u1);
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
u[uint2(0, 0)] = float4(0.9, 0.8, 0.7, 0.6);
|
|
return 0;
|
|
}
|
|
|
|
[pixel shader]
|
|
RWTexture2D<float4> u;
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
u[uint2(0, 0)] = float4(0.9, 0.8, 0.7, 0.6);
|
|
return 0;
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe uav 2 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
|
|
|
|
|
[uav 3]
|
|
size (1, 1)
|
|
|
|
0.1 0.2 0.3 0.4
|
|
|
|
[pixel shader]
|
|
RWTexture2D<float4> u : register(u3);
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
u[uint2(0, 0)] = float4(0.9, 0.8, 0.7, 0.6);
|
|
return 0;
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe uav 3 (0, 0) rgba (0.9, 0.8, 0.7, 0.6)
|
|
|
|
% Test that we can declare and use an array of UAVs.
|
|
|
|
[uav 2]
|
|
size (1, 1)
|
|
|
|
0.1 0.2 0.3 0.4
|
|
|
|
[uav 3]
|
|
size (1, 1)
|
|
|
|
0.5 0.6 0.7 0.8
|
|
|
|
[pixel shader todo]
|
|
RWTexture2D<float4> u[2] : register(u2);
|
|
|
|
float4 main() : sv_target1
|
|
{
|
|
u[0][uint2(0, 0)] = float4(1.1, 1.2, 1.3, 1.4);
|
|
u[1][uint2(0, 0)] = float4(2.1, 2.2, 2.3, 2.4);
|
|
return 0;
|
|
}
|
|
|
|
[test]
|
|
todo draw quad
|
|
probe uav 2 (0, 0) rgba (1.1, 1.2, 1.3, 1.4)
|
|
probe uav 3 (0, 0) rgba (2.1, 2.2, 2.3, 2.4)
|