Ivan Gyurdiev : wined3d: Add D3DSHADER_ADDRMODE masks to the WINED3D namespace.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 13 05:25:43 CDT 2006


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

Author: Ivan Gyurdiev <ivg231 at gmail.com>
Date:   Thu Oct 12 23:35:03 2006 -0400

wined3d: Add D3DSHADER_ADDRMODE masks to the WINED3D namespace.

---

 dlls/wined3d/arb_program_shader.c    |    2 +-
 dlls/wined3d/baseshader.c            |    4 ++--
 dlls/wined3d/glsl_shader.c           |    2 +-
 dlls/wined3d/vertexshader.c          |    2 +-
 dlls/wined3d/wined3d_private_types.h |   13 ++++++++++++-
 5 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index fece941..ddfb3b4 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -388,7 +388,7 @@ static void vshader_program_add_param(SH
     strcat(hwLine, tmpReg);
     break;
   case WINED3DSPR_CONST:
-    sprintf(tmpReg, "C[%s%u]", (param & D3DVS_ADDRMODE_RELATIVE) ? "A0.x + " : "", reg);
+    sprintf(tmpReg, "C[%s%u]", (param & WINED3DSHADER_ADDRMODE_RELATIVE) ? "A0.x + " : "", reg);
     strcat(hwLine, tmpReg);
     break;
   case WINED3DSPR_ADDR: /*case D3DSPR_TEXTURE:*/
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c
index d8b9f9f..0bef05b 100644
--- a/dlls/wined3d/baseshader.c
+++ b/dlls/wined3d/baseshader.c
@@ -102,7 +102,7 @@ int shader_get_param(
 
     IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface;
     char rel_token = D3DSHADER_VERSION_MAJOR(This->baseShader.hex_version) >= 2 &&
-        ((*pToken & D3DSHADER_ADDRESSMODE_MASK) == D3DSHADER_ADDRMODE_RELATIVE);
+        ((*pToken & WINED3DSHADER_ADDRESSMODE_MASK) == WINED3DSHADER_ADDRMODE_RELATIVE);
 
     *param = *pToken;
     *addr_token = rel_token? *(pToken + 1): 0;
@@ -480,7 +480,7 @@ static void shader_dump_arr_entry(
     int input) {
 
     char relative =
-        ((param & D3DSHADER_ADDRESSMODE_MASK) == D3DSHADER_ADDRMODE_RELATIVE);
+        ((param & WINED3DSHADER_ADDRESSMODE_MASK) == WINED3DSHADER_ADDRMODE_RELATIVE);
 
     if (relative) {
         TRACE("[");
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 3637c9f..fde1b4c 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -635,7 +635,7 @@ static void shader_glsl_get_register_nam
         const char* prefix = pshader? "PC":"VC";
 
         /* Relative addressing */
-        if (param & D3DVS_ADDRMODE_RELATIVE) {
+        if (param & WINED3DSHADER_ADDRMODE_RELATIVE) {
 
            /* Relative addressing on shaders 2.0+ have a relative address token, 
             * prior to that, it was hard-coded as "A0.x" because there's only 1 register */
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 9e48107..33e1040 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -926,7 +926,7 @@ #endif
                         p[i] = &input->V[reg];
                         break;
                     case WINED3DSPR_CONST:
-                        if (pToken[i] & D3DVS_ADDRMODE_RELATIVE) {
+                        if (pToken[i] & WINED3DSHADER_ADDRMODE_RELATIVE) {
                             p[i] = &This->data->C[(DWORD) A[0].x + reg];
                         } else {
                             p[i] = &This->data->C[reg];
diff --git a/dlls/wined3d/wined3d_private_types.h b/dlls/wined3d/wined3d_private_types.h
index e022922..79666fe 100644
--- a/dlls/wined3d/wined3d_private_types.h
+++ b/dlls/wined3d/wined3d_private_types.h
@@ -156,7 +156,18 @@ typedef enum _WINED3DSHADER_PARAM_DSTMOD
 #define WINED3DSP_DSTSHIFT_SHIFT     24
 #define WINED3DSP_DSTSHIFT_MASK      (0xF << WINED3DSP_DSTSHIFT_SHIFT)
 
-/** opcodes types for PS and VS */
+/** Register addressing modes **/
+#define WINED3DSHADER_ADDRESSMODE_SHIFT 13
+#define WINED3DSHADER_ADDRESSMODE_MASK  (1 << WINED3DSHADER_ADDRESSMODE_SHIFT)
+
+typedef enum _WINED3DSHADER_ADDRESSMODE_TYPE {
+  WINED3DSHADER_ADDRMODE_ABSOLUTE    = 0 << WINED3DSHADER_ADDRESSMODE_SHIFT,
+  WINED3DSHADER_ADDRMODE_RELATIVE    = 1 << WINED3DSHADER_ADDRESSMODE_SHIFT,
+
+  WINED3DSHADER_ADDRMODE_FORCE_DWORD = 0x7FFFFFFF
+} WINED3DSHADER_ADDRESSMODE_TYPE;
+
+/** Opcode types */
 typedef enum _WINED3DSHADER_INSTRUCTION_OPCODE_TYPE {
   WINED3DSIO_NOP          =  0,
   WINED3DSIO_MOV          =  1,




More information about the wine-cvs mailing list