[PATCH 5/5] wined3d: Do not perform texture alpha blending for BUMPENV textures.
Józef Kucia
jkucia at codeweavers.com
Wed Dec 9 07:18:40 CST 2015
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
This probably should wait after until the code freeze as I don't know any application
affected by this change.
---
dlls/d3d8/tests/visual.c | 26 ++------------------------
dlls/d3d9/tests/visual.c | 32 ++------------------------------
dlls/wined3d/arb_program_shader.c | 5 ++++-
dlls/wined3d/glsl_shader.c | 3 ++-
4 files changed, 10 insertions(+), 56 deletions(-)
diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c
index 5614dd7..543988b 100644
--- a/dlls/d3d8/tests/visual.c
+++ b/dlls/d3d8/tests/visual.c
@@ -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);
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 5d59e78..c9a2eed 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -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);
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index be3d727..fd3f961 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -6549,7 +6549,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);
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 6fa9521..c7b3076 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -6636,7 +6636,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,
--
2.4.10
More information about the wine-patches
mailing list