Commit 0d6d1045 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

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

parent df569853
......@@ -18286,6 +18286,73 @@ static void test_independent_blend(void)
release_test_context(&test_context);
}
static void test_dual_source_blend(void)
{
struct d3d10core_test_context test_context;
ID3D10BlendState *blend_state;
D3D10_BLEND_DESC blend_desc;
ID3D10PixelShader *ps;
ID3D10Device *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 float clear_color[] = {0.7f, 0.0f, 1.0f, 1.0f};
if (!init_test_context(&test_context))
return;
device = test_context.device;
hr = ID3D10Device_CreatePixelShader(device, ps_code, sizeof(ps_code), &ps);
ok(SUCCEEDED(hr), "Failed to create pixel shader, hr %#x.\n", hr);
ID3D10Device_PSSetShader(device, ps);
memset(&blend_desc, 0, sizeof(blend_desc));
blend_desc.BlendEnable[0] = TRUE;
blend_desc.SrcBlend = D3D10_BLEND_SRC1_COLOR;
blend_desc.DestBlend = D3D10_BLEND_SRC1_COLOR;
blend_desc.BlendOp = D3D10_BLEND_OP_ADD;
blend_desc.SrcBlendAlpha = D3D10_BLEND_ONE;
blend_desc.DestBlendAlpha = D3D10_BLEND_ZERO;
blend_desc.BlendOpAlpha = D3D10_BLEND_OP_ADD;
blend_desc.RenderTargetWriteMask[0] = D3D10_COLOR_WRITE_ENABLE_ALL;
hr = ID3D10Device_CreateBlendState(device, &blend_desc, &blend_state);
ok(hr == S_OK, "Failed to create blend state, hr %#x.\n", hr);
ID3D10Device_OMSetBlendState(device, blend_state, NULL, D3D10_DEFAULT_SAMPLE_MASK);
ID3D10Device_ClearRenderTargetView(device, 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);
ID3D10BlendState_Release(blend_state);
ID3D10PixelShader_Release(ps);
release_test_context(&test_context);
}
START_TEST(d3d10core)
{
unsigned int argc, i;
......@@ -18406,6 +18473,7 @@ START_TEST(d3d10core)
queue_test(test_desktop_window);
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