Commit 31e60139 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

d3d11/tests: Add a test for dual source blending.

parent 0d6d1045
......@@ -29993,6 +29993,76 @@ static void test_independent_blend(void)
release_test_context(&test_context);
}
static void test_dual_source_blend(void)
{
struct d3d11_test_context test_context;
ID3D11BlendState *blend_state;
ID3D11DeviceContext *context;
ID3D11PixelShader *ps;
ID3D11Device *device;
DWORD color;
HRESULT hr;
static const DWORD ps_code[] =
{
#if 0
void main(float4 position : SV_Position,
out float4 t0 : SV_Target0, out float4 t1 : SV_Target1)
{
t0 = float4(0.5, 0.5, 0.0, 1.0);
t1 = float4(0.0, 0.5, 0.5, 0.0);
}
#endif
0x43425844, 0x87120d01, 0xa0014738, 0x3a32d86c, 0x9d757441, 0x00000001, 0x00000118, 0x00000003,
0x0000002c, 0x00000060, 0x000000ac, 0x4e475349, 0x0000002c, 0x00000001, 0x00000008, 0x00000020,
0x00000000, 0x00000001, 0x00000003, 0x00000000, 0x0000000f, 0x505f5653, 0x7469736f, 0x006e6f69,
0x4e47534f, 0x00000044, 0x00000002, 0x00000008, 0x00000038, 0x00000000, 0x00000000, 0x00000003,
0x00000000, 0x0000000f, 0x00000038, 0x00000001, 0x00000000, 0x00000003, 0x00000001, 0x0000000f,
0x545f5653, 0x65677261, 0xabab0074, 0x52444853, 0x00000064, 0x00000040, 0x00000019, 0x03000065,
0x001020f2, 0x00000000, 0x03000065, 0x001020f2, 0x00000001, 0x08000036, 0x001020f2, 0x00000000,
0x00004002, 0x3f000000, 0x3f000000, 0x00000000, 0x3f000000, 0x08000036, 0x001020f2, 0x00000001,
0x00004002, 0x00000000, 0x3f000000, 0x3f000000, 0x00000000, 0x0100003e
};
static const D3D11_BLEND_DESC blend_desc =
{
.RenderTarget[0].BlendEnable = TRUE,
.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC1_COLOR,
.RenderTarget[0].DestBlend = D3D11_BLEND_SRC1_COLOR,
.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD,
.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE,
.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO,
.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD,
.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL,
};
static const float clear_color[] = {0.7f, 0.0f, 1.0f, 1.0f};
if (!init_test_context(&test_context, NULL))
return;
device = test_context.device;
context = test_context.immediate_context;
hr = ID3D11Device_CreatePixelShader(device, ps_code, sizeof(ps_code), NULL, &ps);
ok(hr == S_OK, "Failed to create pixel shader, hr %#x.\n", hr);
ID3D11DeviceContext_PSSetShader(context, ps, NULL, 0);
hr = ID3D11Device_CreateBlendState(device, &blend_desc, &blend_state);
ok(hr == S_OK, "Failed to create blend state, hr %#x.\n", hr);
ID3D11DeviceContext_OMSetBlendState(context, blend_state, NULL, D3D11_DEFAULT_SAMPLE_MASK);
ID3D11BlendState_Release(blend_state);
ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, clear_color);
draw_quad(&test_context);
color = get_texture_color(test_context.backbuffer, 320, 240);
ok(compare_color(color, 0x80804000, 1), "Got unexpected color 0x%08x.\n", color);
ID3D11PixelShader_Release(ps);
release_test_context(&test_context);
}
START_TEST(d3d11)
{
unsigned int argc, i;
......@@ -30155,6 +30225,7 @@ START_TEST(d3d11)
queue_test(test_sample_attached_rtv);
queue_test(test_color_mask);
queue_test(test_independent_blend);
queue_test(test_dual_source_blend);
run_queued_tests();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment