Ivan Gyurdiev : wined3d: Trace corrections/improvements.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Apr 20 08:46:16 CDT 2006


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

Author: Ivan Gyurdiev <ivg2 at cornell.edu>
Date:   Wed Apr 19 23:53:48 2006 -0400

wined3d: Trace corrections/improvements.

---

 dlls/wined3d/pixelshader.c  |   52 ++++++++++++++++++++++++++++++++-----------
 dlls/wined3d/vertexshader.c |   43 ++++++++++++++++++++++++++++--------
 2 files changed, 73 insertions(+), 22 deletions(-)

diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index b121f7b..4a98bf5 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -1591,8 +1591,8 @@ inline static void pshader_program_dump_
         case 14: TRACE("_d4"); break;
         case 15: TRACE("_d2"); break;
         case 1: TRACE("_x2"); break;
-        case 3: TRACE("_x4"); break;
-        case 7: TRACE("_x8"); break;
+        case 2: TRACE("_x4"); break;
+        case 3: TRACE("_x8"); break;
         default: TRACE("_unhandled_shift(%ld)", shift); break;
     }
 
@@ -1628,7 +1628,7 @@ #define EXTENDED_REG 0x1800
       TRACE("1-");
   }
 
-  switch (regtype /* << D3DSP_REGTYPE_SHIFT (I don't know why this was here)*/) {
+  switch (regtype) { 
   case D3DSPR_TEMP:
     TRACE("r%lu", reg);
     break;
@@ -1663,7 +1663,11 @@ #define EXTENDED_REG 0x1800
   case D3DSPR_LOOP:
     TRACE("aL%s%lu", (param & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
     break;
+  case D3DSPR_SAMPLER:
+    TRACE("s%lu", reg);
+    break;
   default:
+    TRACE("unhandled_rtype(%lx)", regtype);
     break;
   }
 
@@ -1725,11 +1729,32 @@ #define EXTENDED_REG 0x1800
     }
 }
 
-inline static void pshader_program_dump_decl_usage(IWineD3DPixelShaderImpl *This, DWORD token) {
+inline static void pshader_program_dump_decl_usage(
+    IWineD3DPixelShaderImpl *This, DWORD decl, DWORD param) {
+
+    DWORD regtype = ((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) | 
+                    ((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2);
+
     TRACE("dcl_");
-    switch(token & 0xFFFF) {
+
+    if (regtype == D3DSPR_SAMPLER) {
+        DWORD ttype = decl & D3DSP_TEXTURETYPE_MASK;
+
+        switch (ttype) {
+            case D3DSTT_2D: TRACE("2d "); break;
+            case D3DSTT_CUBE: TRACE("cube "); break;
+            case D3DSTT_VOLUME: TRACE("volume "); break;
+            default: TRACE("unknown_ttype(%08lx) ", ttype); 
+       }
+
+    } else { 
+
+        DWORD usage = decl & D3DSP_DCL_USAGE_MASK;
+        DWORD idx = (decl & D3DSP_DCL_USAGEINDEX_MASK) >> D3DSP_DCL_USAGEINDEX_SHIFT;
+
+        switch(usage) {
         case D3DDECLUSAGE_POSITION:
-            TRACE("%s%ld ", "position",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "position", idx);
             break;
         case D3DDECLUSAGE_BLENDINDICES:
             TRACE("%s ", "blend");
@@ -1738,20 +1763,20 @@ inline static void pshader_program_dump_
             TRACE("%s ", "weight");
             break;
         case D3DDECLUSAGE_NORMAL:
-            TRACE("%s%ld ", "normal",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "normal", idx);
             break;
         case D3DDECLUSAGE_PSIZE:
             TRACE("%s ", "psize");
             break;
         case D3DDECLUSAGE_COLOR:
-            if((token & 0xF0000) >> 16 == 0)  {
+            if(idx == 0)  {
                 TRACE("%s ", "color");
             } else {
-                TRACE("%s%ld ", "specular", ((token & 0xF0000) >> 16) - 1);
+                TRACE("%s%ld ", "specular", (idx - 1));
             }
             break;
         case D3DDECLUSAGE_TEXCOORD:
-            TRACE("%s%ld ", "texture", (token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "texture", idx);
             break;
         case D3DDECLUSAGE_TANGENT:
             TRACE("%s ", "tangent");
@@ -1763,7 +1788,7 @@ inline static void pshader_program_dump_
             TRACE("%s ", "tessfactor");
             break;
         case D3DDECLUSAGE_POSITIONT:
-            TRACE("%s%ld ", "positionT",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "positionT", idx);
             break;
         case D3DDECLUSAGE_FOG:
             TRACE("%s ", "fog");
@@ -1775,7 +1800,8 @@ inline static void pshader_program_dump_
             TRACE("%s ", "sample");
             break;
         default:
-            FIXME("Unrecognised dcl %08lx", token & 0xFFFF);
+            FIXME("Unrecognised dcl %08lx", usage);
+        }
     }
 }
 
@@ -1824,7 +1850,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S
 
             } else {
                 if (curOpcode->opcode == D3DSIO_DCL) {
-                    pshader_program_dump_decl_usage(This, *pToken);
+                    pshader_program_dump_decl_usage(This, *pToken, *(pToken + 1));
                     ++pToken;
                     ++len;
                     pshader_program_dump_ps_param(*pToken, 0);
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 0912077..7cd05e3 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -830,6 +830,9 @@ #define EXTENDED_REG 0x1800
   case D3DSPR_LOOP:
     TRACE("aL%s%lu", (param & D3DVS_ADDRMODE_RELATIVE) ? "a0.x + " : "", reg);
     break;
+  case D3DSPR_SAMPLER:
+    TRACE("s%lu", reg);
+    break;
   default:
     FIXME("Unknown %lu reg %lu\n",regtype, reg);
     break;
@@ -870,11 +873,32 @@ #define EXTENDED_REG 0x1800
   }
 }
 
-inline static void vshader_program_dump_decl_usage(IWineD3DVertexShaderImpl *This, DWORD token) {
+inline static void vshader_program_dump_decl_usage(
+    IWineD3DVertexShaderImpl *This, DWORD decl, DWORD param) {
+
+    DWORD regtype = ((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) |
+                    ((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2);
+
     TRACE("dcl_");
-    switch(token & 0xFFFF) {
+
+    if (regtype == D3DSPR_SAMPLER) {
+        DWORD ttype = decl & D3DSP_TEXTURETYPE_MASK;
+
+        switch (ttype) {
+            case D3DSTT_2D: TRACE("2d "); break;
+            case D3DSTT_CUBE: TRACE("cube "); break;
+            case D3DSTT_VOLUME: TRACE("volume "); break;
+            default: TRACE("unknown_ttype(%08lx) ", ttype);
+       }
+
+    } else {
+
+        DWORD usage = decl & D3DSP_DCL_USAGE_MASK;
+        DWORD idx = (decl & D3DSP_DCL_USAGEINDEX_MASK) >> D3DSP_DCL_USAGEINDEX_SHIFT;
+
+        switch(usage) {
         case D3DDECLUSAGE_POSITION:
-            TRACE("%s%ld ", "position",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "position", idx);
             break;
         case D3DDECLUSAGE_BLENDINDICES:
             TRACE("%s ", "blend");
@@ -883,20 +907,20 @@ inline static void vshader_program_dump_
             TRACE("%s ", "weight");
             break;
         case D3DDECLUSAGE_NORMAL:
-            TRACE("%s%ld ", "normal",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "normal", idx);
             break;
         case D3DDECLUSAGE_PSIZE:
             TRACE("%s ", "psize");
             break;
         case D3DDECLUSAGE_COLOR:
-            if((token & 0xF0000) >> 16 == 0)  {
+            if(idx == 0)  {
                 TRACE("%s ", "color");
             } else {
                 TRACE("%s ", "specular");
             }
             break;
         case D3DDECLUSAGE_TEXCOORD:
-            TRACE("%s%ld ", "texture", (token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "texture", idx);
             break;
         case D3DDECLUSAGE_TANGENT:
             TRACE("%s ", "tangent");
@@ -908,7 +932,7 @@ inline static void vshader_program_dump_
             TRACE("%s ", "tessfactor");
             break;
         case D3DDECLUSAGE_POSITIONT:
-            TRACE("%s%ld ", "positionT",(token & 0xF0000) >> 16);
+            TRACE("%s%ld ", "positionT", idx);
             break;
         case D3DDECLUSAGE_FOG:
             TRACE("%s ", "fog");
@@ -920,7 +944,8 @@ inline static void vshader_program_dump_
             TRACE("%s ", "sample");
             break;
         default:
-            FIXME("Unrecognised dcl %08lx", token & 0xFFFF);
+            FIXME("Unrecognised dcl %08lx", usage);
+        }
     }
 }
 
@@ -2157,7 +2182,7 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
 
             } else {
                 if (curOpcode->opcode == D3DSIO_DCL) {
-                    vshader_program_dump_decl_usage(This, *pToken);
+                    vshader_program_dump_decl_usage(This, *pToken, *(pToken + 1));
                     ++pToken;
                     ++len;
                     vshader_program_dump_vs_param(*pToken, 0);




More information about the wine-cvs mailing list