Commit 574bce1b authored by Józef Kucia's avatar Józef Kucia Committed by Alexandre Julliard

wined3d: Do not perform texture alpha blending for BUMPENV textures.

parent 4c3586ca
......@@ -8650,7 +8650,6 @@ static void test_texture_blending(void)
const struct test
{
BOOL todo;
DWORD tex_op_caps;
D3DCOLOR expected_color;
struct texture_stage stage[8];
......@@ -8658,7 +8657,6 @@ static void test_texture_blending(void)
tests[] =
{
{
FALSE,
D3DTEXOPCAPS_DISABLE,
0x80ffff02,
{
......@@ -8671,7 +8669,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -8687,7 +8684,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -8704,7 +8700,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -8721,7 +8716,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x00000000,
{
......@@ -8739,7 +8733,6 @@ static void test_texture_blending(void)
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -8768,7 +8761,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -8796,7 +8788,6 @@ static void test_texture_blending(void)
},
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -8826,7 +8817,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x00ff0000,
{
......@@ -8858,7 +8848,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -8891,7 +8880,6 @@ static void test_texture_blending(void)
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE
| D3DTEXOPCAPS_ADD,
0x80ff0000,
......@@ -8925,7 +8913,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE
| D3DTEXOPCAPS_MODULATE2X,
0x80ffff00,
......@@ -8959,7 +8946,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP,
0x80ffff02,
{
......@@ -9131,16 +9117,8 @@ static void test_texture_blending(void)
get_rt_readback(backbuffer, &rb);
color = get_readback_color(&rb, 320, 240);
if (current_test->todo)
{
todo_wine ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
}
else
{
ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
}
ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
release_surface_readback(&rb);
hr = IDirect3DDevice8_Present(device, NULL, NULL, NULL, NULL);
ok(SUCCEEDED(hr), "Test %u: Present failed, hr %#x.\n", i, hr);
......
......@@ -20678,7 +20678,6 @@ static void test_texture_blending(void)
const struct test
{
BOOL todo;
DWORD tex_op_caps;
D3DCOLOR expected_color;
struct texture_stage stage[8];
......@@ -20686,7 +20685,6 @@ static void test_texture_blending(void)
tests[] =
{
{
FALSE,
D3DTEXOPCAPS_DISABLE,
0x80ffff02,
{
......@@ -20699,7 +20697,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -20715,7 +20712,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -20732,7 +20728,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x80ffff02,
{
......@@ -20749,7 +20744,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1,
0x00000000,
{
......@@ -20766,7 +20760,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_SUBTRACT,
0x80f0f000,
{
......@@ -20792,7 +20785,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_SUBTRACT,
0x71f0f000,
{
......@@ -20824,7 +20816,6 @@ static void test_texture_blending(void)
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -20853,7 +20844,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -20881,7 +20871,6 @@ static void test_texture_blending(void)
},
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -20911,7 +20900,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x00ff0000,
{
......@@ -20943,7 +20931,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE,
0x80ff0000,
{
......@@ -20976,7 +20963,6 @@ static void test_texture_blending(void)
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE
| D3DTEXOPCAPS_ADD,
0x80ff0000,
......@@ -21011,7 +20997,6 @@ static void test_texture_blending(void)
},
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE
| D3DTEXOPCAPS_MODULATE2X,
0x80ff0000,
......@@ -21046,7 +21031,6 @@ static void test_texture_blending(void)
},
},
{
TRUE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP | D3DTEXOPCAPS_MODULATE
| D3DTEXOPCAPS_MODULATE2X,
0x80ffff00,
......@@ -21083,7 +21067,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP,
0x01234567,
{
......@@ -21137,7 +21120,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP,
0x00234567,
{
......@@ -21188,7 +21170,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP,
0x01234567,
{
......@@ -21242,7 +21223,6 @@ static void test_texture_blending(void)
},
},
{
FALSE,
D3DTEXOPCAPS_DISABLE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_BUMPENVMAP,
0x01234567,
{
......@@ -21424,16 +21404,8 @@ static void test_texture_blending(void)
get_rt_readback(backbuffer, &rb);
color = get_readback_color(&rb, 320, 240);
if (current_test->todo)
{
todo_wine ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
}
else
{
ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
}
ok(color_match(color, current_test->expected_color, 1),
"Test %u: Got color 0x%08x, expected 0x%08x.\n", i, color, current_test->expected_color);
release_surface_readback(&rb);
hr = IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);
ok(SUCCEEDED(hr), "Test %u: Present failed, hr %#x.\n", i, hr);
......
......@@ -6551,7 +6551,10 @@ static GLuint gen_arbfp_ffp_shader(const struct ffp_frag_settings *settings, con
gen_ffp_instr(&buffer, stage, TRUE, TRUE, settings->op[stage].dst,
settings->op[stage].cop, settings->op[stage].carg0,
settings->op[stage].carg1, settings->op[stage].carg2);
} else {
}
else if (settings->op[stage].cop != WINED3D_TOP_BUMPENVMAP
&& settings->op[stage].cop != WINED3D_TOP_BUMPENVMAP_LUMINANCE)
{
gen_ffp_instr(&buffer, stage, TRUE, FALSE, settings->op[stage].dst,
settings->op[stage].cop, settings->op[stage].carg0,
settings->op[stage].carg1, settings->op[stage].carg2);
......
......@@ -6653,7 +6653,8 @@ static GLuint shader_glsl_generate_ffp_fragment_shader(struct shader_glsl_priv *
settings->op[stage].cop, settings->op[stage].carg0,
settings->op[stage].carg1, settings->op[stage].carg2);
}
else
else if (settings->op[stage].cop != WINED3D_TOP_BUMPENVMAP
&& settings->op[stage].cop != WINED3D_TOP_BUMPENVMAP_LUMINANCE)
{
shader_glsl_ffp_fragment_op(buffer, stage, TRUE, FALSE, settings->op[stage].dst,
settings->op[stage].cop, settings->op[stage].carg0,
......
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