Ivan Gyurdiev : wined3d: Share shader_dump_ins_modifiers().

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 11 05:56:12 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: c61af3af8da074620485998b7757c21cd0fb6b9a
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=c61af3af8da074620485998b7757c21cd0fb6b9a

Author: Ivan Gyurdiev <ivg2 at cornell.edu>
Date:   Wed May 10 13:53:07 2006 -0400

wined3d: Share shader_dump_ins_modifiers().

Share shader_dump_ins_modifiers(), and make vertex shaders use it.
The saturate modifer (_sat) is valid on vs_3_0+, and it isn't being
shown in the trace.

---

 dlls/wined3d/baseshader.c      |   25 +++++++++++++++++++++++++
 dlls/wined3d/pixelshader.c     |   29 ++---------------------------
 dlls/wined3d/vertexshader.c    |    5 ++++-
 dlls/wined3d/wined3d_private.h |    3 +++
 4 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index 5c3b143..acc402b 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -395,4 +395,29 @@ void generate_base_shader(
 }
 
 
+void shader_dump_ins_modifiers(const DWORD output) {
+
+    DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
+    DWORD mmask = output & D3DSP_DSTMOD_MASK;
+
+    switch (shift) {
+        case 0: break;
+        case 13: TRACE("_d8"); break;
+        case 14: TRACE("_d4"); break;
+        case 15: TRACE("_d2"); break;
+        case 1: TRACE("_x2"); break;
+        case 2: TRACE("_x4"); break;
+        case 3: TRACE("_x8"); break;
+        default: TRACE("_unhandled_shift(%ld)", shift); break;
+    }
+
+    switch(mmask) {
+        case D3DSPDM_NONE: break;
+        case D3DSPDM_SATURATE: TRACE("_sat"); break;
+        case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break;
+        case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break;
+        default: TRACE("_unhandled_modifier(%#lx)", mmask); break;
+    }
+}
+
 /* TODO: Move other shared code here */
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index ff368dc..d43bea9 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -1370,31 +1370,6 @@ #if 1 /* if were using the data buffer o
 #endif
 }
 
-inline static void pshader_program_dump_ins_modifiers(const DWORD output) {
-
-    DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
-    DWORD mmask = output & D3DSP_DSTMOD_MASK;
-
-    switch (shift) {
-        case 0: break;
-        case 13: TRACE("_d8"); break;
-        case 14: TRACE("_d4"); break;
-        case 15: TRACE("_d2"); break;
-        case 1: TRACE("_x2"); break;
-        case 2: TRACE("_x4"); break;
-        case 3: TRACE("_x8"); break;
-        default: TRACE("_unhandled_shift(%ld)", shift); break;
-    }
-
-    switch(mmask) {
-        case D3DSPDM_NONE: break;
-        case D3DSPDM_SATURATE: TRACE("_sat"); break;
-        case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break;
-        case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break;
-        default: TRACE("_unhandled_modifier(%#lx)", mmask); break;
-    } 
-}
-
 inline static void pshader_program_dump_ps_param(const DWORD param, int input) {
   static const char* rastout_reg_names[] = { "oC0", "oC1", "oC2", "oC3", "oDepth" };
   static const char swizzle_reg_chars[] = "rgba";
@@ -1568,7 +1543,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S
                     else
                          TRACE("dcl");
 
-                    pshader_program_dump_ins_modifiers(param);
+                    shader_dump_ins_modifiers(param);
                     TRACE(" ");
                     pshader_program_dump_ps_param(param, 0);
                     pToken += 2;
@@ -1594,7 +1569,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S
                 } else {
                     TRACE("%s", curOpcode->name);
                     if (curOpcode->num_params > 0) {
-                        pshader_program_dump_ins_modifiers(*pToken);
+                        shader_dump_ins_modifiers(*pToken);
                         TRACE(" ");
                         pshader_program_dump_ps_param(*pToken, 0);
                         ++pToken;
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index c527ceb..c578d38 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -1641,6 +1641,7 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
 
                     parse_decl_usage(This, usage, param & D3DSP_REGNUM_MASK);
                     shader_program_dump_decl_usage(usage, param);
+                    shader_dump_ins_modifiers(param);
                     TRACE(" ");
                     vshader_program_dump_vs_param(param, 0);
                     pToken += 2;
@@ -1664,8 +1665,10 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
                         ++pToken;
                         ++len;
                 } else {
-                    TRACE("%s ", curOpcode->name);
+                    TRACE("%s", curOpcode->name);
                     if (curOpcode->num_params > 0) {
+                        shader_dump_ins_modifiers(*pToken);
+                        TRACE(" ");
                         vshader_program_dump_vs_param(*pToken, 0);
                         ++pToken;
                         ++len;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 30cf91c..d978604 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1300,6 +1300,9 @@ extern void generate_base_shader(
     SHADER_BUFFER* buffer,
     CONST DWORD* pFunction);
 
+extern void shader_dump_ins_modifiers(
+    const DWORD output);
+
 inline static int shader_get_regtype(const DWORD param) {
     return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) |
             ((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));




More information about the wine-cvs mailing list