tests: Test alpha test.

This commit is contained in:
Elizabeth Figura
2024-05-17 19:53:12 -05:00
committed by Henri Verbeet
parent 7e868f1f4b
commit 5a53b73995
Notes: Henri Verbeet 2024-07-11 17:16:48 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/870
6 changed files with 129 additions and 9 deletions

View File

@@ -326,7 +326,15 @@ static bool d3d9_runner_dispatch(struct shader_runner *r, unsigned int x, unsign
static void d3d9_runner_clear(struct shader_runner *r, struct resource *resource, const struct vec4 *clear_value)
{
fatal_error("Clears are not implemented.\n");
struct d3d9_shader_runner *runner = d3d9_shader_runner(r);
unsigned int colour;
HRESULT hr;
colour = vkd3d_make_u32(vkd3d_make_u16(clear_value->z * 255.0, clear_value->y * 255.0),
vkd3d_make_u16(clear_value->x * 255.0, clear_value->w * 255.0));
hr = IDirect3DDevice9_ColorFill(runner->device, d3d9_resource(resource)->surface, NULL, colour);
ok(hr == S_OK, "Got hr %#lx.\n", hr);
}
static bool d3d9_runner_draw(struct shader_runner *r,
@@ -448,6 +456,15 @@ static bool d3d9_runner_draw(struct shader_runner *r,
ok(hr == D3D_OK, "Failed to set sampler state, hr %#lx.\n", hr);
}
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_ALPHATESTENABLE, TRUE);
ok(hr == D3D_OK, "Failed to set render state, hr %#lx.\n", hr);
/* The members of enum vkd3d_shader_parameter_alpha_test_func are
* compatible with D3DCMPFUNC. */
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_ALPHAFUNC, runner->r.alpha_test_func);
ok(hr == D3D_OK, "Failed to set render state, hr %#lx.\n", hr);
hr = IDirect3DDevice9_SetRenderState(device, D3DRS_ALPHAREF, runner->r.alpha_test_ref * 255.0);
ok(hr == D3D_OK, "Failed to set render state, hr %#lx.\n", hr);
hr = IDirect3DDevice9_CreateVertexDeclaration(device, decl_elements, &vertex_declaration);
ok(hr == D3D_OK, "Failed to create vertex declaration, hr %#lx.\n", hr);
hr = IDirect3DDevice9_CreateVertexShader(device, ID3D10Blob_GetBufferPointer(vs_code), &vs);