Matteo Bruni : d3dx9: Use separate opcodes for TEXLDP and TEXLDB.
Alexandre Julliard
julliard at winehq.org
Fri May 21 12:15:21 CDT 2010
Module: wine
Branch: master
Commit: a9118ba1715c3a4833d3e45f19a69d418e8417bb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a9118ba1715c3a4833d3e45f19a69d418e8417bb
Author: Matteo Bruni <matteo.mystral at gmail.com>
Date: Fri May 21 14:56:43 2010 +0200
d3dx9: Use separate opcodes for TEXLDP and TEXLDB.
There is no reason we have to strictly follow D3D bytecode format in our
intermediate representation.
---
dlls/d3dx9_36/asmshader.y | 4 ++--
dlls/d3dx9_36/asmutils.c | 8 ++++----
dlls/d3dx9_36/bytecodewriter.c | 4 ++--
dlls/d3dx9_36/d3dx9_36_private.h | 5 ++---
4 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/dlls/d3dx9_36/asmshader.y b/dlls/d3dx9_36/asmshader.y
index 0949ee3..8be8328 100644
--- a/dlls/d3dx9_36/asmshader.y
+++ b/dlls/d3dx9_36/asmshader.y
@@ -724,12 +724,12 @@ instruction: INSTR_ADD omods dreg ',' sregs
| INSTR_TEXLDP omods dreg ',' sregs
{
TRACE("TEXLDP\n");
- asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEX | ( BWRITERSI_TEXLD_PROJECT << BWRITER_OPCODESPECIFICCONTROL_SHIFT ), $2.mod, $2.shift, 0, &$3, &$5, 2);
+ asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDP, $2.mod, $2.shift, 0, &$3, &$5, 2);
}
| INSTR_TEXLDB omods dreg ',' sregs
{
TRACE("TEXLDB\n");
- asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEX | ( BWRITERSI_TEXLD_BIAS << BWRITER_OPCODESPECIFICCONTROL_SHIFT ), $2.mod, $2.shift, 0, &$3, &$5, 2);
+ asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDB, $2.mod, $2.shift, 0, &$3, &$5, 2);
}
| INSTR_DSX omods dreg ',' sregs
{
diff --git a/dlls/d3dx9_36/asmutils.c b/dlls/d3dx9_36/asmutils.c
index e000a5f..bd6bcea 100644
--- a/dlls/d3dx9_36/asmutils.c
+++ b/dlls/d3dx9_36/asmutils.c
@@ -209,8 +209,8 @@ DWORD d3d9_opcode(DWORD bwriter_opcode) {
case BWRITERSIO_COMMENT: return D3DSIO_COMMENT;
case BWRITERSIO_END: return D3DSIO_END;
- case BWRITERSIO_TEX | ( BWRITERSI_TEXLD_PROJECT << BWRITER_OPCODESPECIFICCONTROL_SHIFT ): return D3DSIO_TEX | D3DSI_TEXLD_PROJECT;
- case BWRITERSIO_TEX | ( BWRITERSI_TEXLD_BIAS << BWRITER_OPCODESPECIFICCONTROL_SHIFT ): return D3DSIO_TEX | D3DSI_TEXLD_BIAS;
+ 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);
@@ -484,8 +484,8 @@ const char *debug_print_opcode(DWORD opcode) {
case BWRITERSIO_TEXLDL: return "texldl";
case BWRITERSIO_BREAKP: return "breakp";
- case BWRITERSIO_TEX | ( BWRITERSI_TEXLD_PROJECT << BWRITER_OPCODESPECIFICCONTROL_SHIFT ): return "texldp";
- case BWRITERSIO_TEX | ( BWRITERSI_TEXLD_BIAS << BWRITER_OPCODESPECIFICCONTROL_SHIFT ): return "texldb";
+ case BWRITERSIO_TEXLDP: return "texldp";
+ case BWRITERSIO_TEXLDB: return "texldb";
default: return "unknown";
}
diff --git a/dlls/d3dx9_36/bytecodewriter.c b/dlls/d3dx9_36/bytecodewriter.c
index 464ec52..a579ae8 100644
--- a/dlls/d3dx9_36/bytecodewriter.c
+++ b/dlls/d3dx9_36/bytecodewriter.c
@@ -693,8 +693,8 @@ static const struct instr_handler_table ps_3_handlers[] = {
{BWRITERSIO_TEXLDL, instr_handler},
{BWRITERSIO_TEX, instr_handler},
- {BWRITERSIO_TEX | ( BWRITERSI_TEXLD_PROJECT << BWRITER_OPCODESPECIFICCONTROL_SHIFT ), instr_handler},
- {BWRITERSIO_TEX | ( BWRITERSI_TEXLD_BIAS << BWRITER_OPCODESPECIFICCONTROL_SHIFT ), instr_handler},
+ {BWRITERSIO_TEXLDP, instr_handler},
+ {BWRITERSIO_TEXLDB, instr_handler},
{BWRITERSIO_TEXKILL, instr_handler},
{BWRITERSIO_DSX, instr_handler},
{BWRITERSIO_DSY, instr_handler},
diff --git a/dlls/d3dx9_36/d3dx9_36_private.h b/dlls/d3dx9_36/d3dx9_36_private.h
index 923a0df..248503d 100644
--- a/dlls/d3dx9_36/d3dx9_36_private.h
+++ b/dlls/d3dx9_36/d3dx9_36_private.h
@@ -462,6 +462,8 @@ typedef enum _BWRITERSHADER_INSTRUCTION_OPCODE_TYPE {
BWRITERSIO_SETP,
BWRITERSIO_TEXLDL,
BWRITERSIO_BREAKP,
+ BWRITERSIO_TEXLDP,
+ BWRITERSIO_TEXLDB,
BWRITERSIO_COMMENT,
BWRITERSIO_END,
@@ -589,9 +591,6 @@ typedef enum _BWRITERDECLUSAGE {
BWRITERDECLUSAGE_SAMPLE
} BWRITERDECLUSAGE;
-#define BWRITER_OPCODESPECIFICCONTROL_SHIFT 16
-#define BWRITER_OPCODESPECIFICCONTROL_MASK (0xff << BWRITER_OPCODESPECIFICCONTROL_SHIFT)
-
struct bwriter_shader *SlAssembleShader(const char *text, char **messages);
DWORD SlWriteBytecode(const struct bwriter_shader *shader, int dxversion, DWORD **result);
void SlDeleteShader(struct bwriter_shader *shader);
More information about the wine-cvs
mailing list