Henri Verbeet : wined3d: Recognize the SM4 sample_l opcode.
Alexandre Julliard
julliard at winehq.org
Mon Oct 11 13:15:15 CDT 2010
Module: wine
Branch: master
Commit: 18d7a73af8153de281ad7f3dc8b5f01ba701cd28
URL: http://source.winehq.org/git/wine.git/?a=commit;h=18d7a73af8153de281ad7f3dc8b5f01ba701cd28
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Oct 11 13:06:18 2010 +0200
wined3d: Recognize the SM4 sample_l opcode.
---
dlls/wined3d/arb_program_shader.c | 1 +
dlls/wined3d/glsl_shader.c | 1 +
dlls/wined3d/shader.c | 1 +
dlls/wined3d/shader_sm4.c | 122 +++++++++++++++++++------------------
dlls/wined3d/wined3d_private.h | 1 +
5 files changed, 66 insertions(+), 60 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 46462a3..e4eb02a 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -4996,6 +4996,7 @@ static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABL
/* WINED3DSIH_RET */ shader_hw_ret,
/* WINED3DSIH_RSQ */ shader_hw_scalar_op,
/* WINED3DSIH_SAMPLE */ NULL,
+ /* WINED3DSIH_SAMPLE_LOD */ NULL,
/* WINED3DSIH_SETP */ NULL,
/* WINED3DSIH_SGE */ shader_hw_map2gl,
/* WINED3DSIH_SGN */ shader_hw_sgn,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 3efff9a..fd0b853 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -5054,6 +5054,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB
/* WINED3DSIH_RET */ shader_glsl_ret,
/* WINED3DSIH_RSQ */ shader_glsl_rsq,
/* WINED3DSIH_SAMPLE */ NULL,
+ /* WINED3DSIH_SAMPLE_LOD */ NULL,
/* WINED3DSIH_SETP */ NULL,
/* WINED3DSIH_SGE */ shader_glsl_compare,
/* WINED3DSIH_SGN */ shader_glsl_sgn,
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index ff967ce..b7f9a91 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -100,6 +100,7 @@ static const char * const shader_opcode_names[] =
/* WINED3DSIH_RET */ "ret",
/* WINED3DSIH_RSQ */ "rsq",
/* WINED3DSIH_SAMPLE */ "sample",
+ /* WINED3DSIH_SAMPLE_LOD */ "sample_l",
/* WINED3DSIH_SETP */ "setp",
/* WINED3DSIH_SGE */ "sge",
/* WINED3DSIH_SGN */ "sgn",
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index f706b5a..9a02830 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -48,36 +48,37 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
enum wined3d_sm4_opcode
{
- WINED3D_SM4_OP_ADD = 0x00,
- WINED3D_SM4_OP_AND = 0x01,
- WINED3D_SM4_OP_BREAK = 0x02,
- WINED3D_SM4_OP_BREAKC = 0x03,
- WINED3D_SM4_OP_CUT = 0x09,
- WINED3D_SM4_OP_DP3 = 0x10,
- WINED3D_SM4_OP_DP4 = 0x11,
- WINED3D_SM4_OP_EMIT = 0x13,
- WINED3D_SM4_OP_ENDIF = 0x15,
- WINED3D_SM4_OP_ENDLOOP = 0x16,
- WINED3D_SM4_OP_EXP = 0x19,
- WINED3D_SM4_OP_FRC = 0x1a,
- WINED3D_SM4_OP_IADD = 0x1e,
- WINED3D_SM4_OP_IF = 0x1f,
- WINED3D_SM4_OP_IGE = 0x21,
- WINED3D_SM4_OP_IMUL = 0x26,
- WINED3D_SM4_OP_ITOF = 0x2b,
- WINED3D_SM4_OP_LOG = 0x2f,
- WINED3D_SM4_OP_LOOP = 0x30,
- WINED3D_SM4_OP_LT = 0x31,
- WINED3D_SM4_OP_MAD = 0x32,
- WINED3D_SM4_OP_MIN = 0x33,
- WINED3D_SM4_OP_MAX = 0x34,
- WINED3D_SM4_OP_MOV = 0x36,
- WINED3D_SM4_OP_MOVC = 0x37,
- WINED3D_SM4_OP_MUL = 0x38,
- WINED3D_SM4_OP_RET = 0x3e,
- WINED3D_SM4_OP_RSQ = 0x44,
- WINED3D_SM4_OP_SAMPLE = 0x45,
- WINED3D_SM4_OP_SINCOS = 0x4d,
+ WINED3D_SM4_OP_ADD = 0x00,
+ WINED3D_SM4_OP_AND = 0x01,
+ WINED3D_SM4_OP_BREAK = 0x02,
+ WINED3D_SM4_OP_BREAKC = 0x03,
+ WINED3D_SM4_OP_CUT = 0x09,
+ WINED3D_SM4_OP_DP3 = 0x10,
+ WINED3D_SM4_OP_DP4 = 0x11,
+ WINED3D_SM4_OP_EMIT = 0x13,
+ WINED3D_SM4_OP_ENDIF = 0x15,
+ WINED3D_SM4_OP_ENDLOOP = 0x16,
+ WINED3D_SM4_OP_EXP = 0x19,
+ WINED3D_SM4_OP_FRC = 0x1a,
+ WINED3D_SM4_OP_IADD = 0x1e,
+ WINED3D_SM4_OP_IF = 0x1f,
+ WINED3D_SM4_OP_IGE = 0x21,
+ WINED3D_SM4_OP_IMUL = 0x26,
+ WINED3D_SM4_OP_ITOF = 0x2b,
+ WINED3D_SM4_OP_LOG = 0x2f,
+ WINED3D_SM4_OP_LOOP = 0x30,
+ WINED3D_SM4_OP_LT = 0x31,
+ WINED3D_SM4_OP_MAD = 0x32,
+ WINED3D_SM4_OP_MIN = 0x33,
+ WINED3D_SM4_OP_MAX = 0x34,
+ WINED3D_SM4_OP_MOV = 0x36,
+ WINED3D_SM4_OP_MOVC = 0x37,
+ WINED3D_SM4_OP_MUL = 0x38,
+ WINED3D_SM4_OP_RET = 0x3e,
+ WINED3D_SM4_OP_RSQ = 0x44,
+ WINED3D_SM4_OP_SAMPLE = 0x45,
+ WINED3D_SM4_OP_SAMPLE_LOD = 0x48,
+ WINED3D_SM4_OP_SINCOS = 0x4d,
};
enum wined3d_sm4_register_type
@@ -120,36 +121,37 @@ struct sysval_map
static const struct wined3d_sm4_opcode_info opcode_table[] =
{
- {WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, 1, 2},
- {WINED3D_SM4_OP_AND, WINED3DSIH_AND, 1, 2},
- {WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, 0, 0},
- {WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, 0, 1},
- {WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, 0, 0},
- {WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, 1, 2},
- {WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, 1, 2},
- {WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, 0, 0},
- {WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, 0, 0},
- {WINED3D_SM4_OP_ENDLOOP,WINED3DSIH_ENDLOOP, 0, 0},
- {WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, 1, 1},
- {WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, 1, 1},
- {WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, 1, 2},
- {WINED3D_SM4_OP_IF, WINED3DSIH_IF, 0, 1},
- {WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, 1, 2},
- {WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, 2, 2},
- {WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, 1, 1},
- {WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, 1, 1},
- {WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, 0, 0},
- {WINED3D_SM4_OP_LT, WINED3DSIH_LT, 1, 2},
- {WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, 1, 3},
- {WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, 1, 2},
- {WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, 1, 2},
- {WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, 1, 1},
- {WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, 1, 3},
- {WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, 1, 2},
- {WINED3D_SM4_OP_RET, WINED3DSIH_RET, 0, 0},
- {WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, 1, 1},
- {WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, 1, 3},
- {WINED3D_SM4_OP_SINCOS, WINED3DSIH_SINCOS, 2, 1},
+ {WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, 1, 2},
+ {WINED3D_SM4_OP_AND, WINED3DSIH_AND, 1, 2},
+ {WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, 0, 0},
+ {WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, 0, 1},
+ {WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, 0, 0},
+ {WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, 1, 2},
+ {WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, 1, 2},
+ {WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, 0, 0},
+ {WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, 0, 0},
+ {WINED3D_SM4_OP_ENDLOOP, WINED3DSIH_ENDLOOP, 0, 0},
+ {WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, 1, 1},
+ {WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, 1, 1},
+ {WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, 1, 2},
+ {WINED3D_SM4_OP_IF, WINED3DSIH_IF, 0, 1},
+ {WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, 1, 2},
+ {WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, 2, 2},
+ {WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, 1, 1},
+ {WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, 1, 1},
+ {WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, 0, 0},
+ {WINED3D_SM4_OP_LT, WINED3DSIH_LT, 1, 2},
+ {WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, 1, 3},
+ {WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, 1, 2},
+ {WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, 1, 2},
+ {WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, 1, 1},
+ {WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, 1, 3},
+ {WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, 1, 2},
+ {WINED3D_SM4_OP_RET, WINED3DSIH_RET, 0, 0},
+ {WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, 1, 1},
+ {WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, 1, 3},
+ {WINED3D_SM4_OP_SAMPLE_LOD, WINED3DSIH_SAMPLE_LOD, 1, 4},
+ {WINED3D_SM4_OP_SINCOS, WINED3DSIH_SINCOS, 2, 1},
};
static const WINED3DSHADER_PARAM_REGISTER_TYPE register_type_table[] =
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 7af33ac..3e2596e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -468,6 +468,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER
WINED3DSIH_RET,
WINED3DSIH_RSQ,
WINED3DSIH_SAMPLE,
+ WINED3DSIH_SAMPLE_LOD,
WINED3DSIH_SETP,
WINED3DSIH_SGE,
WINED3DSIH_SGN,
More information about the wine-cvs
mailing list