Files
vkd3d/tests/hlsl/descriptors.shader_test

261 lines
4.0 KiB
Plaintext
Raw Normal View History

[require]
shader model >= 4.0
[srv 0]
format r32-float
size (2d, 1, 1)
1.0
% Test a shader that uses an SRV in combination with a CBV longer than the
% declared uniforms.
[pixel shader]
Texture2D<float> t : register(t0);
uniform float4 x;
uniform float4 y;
float4 main() : SV_Target
{
return t.Load(uint3(0, 0, 0)) + x;
}
[test]
uniform 0 float4 1.0 2.0 3.0 4.0
draw quad
probe (0, 0) f32(2.0, 3.0, 4.0, 5.0)
[require]
shader model >= 5.0
descriptors
[srv 0]
format r32-float
size (2d, 1, 1)
1.0
[srv 1]
format r32-float
size (2d, 1, 1)
2.0
[srv 2]
format r32-float
size (2d, 1, 1)
3.0
[pixel shader]
Texture2D<float> t : register(t1);
float4 main() : SV_Target
{
return t.Load(uint3(0, 0, 0));
}
[test]
draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
[descriptors]
t[1:1], space 0, srv 2
[test]
draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
t[1:2], space 0, srv 0
[test]
draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
[require]
shader model >= 5.0
descriptors
format r32-float uav-load
[uav 1]
format r32-float
size (2d, 1, 1)
1.0
[uav 2]
format r32-float
size (2d, 1, 1)
2.0
[uav 3]
format r32-float
size (2d, 1, 1)
3.0
[pixel shader]
RWTexture2D<float> u : register(u2);
float4 main() : SV_Target
{
return u[uint2(0, 0)];
}
[descriptors]
[test]
todo(msl) draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
[descriptors]
u[2:2], space 0, uav 3
[test]
todo(msl) draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
u[2:3], space 0, uav 1
[test]
todo(msl) draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
% Test SM 6.6 dynamic resources on SRVs
[require]
shader model >= 6.6
descriptors
[pixel shader]
uniform uint idx;
float4 main() : SV_Target
{
Texture2D<float> t = ResourceDescriptorHeap[idx];
return t.Load(uint3(0, 0, 0));
}
[descriptors]
[test]
uniform 0 uint 0
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
uniform 0 uint 1
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 2
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
t[1:3], space 0, srv 0
[test]
uniform 0 uint 0
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
uniform 0 uint 1
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 2
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
t[1:2], space 0, srv 1
[test]
uniform 0 uint 0
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 1
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
t[1:3], space 0, srv 0
[pixel shader]
float4 main(float4 pos : SV_Position) : SV_Target
{
uint idx = floor(pos.x);
idx %= 3;
Texture2D<float> t = ResourceDescriptorHeap[NonUniformResourceIndex(idx)];
return t.Load(uint3(0, 0, 0));
}
[test]
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
probe (1, 0) f32(2.0, 2.0, 2.0, 2.0)
probe (2, 0) f32(3.0, 3.0, 3.0, 3.0)
% Test SM 6.6 dynamic resources on UAVs
[pixel shader]
uniform uint idx;
float4 main() : SV_Target
{
RWTexture2D<float> u = ResourceDescriptorHeap[idx];
return u[uint2(0, 0)];
}
[descriptors]
[test]
uniform 0 uint 3
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
uniform 0 uint 4
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 5
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
u[1:3], space 0, uav 1
[test]
uniform 0 uint 0
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
uniform 0 uint 1
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 2
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
u[1:2], space 0, uav 2
[test]
uniform 0 uint 0
todo draw quad
probe (0, 0) f32(2.0, 2.0, 2.0, 2.0)
uniform 0 uint 1
todo draw quad
probe (0, 0) f32(3.0, 3.0, 3.0, 3.0)
[descriptors]
[pixel shader]
float4 main(float4 pos : SV_Position) : SV_Target
{
uint idx = floor(pos.x);
idx %= 3;
RWTexture2D<float> u = ResourceDescriptorHeap[NonUniformResourceIndex(idx + 3)];
return u[uint2(0, 0)];
}
[test]
todo draw quad
probe (0, 0) f32(1.0, 1.0, 1.0, 1.0)
probe (1, 0) f32(2.0, 2.0, 2.0, 2.0)
probe (2, 0) f32(3.0, 3.0, 3.0, 3.0)