wined3d: Recognize the SM4 sample_l opcode.
This commit is contained in:
parent
407ed1b875
commit
18d7a73af8
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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[] =
|
||||
|
|
|
@ -468,6 +468,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER
|
|||
WINED3DSIH_RET,
|
||||
WINED3DSIH_RSQ,
|
||||
WINED3DSIH_SAMPLE,
|
||||
WINED3DSIH_SAMPLE_LOD,
|
||||
WINED3DSIH_SETP,
|
||||
WINED3DSIH_SGE,
|
||||
WINED3DSIH_SGN,
|
||||
|
|
Loading…
Reference in New Issue