wined3d: Merge pshader_hw_map2gl() and vshader_hw_map2gl().

Henri Verbeet hverbeet at codeweavers.com
Mon Sep 22 07:52:57 CDT 2008


This isn't the prettiest way to merge those functions, but it's a start
---
 dlls/wined3d/arb_program_shader.c |  228 ++++++++++++++++++-------------------
 dlls/wined3d/pixelshader.c        |   48 ++++----
 dlls/wined3d/vertexshader.c       |   46 ++++----
 dlls/wined3d/wined3d_private.h    |    3 +-
 4 files changed, 160 insertions(+), 165 deletions(-)

diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 2bb70c3..f6cb4ce 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -1083,71 +1083,119 @@ void pshader_hw_dp2add(SHADER_OPCODE_ARG* arg) {
 }
 
 /* Map the opcode 1-to-1 to the GL code */
-void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg) {
+void shader_hw_map2gl(SHADER_OPCODE_ARG* arg)
+{
+    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl*)arg->shader;
+    CONST SHADER_OPCODE* curOpcode = arg->opcode;
+    SHADER_BUFFER* buffer = arg->buffer;
+    DWORD dst = arg->dst;
+    DWORD* src = arg->src;
 
-     CONST SHADER_OPCODE* curOpcode = arg->opcode;
-     SHADER_BUFFER* buffer = arg->buffer;
-     DWORD dst = arg->dst;
-     DWORD* src = arg->src;
-
-     unsigned int i;
-     char tmpLine[256];
-
-     /* Output token related */
-     char output_rname[256];
-     char output_wmask[20];
-     BOOL saturate = FALSE;
-     BOOL centroid = FALSE;
-     BOOL partialprecision = FALSE;
-     DWORD shift;
-
-     strcpy(tmpLine, curOpcode->glname);
-
-     /* Process modifiers */
-     if (0 != (dst & WINED3DSP_DSTMOD_MASK)) {
-         DWORD mask = dst & WINED3DSP_DSTMOD_MASK;
-
-         saturate = mask & WINED3DSPDM_SATURATE;
-         centroid = mask & WINED3DSPDM_MSAMPCENTROID;
-         partialprecision = mask & WINED3DSPDM_PARTIALPRECISION;
-         mask &= ~(WINED3DSPDM_MSAMPCENTROID | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_SATURATE);
-         if (mask)
-            FIXME("Unrecognized modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
-
-         if (centroid)
-             FIXME("Unhandled modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
-     }
-     shift = (dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
-
-      /* Generate input and output registers */
-      if (curOpcode->num_params > 0) {
-          char operands[4][100];
-
-          /* Generate input register names (with modifiers) */
-          for (i = 1; i < curOpcode->num_params; ++i)
-              pshader_gen_input_modifier_line(arg->shader, buffer, src[i-1], i-1, operands[i]);
-
-          /* Handle output register */
-          pshader_get_register_name(arg->shader, dst, output_rname);
-          strcpy(operands[0], output_rname);
-          shader_arb_get_write_mask(arg, dst, output_wmask);
-          strcat(operands[0], output_wmask);
-
-          if (saturate && (shift == 0))
-             strcat(tmpLine, "_SAT");
-          strcat(tmpLine, " ");
-          strcat(tmpLine, operands[0]);
-          for (i = 1; i < curOpcode->num_params; i++) {
-              strcat(tmpLine, ", ");
-              strcat(tmpLine, operands[i]);
-          }
-          strcat(tmpLine,";\n");
-          shader_addline(buffer, tmpLine);
+    char tmpLine[256];
+    unsigned int i;
 
-          /* A shift requires another line. */
-          if (shift != 0)
-              pshader_gen_output_modifier_line(buffer, saturate, output_wmask, shift, output_rname);
-      }
+    if (shader_is_pshader_version(shader->baseShader.hex_version))
+    {
+        BOOL saturate = FALSE;
+        BOOL centroid = FALSE;
+        BOOL partialprecision = FALSE;
+        DWORD shift;
+
+        strcpy(tmpLine, curOpcode->glname);
+
+        /* Process modifiers */
+        if (dst & WINED3DSP_DSTMOD_MASK)
+        {
+            DWORD mask = dst & WINED3DSP_DSTMOD_MASK;
+
+            saturate = mask & WINED3DSPDM_SATURATE;
+            centroid = mask & WINED3DSPDM_MSAMPCENTROID;
+            partialprecision = mask & WINED3DSPDM_PARTIALPRECISION;
+            mask &= ~(WINED3DSPDM_MSAMPCENTROID | WINED3DSPDM_PARTIALPRECISION | WINED3DSPDM_SATURATE);
+            if (mask)
+                FIXME("Unrecognized modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+
+            if (centroid)
+                FIXME("Unhandled modifier(%#x)\n", mask >> WINED3DSP_DSTMOD_SHIFT);
+        }
+        shift = (dst & WINED3DSP_DSTSHIFT_MASK) >> WINED3DSP_DSTSHIFT_SHIFT;
+
+        /* Generate input and output registers */
+        if (curOpcode->num_params > 0)
+        {
+            /* Output token related */
+            char output_rname[256];
+            char output_wmask[20];
+            char operands[4][100];
+
+            /* Generate input register names (with modifiers) */
+            for (i = 1; i < curOpcode->num_params; ++i)
+                pshader_gen_input_modifier_line(arg->shader, buffer, src[i-1], i-1, operands[i]);
+
+            /* Handle output register */
+            pshader_get_register_name(arg->shader, dst, output_rname);
+            strcpy(operands[0], output_rname);
+            shader_arb_get_write_mask(arg, dst, output_wmask);
+            strcat(operands[0], output_wmask);
+
+            if (saturate && (shift == 0))
+                strcat(tmpLine, "_SAT");
+            strcat(tmpLine, " ");
+            strcat(tmpLine, operands[0]);
+            for (i = 1; i < curOpcode->num_params; i++)
+            {
+                strcat(tmpLine, ", ");
+                strcat(tmpLine, operands[i]);
+            }
+            strcat(tmpLine,";\n");
+            shader_addline(buffer, tmpLine);
+
+            /* A shift requires another line. */
+            if (shift != 0)
+                pshader_gen_output_modifier_line(buffer, saturate, output_wmask, shift, output_rname);
+        }
+    } else {
+        if ((curOpcode->opcode == WINED3DSIO_MOV && shader_get_regtype(dst) == WINED3DSPR_ADDR)
+                || curOpcode->opcode == WINED3DSIO_MOVA) {
+            memset(tmpLine, 0, sizeof(tmpLine));
+            if (((IWineD3DVertexShaderImpl *)shader)->rel_offset)
+            {
+                vshader_program_add_param(arg, src[0], TRUE, tmpLine);
+                shader_addline(buffer, "ADD TMP.x, %s, helper_const.z;\n", tmpLine);
+                shader_addline(buffer, "ARL A0.x, TMP.x;\n");
+            } else {
+                /* Apple's ARB_vertex_program implementation does not accept an ARL source argument
+                 * with more than one component. Thus replicate the first source argument over all
+                 * 4 components. For example, .xyzw -> .x (or better: .xxxx), .zwxy -> .z, etc)
+                 */
+                DWORD parm = src[0] & ~(WINED3DVS_SWIZZLE_MASK);
+                if((src[0] & WINED3DVS_X_W) == WINED3DVS_X_W) {
+                    parm |= WINED3DVS_X_W | WINED3DVS_Y_W | WINED3DVS_Z_W | WINED3DVS_W_W;
+                } else if((src[0] & WINED3DVS_X_Z) == WINED3DVS_X_Z) {
+                    parm |= WINED3DVS_X_Z | WINED3DVS_Y_Z | WINED3DVS_Z_Z | WINED3DVS_W_Z;
+                } else if((src[0] & WINED3DVS_X_Y) == WINED3DVS_X_Y) {
+                    parm |= WINED3DVS_X_Y | WINED3DVS_Y_Y | WINED3DVS_Z_Y | WINED3DVS_W_Y;
+                } else if((src[0] & WINED3DVS_X_X) == WINED3DVS_X_X) {
+                    parm |= WINED3DVS_X_X | WINED3DVS_Y_X | WINED3DVS_Z_X | WINED3DVS_W_X;
+                }
+                vshader_program_add_param(arg, parm, TRUE, tmpLine);
+                shader_addline(buffer, "ARL A0.x, %s;\n", tmpLine);
+            }
+            return;
+        } else
+            strcpy(tmpLine, curOpcode->glname);
+
+        if (curOpcode->num_params > 0)
+        {
+            vshader_program_add_param(arg, dst, FALSE, tmpLine);
+            for (i = 1; i < curOpcode->num_params; ++i)
+            {
+                strcat(tmpLine, ",");
+                vshader_program_add_param(arg, src[i-1], TRUE, tmpLine);
+            }
+        }
+        shader_addline(buffer, "%s;\n", tmpLine);
+    }
 }
 
 void pshader_hw_texkill(SHADER_OPCODE_ARG* arg) {
@@ -1660,7 +1708,7 @@ void shader_hw_mnxn(SHADER_OPCODE_ARG* arg) {
     for (i = 0; i < nComponents; i++) {
         tmpArg.dst = ((arg->dst) & ~WINED3DSP_WRITEMASK_ALL)|(WINED3DSP_WRITEMASK_0<<i);
         tmpArg.src[1] = arg->src[1]+i;
-        vshader_hw_map2gl(&tmpArg);
+        shader_hw_map2gl(&tmpArg);
     }
 }
 
@@ -1733,58 +1781,6 @@ void shader_hw_sincos(SHADER_OPCODE_ARG* arg) {
 
 }
 
-/* TODO: merge with pixel shader */
-/* Map the opcode 1-to-1 to the GL code */
-void vshader_hw_map2gl(SHADER_OPCODE_ARG* arg) {
-
-    IWineD3DVertexShaderImpl *shader = (IWineD3DVertexShaderImpl*) arg->shader;
-    CONST SHADER_OPCODE* curOpcode = arg->opcode;
-    SHADER_BUFFER* buffer = arg->buffer;
-    DWORD dst = arg->dst;
-    DWORD* src = arg->src;
-
-    DWORD dst_regtype = shader_get_regtype(dst);
-    char tmpLine[256];
-    unsigned int i;
-
-    if ((curOpcode->opcode == WINED3DSIO_MOV && dst_regtype == WINED3DSPR_ADDR) || curOpcode->opcode == WINED3DSIO_MOVA) {
-        memset(tmpLine, 0, sizeof(tmpLine));
-        if(shader->rel_offset) {
-            vshader_program_add_param(arg, src[0], TRUE, tmpLine);
-            shader_addline(buffer, "ADD TMP.x, %s, helper_const.z;\n", tmpLine);
-            shader_addline(buffer, "ARL A0.x, TMP.x;\n");
-        } else {
-            /* Apple's ARB_vertex_program implementation does not accept an ARL source argument
-             * with more than one component. Thus replicate the first source argument over all
-             * 4 components. For example, .xyzw -> .x (or better: .xxxx), .zwxy -> .z, etc)
-             */
-            DWORD parm = src[0] & ~(WINED3DVS_SWIZZLE_MASK);
-                   if((src[0] & WINED3DVS_X_W) == WINED3DVS_X_W) {
-                parm |= WINED3DVS_X_W | WINED3DVS_Y_W | WINED3DVS_Z_W | WINED3DVS_W_W;
-            } else if((src[0] & WINED3DVS_X_Z) == WINED3DVS_X_Z) {
-                parm |= WINED3DVS_X_Z | WINED3DVS_Y_Z | WINED3DVS_Z_Z | WINED3DVS_W_Z;
-            } else if((src[0] & WINED3DVS_X_Y) == WINED3DVS_X_Y) {
-                parm |= WINED3DVS_X_Y | WINED3DVS_Y_Y | WINED3DVS_Z_Y | WINED3DVS_W_Y;
-            } else if((src[0] & WINED3DVS_X_X) == WINED3DVS_X_X) {
-                parm |= WINED3DVS_X_X | WINED3DVS_Y_X | WINED3DVS_Z_X | WINED3DVS_W_X;
-            }
-            vshader_program_add_param(arg, parm, TRUE, tmpLine);
-            shader_addline(buffer, "ARL A0.x, %s;\n", tmpLine);
-        }
-        return;
-    } else
-        strcpy(tmpLine, curOpcode->glname);
-
-    if (curOpcode->num_params > 0) {
-        vshader_program_add_param(arg, dst, FALSE, tmpLine);
-        for (i = 1; i < curOpcode->num_params; ++i) {
-           strcat(tmpLine, ",");
-           vshader_program_add_param(arg, src[i-1], TRUE, tmpLine);
-        }
-    }
-   shader_addline(buffer, "%s;\n", tmpLine);
-}
-
 static GLuint create_arb_blt_vertex_program(WineD3D_GL_Info *gl_info) {
     GLuint program_id = 0;
     const char *blt_vprogram =
diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index 29cd368..4b619d8 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -99,32 +99,32 @@ static HRESULT  WINAPI IWineD3DPixelShaderImpl_GetFunction(IWineD3DPixelShader*
 
 CONST SHADER_OPCODE IWineD3DPixelShaderImpl_shader_ins[] = {
     /* Arithmetic */
-    {WINED3DSIO_NOP,  "nop", "NOP", 0, 0, pshader_hw_map2gl, NULL, 0, 0},
-    {WINED3DSIO_MOV,  "mov", "MOV", 1, 2, pshader_hw_map2gl, shader_glsl_mov, 0, 0},
-    {WINED3DSIO_ADD,  "add", "ADD", 1, 3, pshader_hw_map2gl, shader_glsl_arith, 0, 0},
-    {WINED3DSIO_SUB,  "sub", "SUB", 1, 3, pshader_hw_map2gl, shader_glsl_arith, 0, 0},
-    {WINED3DSIO_MAD,  "mad", "MAD", 1, 4, pshader_hw_map2gl, shader_glsl_mad, 0, 0},
-    {WINED3DSIO_MUL,  "mul", "MUL", 1, 3, pshader_hw_map2gl, shader_glsl_arith, 0, 0},
-    {WINED3DSIO_RCP,  "rcp", "RCP",  1, 2, pshader_hw_map2gl, shader_glsl_rcp, 0, 0},
-    {WINED3DSIO_RSQ,  "rsq",  "RSQ", 1, 2, pshader_hw_map2gl, shader_glsl_rsq, 0, 0},
-    {WINED3DSIO_DP3,  "dp3",  "DP3", 1, 3, pshader_hw_map2gl, shader_glsl_dot, 0, 0},
-    {WINED3DSIO_DP4,  "dp4",  "DP4", 1, 3, pshader_hw_map2gl, shader_glsl_dot, 0, 0},
-    {WINED3DSIO_MIN,  "min",  "MIN", 1, 3, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_MAX,  "max",  "MAX", 1, 3, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_SLT,  "slt",  "SLT", 1, 3, pshader_hw_map2gl, shader_glsl_compare, 0, 0},
-    {WINED3DSIO_SGE,  "sge",  "SGE", 1, 3, pshader_hw_map2gl, shader_glsl_compare, 0, 0},
-    {WINED3DSIO_ABS,  "abs",  "ABS", 1, 2, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_EXP,  "exp",  "EX2", 1, 2, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_LOG,  "log",  "LG2", 1, 2, pshader_hw_map2gl, shader_glsl_log, 0, 0},
-    {WINED3DSIO_EXPP, "expp", "EXP", 1, 2, pshader_hw_map2gl, shader_glsl_expp, 0, 0},
-    {WINED3DSIO_LOGP, "logp", "LOG", 1, 2, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_DST,  "dst",  "DST", 1, 3, pshader_hw_map2gl, shader_glsl_dst, 0, 0},
-    {WINED3DSIO_LRP,  "lrp",  "LRP", 1, 4, pshader_hw_map2gl, shader_glsl_lrp, 0, 0},
-    {WINED3DSIO_FRC,  "frc",  "FRC", 1, 2, pshader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_NOP,  "nop", "NOP", 0, 0, shader_hw_map2gl, NULL, 0, 0},
+    {WINED3DSIO_MOV,  "mov", "MOV", 1, 2, shader_hw_map2gl, shader_glsl_mov, 0, 0},
+    {WINED3DSIO_ADD,  "add", "ADD", 1, 3, shader_hw_map2gl, shader_glsl_arith, 0, 0},
+    {WINED3DSIO_SUB,  "sub", "SUB", 1, 3, shader_hw_map2gl, shader_glsl_arith, 0, 0},
+    {WINED3DSIO_MAD,  "mad", "MAD", 1, 4, shader_hw_map2gl, shader_glsl_mad, 0, 0},
+    {WINED3DSIO_MUL,  "mul", "MUL", 1, 3, shader_hw_map2gl, shader_glsl_arith, 0, 0},
+    {WINED3DSIO_RCP,  "rcp", "RCP",  1, 2, shader_hw_map2gl, shader_glsl_rcp, 0, 0},
+    {WINED3DSIO_RSQ,  "rsq",  "RSQ", 1, 2, shader_hw_map2gl, shader_glsl_rsq, 0, 0},
+    {WINED3DSIO_DP3,  "dp3",  "DP3", 1, 3, shader_hw_map2gl, shader_glsl_dot, 0, 0},
+    {WINED3DSIO_DP4,  "dp4",  "DP4", 1, 3, shader_hw_map2gl, shader_glsl_dot, 0, 0},
+    {WINED3DSIO_MIN,  "min",  "MIN", 1, 3, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_MAX,  "max",  "MAX", 1, 3, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_SLT,  "slt",  "SLT", 1, 3, shader_hw_map2gl, shader_glsl_compare, 0, 0},
+    {WINED3DSIO_SGE,  "sge",  "SGE", 1, 3, shader_hw_map2gl, shader_glsl_compare, 0, 0},
+    {WINED3DSIO_ABS,  "abs",  "ABS", 1, 2, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_EXP,  "exp",  "EX2", 1, 2, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_LOG,  "log",  "LG2", 1, 2, shader_hw_map2gl, shader_glsl_log, 0, 0},
+    {WINED3DSIO_EXPP, "expp", "EXP", 1, 2, shader_hw_map2gl, shader_glsl_expp, 0, 0},
+    {WINED3DSIO_LOGP, "logp", "LOG", 1, 2, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_DST,  "dst",  "DST", 1, 3, shader_hw_map2gl, shader_glsl_dst, 0, 0},
+    {WINED3DSIO_LRP,  "lrp",  "LRP", 1, 4, shader_hw_map2gl, shader_glsl_lrp, 0, 0},
+    {WINED3DSIO_FRC,  "frc",  "FRC", 1, 2, shader_hw_map2gl, shader_glsl_map2gl, 0, 0},
     {WINED3DSIO_CND,  "cnd",  NULL, 1, 4, pshader_hw_cnd, shader_glsl_cnd, WINED3DPS_VERSION(1,0), WINED3DPS_VERSION(1,4)},
     {WINED3DSIO_CMP,  "cmp",  NULL, 1, 4, pshader_hw_cmp, shader_glsl_cmp, WINED3DPS_VERSION(1,2), WINED3DPS_VERSION(3,0)},
-    {WINED3DSIO_POW,  "pow",  "POW", 1, 3, pshader_hw_map2gl, shader_glsl_pow, 0, 0},
-    {WINED3DSIO_CRS,  "crs",  "XPD", 1, 3, pshader_hw_map2gl, shader_glsl_cross, 0, 0},
+    {WINED3DSIO_POW,  "pow",  "POW", 1, 3, shader_hw_map2gl, shader_glsl_pow, 0, 0},
+    {WINED3DSIO_CRS,  "crs",  "XPD", 1, 3, shader_hw_map2gl, shader_glsl_cross, 0, 0},
     {WINED3DSIO_NRM,      "nrm",      NULL, 1, 2, shader_hw_nrm, shader_glsl_map2gl, 0, 0},
     {WINED3DSIO_SINCOS,   "sincos",   NULL, 1, 4, shader_hw_sincos, shader_glsl_sincos, WINED3DPS_VERSION(2,0), WINED3DPS_VERSION(2,1)},
     {WINED3DSIO_SINCOS,   "sincos",   "SCS", 1, 2, shader_hw_sincos, shader_glsl_sincos, WINED3DPS_VERSION(3,0), -1},
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 928b97d..68faa19 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -43,32 +43,32 @@ CONST SHADER_OPCODE IWineD3DVertexShaderImpl_shader_ins[] = {
     /* This table is not order or position dependent. */
 
     /* Arithmetic */
-    {WINED3DSIO_NOP,    "nop",  "NOP", 0, 0, vshader_hw_map2gl,   NULL, 0, 0},
-    {WINED3DSIO_MOV,    "mov",  "MOV", 1, 2, vshader_hw_map2gl,   shader_glsl_mov, 0, 0},
-    {WINED3DSIO_MOVA,   "mova",  NULL, 1, 2, vshader_hw_map2gl,   shader_glsl_mov, WINED3DVS_VERSION(2,0), -1},
-    {WINED3DSIO_ADD,    "add",  "ADD", 1, 3, vshader_hw_map2gl,   shader_glsl_arith, 0, 0},
-    {WINED3DSIO_SUB,    "sub",  "SUB", 1, 3, vshader_hw_map2gl,   shader_glsl_arith, 0, 0},
-    {WINED3DSIO_MAD,    "mad",  "MAD", 1, 4, vshader_hw_map2gl,   shader_glsl_mad, 0, 0},
-    {WINED3DSIO_MUL,    "mul",  "MUL", 1, 3, vshader_hw_map2gl,   shader_glsl_arith, 0, 0},
+    {WINED3DSIO_NOP,    "nop",  "NOP", 0, 0, shader_hw_map2gl,    NULL, 0, 0},
+    {WINED3DSIO_MOV,    "mov",  "MOV", 1, 2, shader_hw_map2gl,    shader_glsl_mov, 0, 0},
+    {WINED3DSIO_MOVA,   "mova",  NULL, 1, 2, shader_hw_map2gl,    shader_glsl_mov, WINED3DVS_VERSION(2,0), -1},
+    {WINED3DSIO_ADD,    "add",  "ADD", 1, 3, shader_hw_map2gl,    shader_glsl_arith, 0, 0},
+    {WINED3DSIO_SUB,    "sub",  "SUB", 1, 3, shader_hw_map2gl,    shader_glsl_arith, 0, 0},
+    {WINED3DSIO_MAD,    "mad",  "MAD", 1, 4, shader_hw_map2gl,    shader_glsl_mad, 0, 0},
+    {WINED3DSIO_MUL,    "mul",  "MUL", 1, 3, shader_hw_map2gl,    shader_glsl_arith, 0, 0},
     {WINED3DSIO_RCP,    "rcp",  "RCP", 1, 2, vshader_hw_rsq_rcp,  shader_glsl_rcp, 0, 0},
     {WINED3DSIO_RSQ,    "rsq",  "RSQ", 1, 2, vshader_hw_rsq_rcp,  shader_glsl_rsq, 0, 0},
-    {WINED3DSIO_DP3,    "dp3",  "DP3", 1, 3, vshader_hw_map2gl,   shader_glsl_dot, 0, 0},
-    {WINED3DSIO_DP4,    "dp4",  "DP4", 1, 3, vshader_hw_map2gl,   shader_glsl_dot, 0, 0},
-    {WINED3DSIO_MIN,    "min",  "MIN", 1, 3, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_MAX,    "max",  "MAX", 1, 3, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_SLT,    "slt",  "SLT", 1, 3, vshader_hw_map2gl,   shader_glsl_compare, 0, 0},
-    {WINED3DSIO_SGE,    "sge",  "SGE", 1, 3, vshader_hw_map2gl,   shader_glsl_compare, 0, 0},
-    {WINED3DSIO_ABS,    "abs",  "ABS", 1, 2, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_EXP,    "exp",  "EX2", 1, 2, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_LOG,    "log",  "LG2", 1, 2, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_EXPP,   "expp", "EXP", 1, 2, vshader_hw_map2gl,   shader_glsl_expp, 0, 0},
-    {WINED3DSIO_LOGP,   "logp", "LOG", 1, 2, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_LIT,    "lit",  "LIT", 1, 2, vshader_hw_map2gl,   shader_glsl_lit, 0, 0},
-    {WINED3DSIO_DST,    "dst",  "DST", 1, 3, vshader_hw_map2gl,   shader_glsl_dst, 0, 0},
+    {WINED3DSIO_DP3,    "dp3",  "DP3", 1, 3, shader_hw_map2gl,    shader_glsl_dot, 0, 0},
+    {WINED3DSIO_DP4,    "dp4",  "DP4", 1, 3, shader_hw_map2gl,    shader_glsl_dot, 0, 0},
+    {WINED3DSIO_MIN,    "min",  "MIN", 1, 3, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_MAX,    "max",  "MAX", 1, 3, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_SLT,    "slt",  "SLT", 1, 3, shader_hw_map2gl,    shader_glsl_compare, 0, 0},
+    {WINED3DSIO_SGE,    "sge",  "SGE", 1, 3, shader_hw_map2gl,    shader_glsl_compare, 0, 0},
+    {WINED3DSIO_ABS,    "abs",  "ABS", 1, 2, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_EXP,    "exp",  "EX2", 1, 2, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_LOG,    "log",  "LG2", 1, 2, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_EXPP,   "expp", "EXP", 1, 2, shader_hw_map2gl,    shader_glsl_expp, 0, 0},
+    {WINED3DSIO_LOGP,   "logp", "LOG", 1, 2, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_LIT,    "lit",  "LIT", 1, 2, shader_hw_map2gl,    shader_glsl_lit, 0, 0},
+    {WINED3DSIO_DST,    "dst",  "DST", 1, 3, shader_hw_map2gl,    shader_glsl_dst, 0, 0},
     {WINED3DSIO_LRP,    "lrp",  "LRP", 1, 4, NULL,                shader_glsl_lrp, 0, 0},
-    {WINED3DSIO_FRC,    "frc",  "FRC", 1, 2, vshader_hw_map2gl,   shader_glsl_map2gl, 0, 0},
-    {WINED3DSIO_POW,    "pow",  "POW", 1, 3, vshader_hw_map2gl,   shader_glsl_pow, 0, 0},
-    {WINED3DSIO_CRS,    "crs",  "XPD", 1, 3, vshader_hw_map2gl,   shader_glsl_cross, 0, 0},
+    {WINED3DSIO_FRC,    "frc",  "FRC", 1, 2, shader_hw_map2gl,    shader_glsl_map2gl, 0, 0},
+    {WINED3DSIO_POW,    "pow",  "POW", 1, 3, shader_hw_map2gl,    shader_glsl_pow, 0, 0},
+    {WINED3DSIO_CRS,    "crs",  "XPD", 1, 3, shader_hw_map2gl,    shader_glsl_cross, 0, 0},
     /* TODO: sng can possibly be performed a  s
         RCP tmp, vec
         MUL out, tmp, vec*/
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 95da129..732ca22 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2030,7 +2030,6 @@ extern void shader_hw_def(SHADER_OPCODE_ARG *arg);
 extern void pshader_hw_bem(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_cnd(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_cmp(SHADER_OPCODE_ARG* arg);
-extern void pshader_hw_map2gl(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_tex(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_texcoord(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_texreg2ar(SHADER_OPCODE_ARG* arg);
@@ -2052,12 +2051,12 @@ extern void pshader_hw_dp2add(SHADER_OPCODE_ARG* arg);
 extern void pshader_hw_texreg2rgb(SHADER_OPCODE_ARG* arg);
 
 /* ARB vertex / pixel shader common prototypes */
+extern void shader_hw_map2gl(SHADER_OPCODE_ARG* arg);
 extern void shader_hw_nrm(SHADER_OPCODE_ARG* arg);
 extern void shader_hw_sincos(SHADER_OPCODE_ARG* arg);
 extern void shader_hw_mnxn(SHADER_OPCODE_ARG* arg);
 
 /* ARB vertex shader prototypes */
-extern void vshader_hw_map2gl(SHADER_OPCODE_ARG* arg);
 extern void vshader_hw_rsq_rcp(SHADER_OPCODE_ARG* arg);
 
 /* GLSL helper functions */
-- 
1.5.6.4



--------------080508020104080109030509--



More information about the wine-patches mailing list