[PATCH 2/4] d3dcompiler: Move some bytecode output functions to bytecodewriter.c.

Henri Verbeet hverbeet at codeweavers.com
Mon Oct 18 06:05:49 CDT 2010


Note that for most of these a table based approach wouldn't hurt.
---
 dlls/d3dcompiler_43/asmutils.c            |  220 ---------------------------
 dlls/d3dcompiler_43/bytecodewriter.c      |  230 +++++++++++++++++++++++++++++
 dlls/d3dcompiler_43/d3dcompiler_private.h |   10 --
 3 files changed, 230 insertions(+), 230 deletions(-)

diff --git a/dlls/d3dcompiler_43/asmutils.c b/dlls/d3dcompiler_43/asmutils.c
index 11f5d22..4219269 100644
--- a/dlls/d3dcompiler_43/asmutils.c
+++ b/dlls/d3dcompiler_43/asmutils.c
@@ -28,226 +28,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
 
-/* bwriter -> d3d9 conversion functions */
-DWORD d3d9_swizzle(DWORD bwriter_swizzle) {
-    /* Currently a NOP, but this allows changing the internal definitions
-     * without side effects
-     */
-    DWORD ret = 0;
-
-    if((bwriter_swizzle & BWRITERVS_X_X) == BWRITERVS_X_X) ret |= D3DVS_X_X;
-    if((bwriter_swizzle & BWRITERVS_X_Y) == BWRITERVS_X_Y) ret |= D3DVS_X_Y;
-    if((bwriter_swizzle & BWRITERVS_X_Z) == BWRITERVS_X_Z) ret |= D3DVS_X_Z;
-    if((bwriter_swizzle & BWRITERVS_X_W) == BWRITERVS_X_W) ret |= D3DVS_X_W;
-
-    if((bwriter_swizzle & BWRITERVS_Y_X) == BWRITERVS_Y_X) ret |= D3DVS_Y_X;
-    if((bwriter_swizzle & BWRITERVS_Y_Y) == BWRITERVS_Y_Y) ret |= D3DVS_Y_Y;
-    if((bwriter_swizzle & BWRITERVS_Y_Z) == BWRITERVS_Y_Z) ret |= D3DVS_Y_Z;
-    if((bwriter_swizzle & BWRITERVS_Y_W) == BWRITERVS_Y_W) ret |= D3DVS_Y_W;
-
-    if((bwriter_swizzle & BWRITERVS_Z_X) == BWRITERVS_Z_X) ret |= D3DVS_Z_X;
-    if((bwriter_swizzle & BWRITERVS_Z_Y) == BWRITERVS_Z_Y) ret |= D3DVS_Z_Y;
-    if((bwriter_swizzle & BWRITERVS_Z_Z) == BWRITERVS_Z_Z) ret |= D3DVS_Z_Z;
-    if((bwriter_swizzle & BWRITERVS_Z_W) == BWRITERVS_Z_W) ret |= D3DVS_Z_W;
-
-    if((bwriter_swizzle & BWRITERVS_W_X) == BWRITERVS_W_X) ret |= D3DVS_W_X;
-    if((bwriter_swizzle & BWRITERVS_W_Y) == BWRITERVS_W_Y) ret |= D3DVS_W_Y;
-    if((bwriter_swizzle & BWRITERVS_W_Z) == BWRITERVS_W_Z) ret |= D3DVS_W_Z;
-    if((bwriter_swizzle & BWRITERVS_W_W) == BWRITERVS_W_W) ret |= D3DVS_W_W;
-
-    return ret;
-}
-
-DWORD d3d9_writemask(DWORD bwriter_writemask) {
-    DWORD ret = 0;
-
-    if(bwriter_writemask & BWRITERSP_WRITEMASK_0) ret |= D3DSP_WRITEMASK_0;
-    if(bwriter_writemask & BWRITERSP_WRITEMASK_1) ret |= D3DSP_WRITEMASK_1;
-    if(bwriter_writemask & BWRITERSP_WRITEMASK_2) ret |= D3DSP_WRITEMASK_2;
-    if(bwriter_writemask & BWRITERSP_WRITEMASK_3) ret |= D3DSP_WRITEMASK_3;
-
-    return ret;
-}
-
-DWORD d3d9_srcmod(DWORD bwriter_srcmod) {
-    switch(bwriter_srcmod) {
-        case BWRITERSPSM_NONE:       return D3DSPSM_NONE;
-        case BWRITERSPSM_NEG:        return D3DSPSM_NEG;
-        case BWRITERSPSM_BIAS:       return D3DSPSM_BIAS;
-        case BWRITERSPSM_BIASNEG:    return D3DSPSM_BIASNEG;
-        case BWRITERSPSM_SIGN:       return D3DSPSM_SIGN;
-        case BWRITERSPSM_SIGNNEG:    return D3DSPSM_SIGNNEG;
-        case BWRITERSPSM_COMP:       return D3DSPSM_COMP;
-        case BWRITERSPSM_X2:         return D3DSPSM_X2;
-        case BWRITERSPSM_X2NEG:      return D3DSPSM_X2NEG;
-        case BWRITERSPSM_DZ:         return D3DSPSM_DZ;
-        case BWRITERSPSM_DW:         return D3DSPSM_DW;
-        case BWRITERSPSM_ABS:        return D3DSPSM_ABS;
-        case BWRITERSPSM_ABSNEG:     return D3DSPSM_ABSNEG;
-        case BWRITERSPSM_NOT:        return D3DSPSM_NOT;
-        default:
-            FIXME("Unhandled BWRITERSPSM token %u\n", bwriter_srcmod);
-            return 0;
-    }
-}
-
-DWORD d3d9_dstmod(DWORD bwriter_mod) {
-    DWORD ret = 0;
-
-    if(bwriter_mod & BWRITERSPDM_SATURATE)          ret |= D3DSPDM_SATURATE;
-    if(bwriter_mod & BWRITERSPDM_PARTIALPRECISION)  ret |= D3DSPDM_PARTIALPRECISION;
-    if(bwriter_mod & BWRITERSPDM_MSAMPCENTROID)     ret |= D3DSPDM_MSAMPCENTROID;
-
-    return ret;
-}
-
-DWORD d3d9_comparetype(DWORD asmshader_comparetype) {
-    switch(asmshader_comparetype) {
-        case BWRITER_COMPARISON_GT:     return D3DSPC_GT;
-        case BWRITER_COMPARISON_EQ:     return D3DSPC_EQ;
-        case BWRITER_COMPARISON_GE:     return D3DSPC_GE;
-        case BWRITER_COMPARISON_LT:     return D3DSPC_LT;
-        case BWRITER_COMPARISON_NE:     return D3DSPC_NE;
-        case BWRITER_COMPARISON_LE:     return D3DSPC_LE;
-        default:
-            FIXME("Unexpected BWRITER_COMPARISON type %u\n", asmshader_comparetype);
-            return 0;
-    }
-}
-
-DWORD d3d9_sampler(DWORD bwriter_sampler) {
-    if(bwriter_sampler == BWRITERSTT_UNKNOWN)   return D3DSTT_UNKNOWN;
-    if(bwriter_sampler == BWRITERSTT_1D)        return D3DSTT_1D;
-    if(bwriter_sampler == BWRITERSTT_2D)        return D3DSTT_2D;
-    if(bwriter_sampler == BWRITERSTT_CUBE)      return D3DSTT_CUBE;
-    if(bwriter_sampler == BWRITERSTT_VOLUME)    return D3DSTT_VOLUME;
-    FIXME("Unexpected BWRITERSAMPLER_TEXTURE_TYPE type %u\n", bwriter_sampler);
-
-    return 0;
-}
-
-DWORD d3d9_register(DWORD bwriter_register) {
-    if(bwriter_register == BWRITERSPR_TEMP)         return D3DSPR_TEMP;
-    if(bwriter_register == BWRITERSPR_INPUT)        return D3DSPR_INPUT;
-    if(bwriter_register == BWRITERSPR_CONST)        return D3DSPR_CONST;
-    if(bwriter_register == BWRITERSPR_ADDR)         return D3DSPR_ADDR;
-    if(bwriter_register == BWRITERSPR_TEXTURE)      return D3DSPR_TEXTURE;
-    if(bwriter_register == BWRITERSPR_RASTOUT)      return D3DSPR_RASTOUT;
-    if(bwriter_register == BWRITERSPR_ATTROUT)      return D3DSPR_ATTROUT;
-    if(bwriter_register == BWRITERSPR_TEXCRDOUT)    return D3DSPR_TEXCRDOUT;
-    if(bwriter_register == BWRITERSPR_OUTPUT)       return D3DSPR_OUTPUT;
-    if(bwriter_register == BWRITERSPR_CONSTINT)     return D3DSPR_CONSTINT;
-    if(bwriter_register == BWRITERSPR_COLOROUT)     return D3DSPR_COLOROUT;
-    if(bwriter_register == BWRITERSPR_DEPTHOUT)     return D3DSPR_DEPTHOUT;
-    if(bwriter_register == BWRITERSPR_SAMPLER)      return D3DSPR_SAMPLER;
-    if(bwriter_register == BWRITERSPR_CONSTBOOL)    return D3DSPR_CONSTBOOL;
-    if(bwriter_register == BWRITERSPR_LOOP)         return D3DSPR_LOOP;
-    if(bwriter_register == BWRITERSPR_MISCTYPE)     return D3DSPR_MISCTYPE;
-    if(bwriter_register == BWRITERSPR_LABEL)        return D3DSPR_LABEL;
-    if(bwriter_register == BWRITERSPR_PREDICATE)    return D3DSPR_PREDICATE;
-
-    FIXME("Unexpected BWRITERSPR %u\n", bwriter_register);
-    return -1;
-}
-
-DWORD d3d9_opcode(DWORD bwriter_opcode) {
-    switch(bwriter_opcode) {
-        case BWRITERSIO_NOP:         return D3DSIO_NOP;
-        case BWRITERSIO_MOV:         return D3DSIO_MOV;
-        case BWRITERSIO_ADD:         return D3DSIO_ADD;
-        case BWRITERSIO_SUB:         return D3DSIO_SUB;
-        case BWRITERSIO_MAD:         return D3DSIO_MAD;
-        case BWRITERSIO_MUL:         return D3DSIO_MUL;
-        case BWRITERSIO_RCP:         return D3DSIO_RCP;
-        case BWRITERSIO_RSQ:         return D3DSIO_RSQ;
-        case BWRITERSIO_DP3:         return D3DSIO_DP3;
-        case BWRITERSIO_DP4:         return D3DSIO_DP4;
-        case BWRITERSIO_MIN:         return D3DSIO_MIN;
-        case BWRITERSIO_MAX:         return D3DSIO_MAX;
-        case BWRITERSIO_SLT:         return D3DSIO_SLT;
-        case BWRITERSIO_SGE:         return D3DSIO_SGE;
-        case BWRITERSIO_EXP:         return D3DSIO_EXP;
-        case BWRITERSIO_LOG:         return D3DSIO_LOG;
-        case BWRITERSIO_LIT:         return D3DSIO_LIT;
-        case BWRITERSIO_DST:         return D3DSIO_DST;
-        case BWRITERSIO_LRP:         return D3DSIO_LRP;
-        case BWRITERSIO_FRC:         return D3DSIO_FRC;
-        case BWRITERSIO_M4x4:        return D3DSIO_M4x4;
-        case BWRITERSIO_M4x3:        return D3DSIO_M4x3;
-        case BWRITERSIO_M3x4:        return D3DSIO_M3x4;
-        case BWRITERSIO_M3x3:        return D3DSIO_M3x3;
-        case BWRITERSIO_M3x2:        return D3DSIO_M3x2;
-        case BWRITERSIO_CALL:        return D3DSIO_CALL;
-        case BWRITERSIO_CALLNZ:      return D3DSIO_CALLNZ;
-        case BWRITERSIO_LOOP:        return D3DSIO_LOOP;
-        case BWRITERSIO_RET:         return D3DSIO_RET;
-        case BWRITERSIO_ENDLOOP:     return D3DSIO_ENDLOOP;
-        case BWRITERSIO_LABEL:       return D3DSIO_LABEL;
-        case BWRITERSIO_DCL:         return D3DSIO_DCL;
-        case BWRITERSIO_POW:         return D3DSIO_POW;
-        case BWRITERSIO_CRS:         return D3DSIO_CRS;
-        case BWRITERSIO_SGN:         return D3DSIO_SGN;
-        case BWRITERSIO_ABS:         return D3DSIO_ABS;
-        case BWRITERSIO_NRM:         return D3DSIO_NRM;
-        case BWRITERSIO_SINCOS:      return D3DSIO_SINCOS;
-        case BWRITERSIO_REP:         return D3DSIO_REP;
-        case BWRITERSIO_ENDREP:      return D3DSIO_ENDREP;
-        case BWRITERSIO_IF:          return D3DSIO_IF;
-        case BWRITERSIO_IFC:         return D3DSIO_IFC;
-        case BWRITERSIO_ELSE:        return D3DSIO_ELSE;
-        case BWRITERSIO_ENDIF:       return D3DSIO_ENDIF;
-        case BWRITERSIO_BREAK:       return D3DSIO_BREAK;
-        case BWRITERSIO_BREAKC:      return D3DSIO_BREAKC;
-        case BWRITERSIO_MOVA:        return D3DSIO_MOVA;
-        case BWRITERSIO_DEFB:        return D3DSIO_DEFB;
-        case BWRITERSIO_DEFI:        return D3DSIO_DEFI;
-
-        case BWRITERSIO_TEXCOORD:    return D3DSIO_TEXCOORD;
-        case BWRITERSIO_TEXKILL:     return D3DSIO_TEXKILL;
-        case BWRITERSIO_TEX:         return D3DSIO_TEX;
-        case BWRITERSIO_TEXBEM:      return D3DSIO_TEXBEM;
-        case BWRITERSIO_TEXBEML:     return D3DSIO_TEXBEML;
-        case BWRITERSIO_TEXREG2AR:   return D3DSIO_TEXREG2AR;
-        case BWRITERSIO_TEXREG2GB:   return D3DSIO_TEXREG2GB;
-        case BWRITERSIO_TEXM3x2PAD:  return D3DSIO_TEXM3x2PAD;
-        case BWRITERSIO_TEXM3x2TEX:  return D3DSIO_TEXM3x2TEX;
-        case BWRITERSIO_TEXM3x3PAD:  return D3DSIO_TEXM3x3PAD;
-        case BWRITERSIO_TEXM3x3TEX:  return D3DSIO_TEXM3x3TEX;
-        case BWRITERSIO_TEXM3x3SPEC: return D3DSIO_TEXM3x3SPEC;
-        case BWRITERSIO_TEXM3x3VSPEC:return D3DSIO_TEXM3x3VSPEC;
-        case BWRITERSIO_EXPP:        return D3DSIO_EXPP;
-        case BWRITERSIO_LOGP:        return D3DSIO_LOGP;
-        case BWRITERSIO_CND:         return D3DSIO_CND;
-        case BWRITERSIO_DEF:         return D3DSIO_DEF;
-        case BWRITERSIO_TEXREG2RGB:  return D3DSIO_TEXREG2RGB;
-        case BWRITERSIO_TEXDP3TEX:   return D3DSIO_TEXDP3TEX;
-        case BWRITERSIO_TEXM3x2DEPTH:return D3DSIO_TEXM3x2DEPTH;
-        case BWRITERSIO_TEXDP3:      return D3DSIO_TEXDP3;
-        case BWRITERSIO_TEXM3x3:     return D3DSIO_TEXM3x3;
-        case BWRITERSIO_TEXDEPTH:    return D3DSIO_TEXDEPTH;
-        case BWRITERSIO_CMP:         return D3DSIO_CMP;
-        case BWRITERSIO_BEM:         return D3DSIO_BEM;
-        case BWRITERSIO_DP2ADD:      return D3DSIO_DP2ADD;
-        case BWRITERSIO_DSX:         return D3DSIO_DSX;
-        case BWRITERSIO_DSY:         return D3DSIO_DSY;
-        case BWRITERSIO_TEXLDD:      return D3DSIO_TEXLDD;
-        case BWRITERSIO_SETP:        return D3DSIO_SETP;
-        case BWRITERSIO_TEXLDL:      return D3DSIO_TEXLDL;
-        case BWRITERSIO_BREAKP:      return D3DSIO_BREAKP;
-
-        case BWRITERSIO_PHASE:       return D3DSIO_PHASE;
-        case BWRITERSIO_COMMENT:     return D3DSIO_COMMENT;
-        case BWRITERSIO_END:         return D3DSIO_END;
-
-        case BWRITERSIO_TEXLDP:      return D3DSIO_TEX | D3DSI_TEXLD_PROJECT;
-        case BWRITERSIO_TEXLDB:      return D3DSIO_TEX | D3DSI_TEXLD_BIAS;
-
-        default:
-            FIXME("Unhandled BWRITERSIO token %u\n", bwriter_opcode);
-            return -1;
-    }
-}
-
 /* Debug print functions */
 const char *debug_print_srcmod(DWORD mod) {
     switch(mod) {
diff --git a/dlls/d3dcompiler_43/bytecodewriter.c b/dlls/d3dcompiler_43/bytecodewriter.c
index 5ff1e2f..5ea417ee 100644
--- a/dlls/d3dcompiler_43/bytecodewriter.c
+++ b/dlls/d3dcompiler_43/bytecodewriter.c
@@ -341,6 +341,236 @@ static void put_dword(struct bytecode_buffer *buffer, DWORD value) {
     buffer->data[buffer->size++] = value;
 }
 
+/* bwriter -> d3d9 conversion functions. */
+static DWORD d3d9_swizzle(DWORD bwriter_swizzle)
+{
+    /* Currently a NOP, but this allows changing the internal definitions
+     * without side effects. */
+    DWORD ret = 0;
+
+    if ((bwriter_swizzle & BWRITERVS_X_X) == BWRITERVS_X_X) ret |= D3DVS_X_X;
+    if ((bwriter_swizzle & BWRITERVS_X_Y) == BWRITERVS_X_Y) ret |= D3DVS_X_Y;
+    if ((bwriter_swizzle & BWRITERVS_X_Z) == BWRITERVS_X_Z) ret |= D3DVS_X_Z;
+    if ((bwriter_swizzle & BWRITERVS_X_W) == BWRITERVS_X_W) ret |= D3DVS_X_W;
+
+    if ((bwriter_swizzle & BWRITERVS_Y_X) == BWRITERVS_Y_X) ret |= D3DVS_Y_X;
+    if ((bwriter_swizzle & BWRITERVS_Y_Y) == BWRITERVS_Y_Y) ret |= D3DVS_Y_Y;
+    if ((bwriter_swizzle & BWRITERVS_Y_Z) == BWRITERVS_Y_Z) ret |= D3DVS_Y_Z;
+    if ((bwriter_swizzle & BWRITERVS_Y_W) == BWRITERVS_Y_W) ret |= D3DVS_Y_W;
+
+    if ((bwriter_swizzle & BWRITERVS_Z_X) == BWRITERVS_Z_X) ret |= D3DVS_Z_X;
+    if ((bwriter_swizzle & BWRITERVS_Z_Y) == BWRITERVS_Z_Y) ret |= D3DVS_Z_Y;
+    if ((bwriter_swizzle & BWRITERVS_Z_Z) == BWRITERVS_Z_Z) ret |= D3DVS_Z_Z;
+    if ((bwriter_swizzle & BWRITERVS_Z_W) == BWRITERVS_Z_W) ret |= D3DVS_Z_W;
+
+    if ((bwriter_swizzle & BWRITERVS_W_X) == BWRITERVS_W_X) ret |= D3DVS_W_X;
+    if ((bwriter_swizzle & BWRITERVS_W_Y) == BWRITERVS_W_Y) ret |= D3DVS_W_Y;
+    if ((bwriter_swizzle & BWRITERVS_W_Z) == BWRITERVS_W_Z) ret |= D3DVS_W_Z;
+    if ((bwriter_swizzle & BWRITERVS_W_W) == BWRITERVS_W_W) ret |= D3DVS_W_W;
+
+    return ret;
+}
+
+static DWORD d3d9_writemask(DWORD bwriter_writemask)
+{
+    DWORD ret = 0;
+
+    if (bwriter_writemask & BWRITERSP_WRITEMASK_0) ret |= D3DSP_WRITEMASK_0;
+    if (bwriter_writemask & BWRITERSP_WRITEMASK_1) ret |= D3DSP_WRITEMASK_1;
+    if (bwriter_writemask & BWRITERSP_WRITEMASK_2) ret |= D3DSP_WRITEMASK_2;
+    if (bwriter_writemask & BWRITERSP_WRITEMASK_3) ret |= D3DSP_WRITEMASK_3;
+
+    return ret;
+}
+
+static DWORD d3d9_srcmod(DWORD bwriter_srcmod)
+{
+    switch (bwriter_srcmod)
+    {
+        case BWRITERSPSM_NONE:       return D3DSPSM_NONE;
+        case BWRITERSPSM_NEG:        return D3DSPSM_NEG;
+        case BWRITERSPSM_BIAS:       return D3DSPSM_BIAS;
+        case BWRITERSPSM_BIASNEG:    return D3DSPSM_BIASNEG;
+        case BWRITERSPSM_SIGN:       return D3DSPSM_SIGN;
+        case BWRITERSPSM_SIGNNEG:    return D3DSPSM_SIGNNEG;
+        case BWRITERSPSM_COMP:       return D3DSPSM_COMP;
+        case BWRITERSPSM_X2:         return D3DSPSM_X2;
+        case BWRITERSPSM_X2NEG:      return D3DSPSM_X2NEG;
+        case BWRITERSPSM_DZ:         return D3DSPSM_DZ;
+        case BWRITERSPSM_DW:         return D3DSPSM_DW;
+        case BWRITERSPSM_ABS:        return D3DSPSM_ABS;
+        case BWRITERSPSM_ABSNEG:     return D3DSPSM_ABSNEG;
+        case BWRITERSPSM_NOT:        return D3DSPSM_NOT;
+        default:
+            FIXME("Unhandled BWRITERSPSM token %#x.\n", bwriter_srcmod);
+            return 0;
+    }
+}
+
+static DWORD d3d9_dstmod(DWORD bwriter_mod)
+{
+    DWORD ret = 0;
+
+    if (bwriter_mod & BWRITERSPDM_SATURATE)         ret |= D3DSPDM_SATURATE;
+    if (bwriter_mod & BWRITERSPDM_PARTIALPRECISION) ret |= D3DSPDM_PARTIALPRECISION;
+    if (bwriter_mod & BWRITERSPDM_MSAMPCENTROID)    ret |= D3DSPDM_MSAMPCENTROID;
+
+    return ret;
+}
+
+static DWORD d3d9_comparetype(DWORD asmshader_comparetype)
+{
+    switch (asmshader_comparetype)
+    {
+        case BWRITER_COMPARISON_GT:     return D3DSPC_GT;
+        case BWRITER_COMPARISON_EQ:     return D3DSPC_EQ;
+        case BWRITER_COMPARISON_GE:     return D3DSPC_GE;
+        case BWRITER_COMPARISON_LT:     return D3DSPC_LT;
+        case BWRITER_COMPARISON_NE:     return D3DSPC_NE;
+        case BWRITER_COMPARISON_LE:     return D3DSPC_LE;
+        default:
+            FIXME("Unexpected BWRITER_COMPARISON type %#x.\n", asmshader_comparetype);
+            return 0;
+    }
+}
+
+static DWORD d3d9_sampler(DWORD bwriter_sampler)
+{
+    if (bwriter_sampler == BWRITERSTT_UNKNOWN)  return D3DSTT_UNKNOWN;
+    if (bwriter_sampler == BWRITERSTT_1D)       return D3DSTT_1D;
+    if (bwriter_sampler == BWRITERSTT_2D)       return D3DSTT_2D;
+    if (bwriter_sampler == BWRITERSTT_CUBE)     return D3DSTT_CUBE;
+    if (bwriter_sampler == BWRITERSTT_VOLUME)   return D3DSTT_VOLUME;
+    FIXME("Unexpected BWRITERSAMPLER_TEXTURE_TYPE type %#x.\n", bwriter_sampler);
+
+    return 0;
+}
+
+static DWORD d3d9_register(DWORD bwriter_register)
+{
+    if (bwriter_register == BWRITERSPR_TEMP)        return D3DSPR_TEMP;
+    if (bwriter_register == BWRITERSPR_INPUT)       return D3DSPR_INPUT;
+    if (bwriter_register == BWRITERSPR_CONST)       return D3DSPR_CONST;
+    if (bwriter_register == BWRITERSPR_ADDR)        return D3DSPR_ADDR;
+    if (bwriter_register == BWRITERSPR_TEXTURE)     return D3DSPR_TEXTURE;
+    if (bwriter_register == BWRITERSPR_RASTOUT)     return D3DSPR_RASTOUT;
+    if (bwriter_register == BWRITERSPR_ATTROUT)     return D3DSPR_ATTROUT;
+    if (bwriter_register == BWRITERSPR_TEXCRDOUT)   return D3DSPR_TEXCRDOUT;
+    if (bwriter_register == BWRITERSPR_OUTPUT)      return D3DSPR_OUTPUT;
+    if (bwriter_register == BWRITERSPR_CONSTINT)    return D3DSPR_CONSTINT;
+    if (bwriter_register == BWRITERSPR_COLOROUT)    return D3DSPR_COLOROUT;
+    if (bwriter_register == BWRITERSPR_DEPTHOUT)    return D3DSPR_DEPTHOUT;
+    if (bwriter_register == BWRITERSPR_SAMPLER)     return D3DSPR_SAMPLER;
+    if (bwriter_register == BWRITERSPR_CONSTBOOL)   return D3DSPR_CONSTBOOL;
+    if (bwriter_register == BWRITERSPR_LOOP)        return D3DSPR_LOOP;
+    if (bwriter_register == BWRITERSPR_MISCTYPE)    return D3DSPR_MISCTYPE;
+    if (bwriter_register == BWRITERSPR_LABEL)       return D3DSPR_LABEL;
+    if (bwriter_register == BWRITERSPR_PREDICATE)   return D3DSPR_PREDICATE;
+
+    FIXME("Unexpected BWRITERSPR %#x.\n", bwriter_register);
+    return ~0U;
+}
+
+static DWORD d3d9_opcode(DWORD bwriter_opcode)
+{
+    switch (bwriter_opcode)
+    {
+        case BWRITERSIO_NOP:         return D3DSIO_NOP;
+        case BWRITERSIO_MOV:         return D3DSIO_MOV;
+        case BWRITERSIO_ADD:         return D3DSIO_ADD;
+        case BWRITERSIO_SUB:         return D3DSIO_SUB;
+        case BWRITERSIO_MAD:         return D3DSIO_MAD;
+        case BWRITERSIO_MUL:         return D3DSIO_MUL;
+        case BWRITERSIO_RCP:         return D3DSIO_RCP;
+        case BWRITERSIO_RSQ:         return D3DSIO_RSQ;
+        case BWRITERSIO_DP3:         return D3DSIO_DP3;
+        case BWRITERSIO_DP4:         return D3DSIO_DP4;
+        case BWRITERSIO_MIN:         return D3DSIO_MIN;
+        case BWRITERSIO_MAX:         return D3DSIO_MAX;
+        case BWRITERSIO_SLT:         return D3DSIO_SLT;
+        case BWRITERSIO_SGE:         return D3DSIO_SGE;
+        case BWRITERSIO_EXP:         return D3DSIO_EXP;
+        case BWRITERSIO_LOG:         return D3DSIO_LOG;
+        case BWRITERSIO_LIT:         return D3DSIO_LIT;
+        case BWRITERSIO_DST:         return D3DSIO_DST;
+        case BWRITERSIO_LRP:         return D3DSIO_LRP;
+        case BWRITERSIO_FRC:         return D3DSIO_FRC;
+        case BWRITERSIO_M4x4:        return D3DSIO_M4x4;
+        case BWRITERSIO_M4x3:        return D3DSIO_M4x3;
+        case BWRITERSIO_M3x4:        return D3DSIO_M3x4;
+        case BWRITERSIO_M3x3:        return D3DSIO_M3x3;
+        case BWRITERSIO_M3x2:        return D3DSIO_M3x2;
+        case BWRITERSIO_CALL:        return D3DSIO_CALL;
+        case BWRITERSIO_CALLNZ:      return D3DSIO_CALLNZ;
+        case BWRITERSIO_LOOP:        return D3DSIO_LOOP;
+        case BWRITERSIO_RET:         return D3DSIO_RET;
+        case BWRITERSIO_ENDLOOP:     return D3DSIO_ENDLOOP;
+        case BWRITERSIO_LABEL:       return D3DSIO_LABEL;
+        case BWRITERSIO_DCL:         return D3DSIO_DCL;
+        case BWRITERSIO_POW:         return D3DSIO_POW;
+        case BWRITERSIO_CRS:         return D3DSIO_CRS;
+        case BWRITERSIO_SGN:         return D3DSIO_SGN;
+        case BWRITERSIO_ABS:         return D3DSIO_ABS;
+        case BWRITERSIO_NRM:         return D3DSIO_NRM;
+        case BWRITERSIO_SINCOS:      return D3DSIO_SINCOS;
+        case BWRITERSIO_REP:         return D3DSIO_REP;
+        case BWRITERSIO_ENDREP:      return D3DSIO_ENDREP;
+        case BWRITERSIO_IF:          return D3DSIO_IF;
+        case BWRITERSIO_IFC:         return D3DSIO_IFC;
+        case BWRITERSIO_ELSE:        return D3DSIO_ELSE;
+        case BWRITERSIO_ENDIF:       return D3DSIO_ENDIF;
+        case BWRITERSIO_BREAK:       return D3DSIO_BREAK;
+        case BWRITERSIO_BREAKC:      return D3DSIO_BREAKC;
+        case BWRITERSIO_MOVA:        return D3DSIO_MOVA;
+        case BWRITERSIO_DEFB:        return D3DSIO_DEFB;
+        case BWRITERSIO_DEFI:        return D3DSIO_DEFI;
+
+        case BWRITERSIO_TEXCOORD:    return D3DSIO_TEXCOORD;
+        case BWRITERSIO_TEXKILL:     return D3DSIO_TEXKILL;
+        case BWRITERSIO_TEX:         return D3DSIO_TEX;
+        case BWRITERSIO_TEXBEM:      return D3DSIO_TEXBEM;
+        case BWRITERSIO_TEXBEML:     return D3DSIO_TEXBEML;
+        case BWRITERSIO_TEXREG2AR:   return D3DSIO_TEXREG2AR;
+        case BWRITERSIO_TEXREG2GB:   return D3DSIO_TEXREG2GB;
+        case BWRITERSIO_TEXM3x2PAD:  return D3DSIO_TEXM3x2PAD;
+        case BWRITERSIO_TEXM3x2TEX:  return D3DSIO_TEXM3x2TEX;
+        case BWRITERSIO_TEXM3x3PAD:  return D3DSIO_TEXM3x3PAD;
+        case BWRITERSIO_TEXM3x3TEX:  return D3DSIO_TEXM3x3TEX;
+        case BWRITERSIO_TEXM3x3SPEC: return D3DSIO_TEXM3x3SPEC;
+        case BWRITERSIO_TEXM3x3VSPEC:return D3DSIO_TEXM3x3VSPEC;
+        case BWRITERSIO_EXPP:        return D3DSIO_EXPP;
+        case BWRITERSIO_LOGP:        return D3DSIO_LOGP;
+        case BWRITERSIO_CND:         return D3DSIO_CND;
+        case BWRITERSIO_DEF:         return D3DSIO_DEF;
+        case BWRITERSIO_TEXREG2RGB:  return D3DSIO_TEXREG2RGB;
+        case BWRITERSIO_TEXDP3TEX:   return D3DSIO_TEXDP3TEX;
+        case BWRITERSIO_TEXM3x2DEPTH:return D3DSIO_TEXM3x2DEPTH;
+        case BWRITERSIO_TEXDP3:      return D3DSIO_TEXDP3;
+        case BWRITERSIO_TEXM3x3:     return D3DSIO_TEXM3x3;
+        case BWRITERSIO_TEXDEPTH:    return D3DSIO_TEXDEPTH;
+        case BWRITERSIO_CMP:         return D3DSIO_CMP;
+        case BWRITERSIO_BEM:         return D3DSIO_BEM;
+        case BWRITERSIO_DP2ADD:      return D3DSIO_DP2ADD;
+        case BWRITERSIO_DSX:         return D3DSIO_DSX;
+        case BWRITERSIO_DSY:         return D3DSIO_DSY;
+        case BWRITERSIO_TEXLDD:      return D3DSIO_TEXLDD;
+        case BWRITERSIO_SETP:        return D3DSIO_SETP;
+        case BWRITERSIO_TEXLDL:      return D3DSIO_TEXLDL;
+        case BWRITERSIO_BREAKP:      return D3DSIO_BREAKP;
+
+        case BWRITERSIO_PHASE:       return D3DSIO_PHASE;
+        case BWRITERSIO_COMMENT:     return D3DSIO_COMMENT;
+        case BWRITERSIO_END:         return D3DSIO_END;
+
+        case BWRITERSIO_TEXLDP:      return D3DSIO_TEX | D3DSI_TEXLD_PROJECT;
+        case BWRITERSIO_TEXLDB:      return D3DSIO_TEX | D3DSI_TEXLD_BIAS;
+
+        default:
+            FIXME("Unhandled BWRITERSIO token %#x.\n", bwriter_opcode);
+            return ~0U;
+    }
+}
+
 /******************************************************
  * Implementation of the writer functions starts here *
  ******************************************************/
diff --git a/dlls/d3dcompiler_43/d3dcompiler_private.h b/dlls/d3dcompiler_43/d3dcompiler_private.h
index 9584bd9..24dee9e 100644
--- a/dlls/d3dcompiler_43/d3dcompiler_private.h
+++ b/dlls/d3dcompiler_43/d3dcompiler_private.h
@@ -338,16 +338,6 @@ const char *debug_print_srcreg(const struct shader_reg *reg);
 const char *debug_print_comp(DWORD comp);
 const char *debug_print_opcode(DWORD opcode);
 
-/* Utilities for internal->d3d constant mapping */
-DWORD d3d9_swizzle(DWORD bwriter_swizzle);
-DWORD d3d9_writemask(DWORD bwriter_writemask);
-DWORD d3d9_srcmod(DWORD bwriter_srcmod);
-DWORD d3d9_dstmod(DWORD bwriter_mod);
-DWORD d3d9_comparetype(DWORD bwriter_comparetype);
-DWORD d3d9_sampler(DWORD bwriter_sampler);
-DWORD d3d9_register(DWORD bwriter_register);
-DWORD d3d9_opcode(DWORD bwriter_opcode);
-
 /* Used to signal an incorrect swizzle/writemask */
 #define SWIZZLE_ERR ~0U
 
-- 
1.7.2.2




More information about the wine-patches mailing list