Commit 18d7a73a authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

wined3d: Recognize the SM4 sample_l opcode.

parent 407ed1b8
...@@ -4996,6 +4996,7 @@ static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABL ...@@ -4996,6 +4996,7 @@ static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABL
/* WINED3DSIH_RET */ shader_hw_ret, /* WINED3DSIH_RET */ shader_hw_ret,
/* WINED3DSIH_RSQ */ shader_hw_scalar_op, /* WINED3DSIH_RSQ */ shader_hw_scalar_op,
/* WINED3DSIH_SAMPLE */ NULL, /* WINED3DSIH_SAMPLE */ NULL,
/* WINED3DSIH_SAMPLE_LOD */ NULL,
/* WINED3DSIH_SETP */ NULL, /* WINED3DSIH_SETP */ NULL,
/* WINED3DSIH_SGE */ shader_hw_map2gl, /* WINED3DSIH_SGE */ shader_hw_map2gl,
/* WINED3DSIH_SGN */ shader_hw_sgn, /* WINED3DSIH_SGN */ shader_hw_sgn,
......
...@@ -5054,6 +5054,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB ...@@ -5054,6 +5054,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB
/* WINED3DSIH_RET */ shader_glsl_ret, /* WINED3DSIH_RET */ shader_glsl_ret,
/* WINED3DSIH_RSQ */ shader_glsl_rsq, /* WINED3DSIH_RSQ */ shader_glsl_rsq,
/* WINED3DSIH_SAMPLE */ NULL, /* WINED3DSIH_SAMPLE */ NULL,
/* WINED3DSIH_SAMPLE_LOD */ NULL,
/* WINED3DSIH_SETP */ NULL, /* WINED3DSIH_SETP */ NULL,
/* WINED3DSIH_SGE */ shader_glsl_compare, /* WINED3DSIH_SGE */ shader_glsl_compare,
/* WINED3DSIH_SGN */ shader_glsl_sgn, /* WINED3DSIH_SGN */ shader_glsl_sgn,
......
...@@ -100,6 +100,7 @@ static const char * const shader_opcode_names[] = ...@@ -100,6 +100,7 @@ static const char * const shader_opcode_names[] =
/* WINED3DSIH_RET */ "ret", /* WINED3DSIH_RET */ "ret",
/* WINED3DSIH_RSQ */ "rsq", /* WINED3DSIH_RSQ */ "rsq",
/* WINED3DSIH_SAMPLE */ "sample", /* WINED3DSIH_SAMPLE */ "sample",
/* WINED3DSIH_SAMPLE_LOD */ "sample_l",
/* WINED3DSIH_SETP */ "setp", /* WINED3DSIH_SETP */ "setp",
/* WINED3DSIH_SGE */ "sge", /* WINED3DSIH_SGE */ "sge",
/* WINED3DSIH_SGN */ "sgn", /* WINED3DSIH_SGN */ "sgn",
......
...@@ -48,36 +48,37 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader); ...@@ -48,36 +48,37 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d_shader);
enum wined3d_sm4_opcode enum wined3d_sm4_opcode
{ {
WINED3D_SM4_OP_ADD = 0x00, WINED3D_SM4_OP_ADD = 0x00,
WINED3D_SM4_OP_AND = 0x01, WINED3D_SM4_OP_AND = 0x01,
WINED3D_SM4_OP_BREAK = 0x02, WINED3D_SM4_OP_BREAK = 0x02,
WINED3D_SM4_OP_BREAKC = 0x03, WINED3D_SM4_OP_BREAKC = 0x03,
WINED3D_SM4_OP_CUT = 0x09, WINED3D_SM4_OP_CUT = 0x09,
WINED3D_SM4_OP_DP3 = 0x10, WINED3D_SM4_OP_DP3 = 0x10,
WINED3D_SM4_OP_DP4 = 0x11, WINED3D_SM4_OP_DP4 = 0x11,
WINED3D_SM4_OP_EMIT = 0x13, WINED3D_SM4_OP_EMIT = 0x13,
WINED3D_SM4_OP_ENDIF = 0x15, WINED3D_SM4_OP_ENDIF = 0x15,
WINED3D_SM4_OP_ENDLOOP = 0x16, WINED3D_SM4_OP_ENDLOOP = 0x16,
WINED3D_SM4_OP_EXP = 0x19, WINED3D_SM4_OP_EXP = 0x19,
WINED3D_SM4_OP_FRC = 0x1a, WINED3D_SM4_OP_FRC = 0x1a,
WINED3D_SM4_OP_IADD = 0x1e, WINED3D_SM4_OP_IADD = 0x1e,
WINED3D_SM4_OP_IF = 0x1f, WINED3D_SM4_OP_IF = 0x1f,
WINED3D_SM4_OP_IGE = 0x21, WINED3D_SM4_OP_IGE = 0x21,
WINED3D_SM4_OP_IMUL = 0x26, WINED3D_SM4_OP_IMUL = 0x26,
WINED3D_SM4_OP_ITOF = 0x2b, WINED3D_SM4_OP_ITOF = 0x2b,
WINED3D_SM4_OP_LOG = 0x2f, WINED3D_SM4_OP_LOG = 0x2f,
WINED3D_SM4_OP_LOOP = 0x30, WINED3D_SM4_OP_LOOP = 0x30,
WINED3D_SM4_OP_LT = 0x31, WINED3D_SM4_OP_LT = 0x31,
WINED3D_SM4_OP_MAD = 0x32, WINED3D_SM4_OP_MAD = 0x32,
WINED3D_SM4_OP_MIN = 0x33, WINED3D_SM4_OP_MIN = 0x33,
WINED3D_SM4_OP_MAX = 0x34, WINED3D_SM4_OP_MAX = 0x34,
WINED3D_SM4_OP_MOV = 0x36, WINED3D_SM4_OP_MOV = 0x36,
WINED3D_SM4_OP_MOVC = 0x37, WINED3D_SM4_OP_MOVC = 0x37,
WINED3D_SM4_OP_MUL = 0x38, WINED3D_SM4_OP_MUL = 0x38,
WINED3D_SM4_OP_RET = 0x3e, WINED3D_SM4_OP_RET = 0x3e,
WINED3D_SM4_OP_RSQ = 0x44, WINED3D_SM4_OP_RSQ = 0x44,
WINED3D_SM4_OP_SAMPLE = 0x45, WINED3D_SM4_OP_SAMPLE = 0x45,
WINED3D_SM4_OP_SINCOS = 0x4d, WINED3D_SM4_OP_SAMPLE_LOD = 0x48,
WINED3D_SM4_OP_SINCOS = 0x4d,
}; };
enum wined3d_sm4_register_type enum wined3d_sm4_register_type
...@@ -120,36 +121,37 @@ struct sysval_map ...@@ -120,36 +121,37 @@ struct sysval_map
static const struct wined3d_sm4_opcode_info opcode_table[] = static const struct wined3d_sm4_opcode_info opcode_table[] =
{ {
{WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, 1, 2}, {WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, 1, 2},
{WINED3D_SM4_OP_AND, WINED3DSIH_AND, 1, 2}, {WINED3D_SM4_OP_AND, WINED3DSIH_AND, 1, 2},
{WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, 0, 0}, {WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, 0, 0},
{WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, 0, 1}, {WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, 0, 1},
{WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, 0, 0}, {WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, 0, 0},
{WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, 1, 2}, {WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, 1, 2},
{WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, 1, 2}, {WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, 1, 2},
{WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, 0, 0}, {WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, 0, 0},
{WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, 0, 0}, {WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, 0, 0},
{WINED3D_SM4_OP_ENDLOOP,WINED3DSIH_ENDLOOP, 0, 0}, {WINED3D_SM4_OP_ENDLOOP, WINED3DSIH_ENDLOOP, 0, 0},
{WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, 1, 1}, {WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, 1, 1},
{WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, 1, 1}, {WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, 1, 1},
{WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, 1, 2}, {WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, 1, 2},
{WINED3D_SM4_OP_IF, WINED3DSIH_IF, 0, 1}, {WINED3D_SM4_OP_IF, WINED3DSIH_IF, 0, 1},
{WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, 1, 2}, {WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, 1, 2},
{WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, 2, 2}, {WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, 2, 2},
{WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, 1, 1}, {WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, 1, 1},
{WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, 1, 1}, {WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, 1, 1},
{WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, 0, 0}, {WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, 0, 0},
{WINED3D_SM4_OP_LT, WINED3DSIH_LT, 1, 2}, {WINED3D_SM4_OP_LT, WINED3DSIH_LT, 1, 2},
{WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, 1, 3}, {WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, 1, 3},
{WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, 1, 2}, {WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, 1, 2},
{WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, 1, 2}, {WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, 1, 2},
{WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, 1, 1}, {WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, 1, 1},
{WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, 1, 3}, {WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, 1, 3},
{WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, 1, 2}, {WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, 1, 2},
{WINED3D_SM4_OP_RET, WINED3DSIH_RET, 0, 0}, {WINED3D_SM4_OP_RET, WINED3DSIH_RET, 0, 0},
{WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, 1, 1}, {WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, 1, 1},
{WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, 1, 3}, {WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, 1, 3},
{WINED3D_SM4_OP_SINCOS, WINED3DSIH_SINCOS, 2, 1}, {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[] = static const WINED3DSHADER_PARAM_REGISTER_TYPE register_type_table[] =
......
...@@ -468,6 +468,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER ...@@ -468,6 +468,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER
WINED3DSIH_RET, WINED3DSIH_RET,
WINED3DSIH_RSQ, WINED3DSIH_RSQ,
WINED3DSIH_SAMPLE, WINED3DSIH_SAMPLE,
WINED3DSIH_SAMPLE_LOD,
WINED3DSIH_SETP, WINED3DSIH_SETP,
WINED3DSIH_SGE, WINED3DSIH_SGE,
WINED3DSIH_SGN, WINED3DSIH_SGN,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment