mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
Variables that contain more than one object (arrays or structs) require the allocation of contiguous registers in the respective object register spaces.
84 lines
1.3 KiB
Plaintext
84 lines
1.3 KiB
Plaintext
[require]
|
|
shader model >= 4.0
|
|
|
|
|
|
[texture 0]
|
|
size (1, 1)
|
|
0.0 0.0 0.0 99.0
|
|
|
|
[texture 1]
|
|
size (1, 1)
|
|
1.0 1.0 1.0 99.0
|
|
|
|
[texture 2]
|
|
size (1, 1)
|
|
2.0 2.0 2.0 99.0
|
|
|
|
[texture 3]
|
|
size (1, 1)
|
|
3.0 3.0 3.0 99.0
|
|
|
|
[texture 4]
|
|
size (1, 1)
|
|
4.0 4.0 4.0 99.0
|
|
|
|
|
|
% If a single component in a texture array is used, all registers are reserved.
|
|
[pixel shader todo]
|
|
Texture2D partially_used[2][2];
|
|
Texture2D tex;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return 10 * tex.Load(int3(0, 0, 0)) + partially_used[0][1].Load(int3(0, 0, 0));
|
|
}
|
|
|
|
[test]
|
|
todo draw quad
|
|
todo probe all rgba (41.0, 41.0, 41.0, 1089.0)
|
|
|
|
|
|
% If no component in a texture array is used, and it doesn't have a register reservation, no
|
|
% register is reserved.
|
|
[pixel shader]
|
|
Texture2D unused[4];
|
|
Texture2D tex;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return tex.Load(int3(0, 0, 0));
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe all rgba (0.0, 0.0, 0.0, 99.0)
|
|
|
|
|
|
% Register reservations force to reserve all the resource registers. Even if unused.
|
|
[pixel shader]
|
|
Texture2D unused : register(t0);
|
|
Texture2D tex;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return tex.Load(int3(0, 0, 0));
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe all rgba (1.0, 1.0, 1.0, 99.0)
|
|
|
|
|
|
[pixel shader]
|
|
Texture2D unused[2][2] : register(t0);
|
|
Texture2D tex;
|
|
|
|
float4 main() : sv_target
|
|
{
|
|
return tex.Load(int3(0, 0, 0));
|
|
}
|
|
|
|
[test]
|
|
draw quad
|
|
probe all rgba (4.0, 4.0, 4.0, 99.0)
|