[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