tests/hlsl: Add tests for CalculateLevelOfDetail().

Includes improvements made by Giovanni Mascellani.
This commit is contained in:
Conor McCarthy 2024-03-21 11:21:12 +10:00 committed by Alexandre Julliard
parent e9559c394b
commit bdfa14d219
Notes: Alexandre Julliard 2024-04-11 17:03:01 -05:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/733
4 changed files with 87 additions and 2 deletions

View File

@ -65,6 +65,7 @@ vkd3d_shader_tests = \
tests/hlsl/bitwise.shader_test \
tests/hlsl/bool-cast.shader_test \
tests/hlsl/bool-semantics.shader_test \
tests/hlsl/calculate-lod.shader_test \
tests/hlsl/cast-64-bit.shader_test \
tests/hlsl/cast-broadcast.shader_test \
tests/hlsl/cast-componentwise-compatible.shader_test \

View File

@ -0,0 +1,84 @@
[require]
shader model >= 4.1
[sampler 0]
filter linear linear linear
address clamp clamp clamp
[srv 0]
size (2d, 4, 4)
levels 3
0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
[pixel shader todo]
sampler s;
Texture2D t;
float4 main(float4 pos : sv_position) : sv_target
{
return float4(t.CalculateLevelOfDetail(s, pos.xy),
t.CalculateLevelOfDetail(s, float2(0.5 * pos.x, 0.5 * pos.y)),
t.CalculateLevelOfDetail(s, float2(0.25 * pos.x, 0.25 * pos.y)),
floor(10.0 * t.CalculateLevelOfDetail(s, float2(0.1 * pos.x, 0.7 * pos.y))));
}
[test]
todo draw quad
probe all rgba (2.0, 1.0, 0.0, 14.0)
[pixel shader todo]
sampler s;
Texture2D t;
float4 main(float4 pos : sv_position) : sv_target
{
return float4(t.CalculateLevelOfDetail(s, float2(3.0 * pos.x, 5.0 * pos.y)),
t.CalculateLevelOfDetail(s, float2(10.0 * pos.x, 10.0 * pos.y)),
t.CalculateLevelOfDetail(s, float2(0.1 * pos.x, 0.02 * pos.y)),
t.CalculateLevelOfDetail(s, float2(0.01 * pos.x, 0.01 * pos.y)));
}
[test]
todo draw quad
probe all rgba (2.0, 2.0, 0.0, 0.0)
[pixel shader todo]
sampler s;
Texture2D t;
float4 main(float4 pos : sv_position) : sv_target
{
return float4(t.CalculateLevelOfDetailUnclamped(s, pos.xy),
t.CalculateLevelOfDetailUnclamped(s, float2(0.5 * pos.x, 0.5 * pos.y)),
t.CalculateLevelOfDetailUnclamped(s, float2(0.25 * pos.x, 0.25 * pos.y)),
floor(10.0 * t.CalculateLevelOfDetailUnclamped(s, float2(0.1 * pos.x, 0.7 * pos.y))));
}
[test]
todo draw quad
probe all rgba (2.0, 1.0, 0.0, 14.0)
[pixel shader todo]
sampler s;
Texture2D t;
float4 main(float4 pos : sv_position) : sv_target
{
return float4(floor(10.0 * t.CalculateLevelOfDetailUnclamped(s, float2(3.0 * pos.x, 6.0 * pos.y))),
floor(10.0 * t.CalculateLevelOfDetailUnclamped(s, float2(8.0 * pos.x, 8.0 * pos.y))),
floor(10.0 * t.CalculateLevelOfDetailUnclamped(s, float2(0.1 * pos.x, 0.02 * pos.y))),
floor(10.0 * t.CalculateLevelOfDetailUnclamped(s, float2(0.01 * pos.x, 0.01 * pos.y))));
}
[test]
todo draw quad
probe all rgba (45.0, 50.0, -14.0, -47.0)

View File

@ -358,7 +358,7 @@ static ID3D11Buffer *create_buffer(ID3D11Device *device, unsigned int bind_flags
static void init_resource_2d(struct d3d11_shader_runner *runner, struct d3d11_resource *resource,
const struct resource_params *params)
{
D3D11_SUBRESOURCE_DATA resource_data[2];
D3D11_SUBRESOURCE_DATA resource_data[3];
ID3D11Device *device = runner->device;
D3D11_TEXTURE2D_DESC desc = {0};
HRESULT hr;

View File

@ -104,7 +104,7 @@ static struct resource *d3d12_runner_create_resource(struct shader_runner *r, co
struct d3d12_shader_runner *runner = d3d12_shader_runner(r);
struct test_context *test_context = &runner->test_context;
ID3D12Device *device = test_context->device;
D3D12_SUBRESOURCE_DATA resource_data[2] = {0};
D3D12_SUBRESOURCE_DATA resource_data[3] = {0};
struct d3d12_resource *resource;
unsigned int buffer_offset = 0;
D3D12_RESOURCE_STATES state;