wined3d: Handle the destination modifier shift in the frontend rather than the backend.

Henri Verbeet hverbeet at codeweavers.com
Thu Apr 23 02:24:26 CDT 2009


---
 dlls/wined3d/arb_program_shader.c    |    4 ++--
 dlls/wined3d/baseshader.c            |    4 ++--
 dlls/wined3d/wined3d_private_types.h |    8 ++++----
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 9b56958..1db1e46 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -1000,10 +1000,10 @@ static void shader_hw_map2gl(const struct wined3d_shader_instruction *ins)
             partialprecision = mask & WINED3DSPDM_PARTIALPRECISION;
             mask &= ~(WINED3DSPDM_MSAMPCENTROID | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_SATURATE);
             if (mask)
-                FIXME("Unrecognized modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+                FIXME("Unrecognized modifier(%#x)\n", mask);
 
             if (centroid)
-                FIXME("Unhandled modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+                FIXME("Unhandled modifier(%#x)\n", mask);
         }
         shift = dst->shift;
         modifier = (saturate && !shift) ? "_SAT" : "";
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 31fffc5..7fcf769 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -234,7 +234,7 @@ static void shader_parse_dst_param(DWORD param, const struct wined3d_shader_src_
             | ((param & WINED3DSP_REGTYPE_MASK2) >> WINED3DSP_REGTYPE_SHIFT2);
     dst->register_idx = param & WINED3DSP_REGNUM_MASK;
     dst->write_mask = param & WINED3DSP_WRITEMASK_ALL;
-    dst->modifiers = param & WINED3DSP_DSTMOD_MASK;
+    dst->modifiers = (param & WINED3DSP_DSTMOD_MASK) >> WINED3DSP_DSTMOD_SHIFT;
     dst->shift = (param & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
     dst->rel_addr = rel_addr;
 }
@@ -966,7 +966,7 @@ static void shader_dump_ins_modifiers(const DWORD output)
 
     mmask &= ~(WINED3DSPDM_SATURATE | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_MSAMPCENTROID);
     if (mmask)
-        FIXME("_unrecognized_modifier(%#x)", mmask >> WINED3DSP_DSTMOD_SHIFT);
+        FIXME("_unrecognized_modifier(%#x)", mmask);
 }
 
 void shader_trace_init(const DWORD *pFunction, const SHADER_OPCODE *opcode_table)
diff --git a/dlls/wined3d/wined3d_private_types.h b/dlls/wined3d/wined3d_private_types.h
index 8a52e39..ebe2779 100644
--- a/dlls/wined3d/wined3d_private_types.h
+++ b/dlls/wined3d/wined3d_private_types.h
@@ -136,10 +136,10 @@ typedef enum _WINED3DSHADER_PARAM_SRCMOD_TYPE {
 #define WINED3DSP_DSTMOD_MASK       (0xF << WINED3DSP_DSTMOD_SHIFT)
 
 typedef enum _WINED3DSHADER_PARAM_DSTMOD_TYPE {
-  WINED3DSPDM_NONE             = 0 << WINED3DSP_DSTMOD_SHIFT,
-  WINED3DSPDM_SATURATE         = 1 << WINED3DSP_DSTMOD_SHIFT,
-  WINED3DSPDM_PARTIALPRECISION = 2 << WINED3DSP_DSTMOD_SHIFT,
-  WINED3DSPDM_MSAMPCENTROID    = 4 << WINED3DSP_DSTMOD_SHIFT,
+  WINED3DSPDM_NONE             = 0,
+  WINED3DSPDM_SATURATE         = 1,
+  WINED3DSPDM_PARTIALPRECISION = 2,
+  WINED3DSPDM_MSAMPCENTROID    = 4,
 
   WINED3DSPDM_FORCE_DWORD  = 0x7FFFFFFF
 } WINED3DSHADER_PARAM_DSTMOD_TYPE;
-- 
1.6.0.6



--------------040806080701070305020509--



More information about the wine-patches mailing list