Module: wine Branch: master Commit: 40e8d8542699f3c27ead7d7622914c50ca695df1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=40e8d8542699f3c27ead7d7622...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Mon Jan 9 22:16:50 2012 +0100
wined3d: Simplify transform flag handling in find_ps_compile_args().
---
dlls/wined3d/shader.c | 27 +++++++++------------------ 1 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index b3d2f7f..1553bf4 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -1911,24 +1911,13 @@ void find_ps_compile_args(const struct wined3d_state *state, for (i = 0; i < 4; ++i) { DWORD flags = state->texture_states[i][WINED3DTSS_TEXTURETRANSFORMFLAGS]; - DWORD count, tex_transform = 0; - - /* Filter some invalid flags */ - count = flags & ~WINED3DTTFF_PROJECTED; - if (count > WINED3DTTFF_COUNT4 || (!(flags & WINED3DTTFF_PROJECTED) && count != 0)) - { - WARN("The application set an invalid %#x TEXTURETRANSFORMFLAGS value.\n", flags); - count = 0; - }
if (flags & WINED3DTTFF_PROJECTED) { enum wined3d_sampler_texture_type sampler_type = shader->reg_maps.sampler_type[i]; + DWORD tex_transform = flags & ~WINED3DTTFF_PROJECTED; DWORD max_valid = WINED3DTTFF_COUNT4;
- if (!count) - count = WINED3DTTFF_COUNT4; - if (!state->vertex_shader) { unsigned int j; @@ -1947,10 +1936,12 @@ void find_ps_compile_args(const struct wined3d_state *state, } }
- tex_transform = min(count, max_valid); - if (tex_transform != (flags & ~WINED3DTTFF_PROJECTED)) - WARN("Fixing up %#x projected texture transform flag to %#x.\n", - flags & ~WINED3DTTFF_PROJECTED, tex_transform); + if (!tex_transform || tex_transform > max_valid) + { + WARN("Fixing up projected texture transform flags from %#x to %#x.\n", + tex_transform, max_valid); + tex_transform = max_valid; + }
if ((sampler_type == WINED3DSTT_1D && tex_transform > WINED3DTTFF_COUNT1) || (sampler_type == WINED3DSTT_2D && tex_transform > WINED3DTTFF_COUNT2) @@ -1958,9 +1949,9 @@ void find_ps_compile_args(const struct wined3d_state *state, tex_transform |= WINED3D_PSARGS_PROJECTED; else WARN("Application requested projected texture with unsuitable texture coordinates.\n"); + + args->tex_transform |= tex_transform << i * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; } - tex_transform &= WINED3D_PSARGS_TEXTRANSFORM_MASK; - args->tex_transform |= tex_transform << i * WINED3D_PSARGS_TEXTRANSFORM_SHIFT; } }