[PATCH 8/8] wined3d: Recognize SM5 dcl_output_control_point_count opcode.
Józef Kucia
jkucia at codeweavers.com
Tue Mar 29 05:14:58 CDT 2016
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/wined3d/arb_program_shader.c | 309 ++++++++++++++++++-------------------
dlls/wined3d/glsl_shader.c | 309 ++++++++++++++++++-------------------
dlls/wined3d/shader.c | 312 +++++++++++++++++++-------------------
dlls/wined3d/shader_sm4.c | 197 ++++++++++++------------
dlls/wined3d/wined3d_private.h | 1 +
5 files changed, 568 insertions(+), 560 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index a765b8d..37bb22b 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -5214,160 +5214,161 @@ static void shader_arb_add_instruction_modifiers(const struct wined3d_shader_ins
static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABLE_SIZE] =
{
- /* WINED3DSIH_ABS */ shader_hw_map2gl,
- /* WINED3DSIH_ADD */ shader_hw_map2gl,
- /* WINED3DSIH_AND */ NULL,
- /* WINED3DSIH_BEM */ pshader_hw_bem,
- /* WINED3DSIH_BREAK */ shader_hw_break,
- /* WINED3DSIH_BREAKC */ shader_hw_breakc,
- /* WINED3DSIH_BREAKP */ NULL,
- /* WINED3DSIH_CALL */ shader_hw_call,
- /* WINED3DSIH_CALLNZ */ NULL,
- /* WINED3DSIH_CMP */ pshader_hw_cmp,
- /* WINED3DSIH_CND */ pshader_hw_cnd,
- /* WINED3DSIH_CRS */ shader_hw_map2gl,
- /* WINED3DSIH_CUT */ NULL,
- /* WINED3DSIH_DCL */ shader_hw_nop,
- /* WINED3DSIH_DCL_CONSTANT_BUFFER */ shader_hw_nop,
- /* WINED3DSIH_DCL_GLOBAL_FLAGS */ NULL,
- /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ NULL,
- /* WINED3DSIH_DCL_INPUT */ NULL,
- /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ NULL,
- /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ shader_hw_nop,
- /* WINED3DSIH_DCL_INPUT_PS */ NULL,
- /* WINED3DSIH_DCL_INPUT_PS_SGV */ NULL,
- /* WINED3DSIH_DCL_INPUT_PS_SIV */ NULL,
- /* WINED3DSIH_DCL_INPUT_SGV */ NULL,
- /* WINED3DSIH_DCL_INPUT_SIV */ NULL,
- /* WINED3DSIH_DCL_OUTPUT */ NULL,
- /* WINED3DSIH_DCL_OUTPUT_SIV */ NULL,
- /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ shader_hw_nop,
- /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ NULL,
- /* WINED3DSIH_DCL_SAMPLER */ NULL,
- /* WINED3DSIH_DCL_TEMPS */ NULL,
- /* WINED3DSIH_DCL_UAV_TYPED */ NULL,
- /* WINED3DSIH_DCL_VERTICES_OUT */ shader_hw_nop,
- /* WINED3DSIH_DEF */ shader_hw_nop,
- /* WINED3DSIH_DEFB */ shader_hw_nop,
- /* WINED3DSIH_DEFI */ shader_hw_nop,
- /* WINED3DSIH_DIV */ NULL,
- /* WINED3DSIH_DP2 */ NULL,
- /* WINED3DSIH_DP2ADD */ pshader_hw_dp2add,
- /* WINED3DSIH_DP3 */ shader_hw_map2gl,
- /* WINED3DSIH_DP4 */ shader_hw_map2gl,
- /* WINED3DSIH_DST */ shader_hw_map2gl,
- /* WINED3DSIH_DSX */ shader_hw_map2gl,
- /* WINED3DSIH_DSX_COARSE */ NULL,
- /* WINED3DSIH_DSX_FINE */ NULL,
- /* WINED3DSIH_DSY */ shader_hw_dsy,
- /* WINED3DSIH_DSY_COARSE */ NULL,
- /* WINED3DSIH_DSY_FINE */ NULL,
- /* WINED3DSIH_ELSE */ shader_hw_else,
- /* WINED3DSIH_EMIT */ NULL,
- /* WINED3DSIH_ENDIF */ shader_hw_endif,
- /* WINED3DSIH_ENDLOOP */ shader_hw_endloop,
- /* WINED3DSIH_ENDREP */ shader_hw_endrep,
- /* WINED3DSIH_EQ */ NULL,
- /* WINED3DSIH_EXP */ shader_hw_scalar_op,
- /* WINED3DSIH_EXPP */ shader_hw_scalar_op,
- /* WINED3DSIH_FRC */ shader_hw_map2gl,
- /* WINED3DSIH_FTOI */ NULL,
- /* WINED3DSIH_FTOU */ NULL,
- /* WINED3DSIH_GE */ NULL,
- /* WINED3DSIH_HS_DECLS */ NULL,
- /* WINED3DSIH_HS_FORK_PHASE */ NULL,
- /* WINED3DSIH_IADD */ NULL,
- /* WINED3DSIH_IEQ */ NULL,
- /* WINED3DSIH_IF */ NULL /* Hardcoded into the shader */,
- /* WINED3DSIH_IFC */ shader_hw_ifc,
- /* WINED3DSIH_IGE */ NULL,
- /* WINED3DSIH_ILT */ NULL,
- /* WINED3DSIH_IMAD */ NULL,
- /* WINED3DSIH_IMAX */ NULL,
- /* WINED3DSIH_IMIN */ NULL,
- /* WINED3DSIH_IMUL */ NULL,
- /* WINED3DSIH_INE */ NULL,
- /* WINED3DSIH_INEG */ NULL,
- /* WINED3DSIH_ISHL */ NULL,
- /* WINED3DSIH_ITOF */ NULL,
- /* WINED3DSIH_LABEL */ shader_hw_label,
- /* WINED3DSIH_LD */ NULL,
- /* WINED3DSIH_LD2DMS */ NULL,
- /* WINED3DSIH_LD_STRUCTURED */ NULL,
- /* WINED3DSIH_LIT */ shader_hw_map2gl,
- /* WINED3DSIH_LOG */ shader_hw_scalar_op,
- /* WINED3DSIH_LOGP */ shader_hw_scalar_op,
- /* WINED3DSIH_LOOP */ shader_hw_loop,
- /* WINED3DSIH_LRP */ shader_hw_lrp,
- /* WINED3DSIH_LT */ NULL,
- /* WINED3DSIH_M3x2 */ shader_hw_mnxn,
- /* WINED3DSIH_M3x3 */ shader_hw_mnxn,
- /* WINED3DSIH_M3x4 */ shader_hw_mnxn,
- /* WINED3DSIH_M4x3 */ shader_hw_mnxn,
- /* WINED3DSIH_M4x4 */ shader_hw_mnxn,
- /* WINED3DSIH_MAD */ shader_hw_map2gl,
- /* WINED3DSIH_MAX */ shader_hw_map2gl,
- /* WINED3DSIH_MIN */ shader_hw_map2gl,
- /* WINED3DSIH_MOV */ shader_hw_mov,
- /* WINED3DSIH_MOVA */ shader_hw_mov,
- /* WINED3DSIH_MOVC */ NULL,
- /* WINED3DSIH_MUL */ shader_hw_map2gl,
- /* WINED3DSIH_NE */ NULL,
- /* WINED3DSIH_NOP */ shader_hw_nop,
- /* WINED3DSIH_NOT */ NULL,
- /* WINED3DSIH_NRM */ shader_hw_nrm,
- /* WINED3DSIH_OR */ NULL,
- /* WINED3DSIH_PHASE */ shader_hw_nop,
- /* WINED3DSIH_POW */ shader_hw_pow,
- /* WINED3DSIH_RCP */ shader_hw_scalar_op,
- /* WINED3DSIH_REP */ shader_hw_rep,
- /* WINED3DSIH_RESINFO */ NULL,
- /* WINED3DSIH_RET */ shader_hw_ret,
- /* WINED3DSIH_ROUND_NI */ NULL,
- /* WINED3DSIH_ROUND_PI */ NULL,
- /* WINED3DSIH_ROUND_Z */ NULL,
- /* WINED3DSIH_RSQ */ shader_hw_scalar_op,
- /* WINED3DSIH_SAMPLE */ NULL,
- /* WINED3DSIH_SAMPLE_B */ NULL,
- /* WINED3DSIH_SAMPLE_C */ NULL,
- /* WINED3DSIH_SAMPLE_C_LZ */ NULL,
- /* WINED3DSIH_SAMPLE_GRAD */ NULL,
- /* WINED3DSIH_SAMPLE_LOD */ NULL,
- /* WINED3DSIH_SETP */ NULL,
- /* WINED3DSIH_SGE */ shader_hw_map2gl,
- /* WINED3DSIH_SGN */ shader_hw_sgn,
- /* WINED3DSIH_SINCOS */ shader_hw_sincos,
- /* WINED3DSIH_SLT */ shader_hw_map2gl,
- /* WINED3DSIH_SQRT */ NULL,
- /* WINED3DSIH_STORE_UAV_TYPED */ NULL,
- /* WINED3DSIH_SUB */ shader_hw_map2gl,
- /* WINED3DSIH_TEX */ pshader_hw_tex,
- /* WINED3DSIH_TEXBEM */ pshader_hw_texbem,
- /* WINED3DSIH_TEXBEML */ pshader_hw_texbem,
- /* WINED3DSIH_TEXCOORD */ pshader_hw_texcoord,
- /* WINED3DSIH_TEXDEPTH */ pshader_hw_texdepth,
- /* WINED3DSIH_TEXDP3 */ pshader_hw_texdp3,
- /* WINED3DSIH_TEXDP3TEX */ pshader_hw_texdp3tex,
- /* WINED3DSIH_TEXKILL */ pshader_hw_texkill,
- /* WINED3DSIH_TEXLDD */ shader_hw_texldd,
- /* WINED3DSIH_TEXLDL */ shader_hw_texldl,
- /* WINED3DSIH_TEXM3x2DEPTH */ pshader_hw_texm3x2depth,
- /* WINED3DSIH_TEXM3x2PAD */ pshader_hw_texm3x2pad,
- /* WINED3DSIH_TEXM3x2TEX */ pshader_hw_texm3x2tex,
- /* WINED3DSIH_TEXM3x3 */ pshader_hw_texm3x3,
- /* WINED3DSIH_TEXM3x3DIFF */ NULL,
- /* WINED3DSIH_TEXM3x3PAD */ pshader_hw_texm3x3pad,
- /* WINED3DSIH_TEXM3x3SPEC */ pshader_hw_texm3x3spec,
- /* WINED3DSIH_TEXM3x3TEX */ pshader_hw_texm3x3tex,
- /* WINED3DSIH_TEXM3x3VSPEC */ pshader_hw_texm3x3vspec,
- /* WINED3DSIH_TEXREG2AR */ pshader_hw_texreg2ar,
- /* WINED3DSIH_TEXREG2GB */ pshader_hw_texreg2gb,
- /* WINED3DSIH_TEXREG2RGB */ pshader_hw_texreg2rgb,
- /* WINED3DSIH_UDIV */ NULL,
- /* WINED3DSIH_UGE */ NULL,
- /* WINED3DSIH_USHR */ NULL,
- /* WINED3DSIH_UTOF */ NULL,
- /* WINED3DSIH_XOR */ NULL,
+ /* WINED3DSIH_ABS */ shader_hw_map2gl,
+ /* WINED3DSIH_ADD */ shader_hw_map2gl,
+ /* WINED3DSIH_AND */ NULL,
+ /* WINED3DSIH_BEM */ pshader_hw_bem,
+ /* WINED3DSIH_BREAK */ shader_hw_break,
+ /* WINED3DSIH_BREAKC */ shader_hw_breakc,
+ /* WINED3DSIH_BREAKP */ NULL,
+ /* WINED3DSIH_CALL */ shader_hw_call,
+ /* WINED3DSIH_CALLNZ */ NULL,
+ /* WINED3DSIH_CMP */ pshader_hw_cmp,
+ /* WINED3DSIH_CND */ pshader_hw_cnd,
+ /* WINED3DSIH_CRS */ shader_hw_map2gl,
+ /* WINED3DSIH_CUT */ NULL,
+ /* WINED3DSIH_DCL */ shader_hw_nop,
+ /* WINED3DSIH_DCL_CONSTANT_BUFFER */ shader_hw_nop,
+ /* WINED3DSIH_DCL_GLOBAL_FLAGS */ NULL,
+ /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ NULL,
+ /* WINED3DSIH_DCL_INPUT */ NULL,
+ /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ shader_hw_nop,
+ /* WINED3DSIH_DCL_INPUT_PS */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PS_SGV */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PS_SIV */ NULL,
+ /* WINED3DSIH_DCL_INPUT_SGV */ NULL,
+ /* WINED3DSIH_DCL_INPUT_SIV */ NULL,
+ /* WINED3DSIH_DCL_OUTPUT */ NULL,
+ /* WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT */ NULL,
+ /* WINED3DSIH_DCL_OUTPUT_SIV */ NULL,
+ /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ shader_hw_nop,
+ /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ NULL,
+ /* WINED3DSIH_DCL_SAMPLER */ NULL,
+ /* WINED3DSIH_DCL_TEMPS */ NULL,
+ /* WINED3DSIH_DCL_UAV_TYPED */ NULL,
+ /* WINED3DSIH_DCL_VERTICES_OUT */ shader_hw_nop,
+ /* WINED3DSIH_DEF */ shader_hw_nop,
+ /* WINED3DSIH_DEFB */ shader_hw_nop,
+ /* WINED3DSIH_DEFI */ shader_hw_nop,
+ /* WINED3DSIH_DIV */ NULL,
+ /* WINED3DSIH_DP2 */ NULL,
+ /* WINED3DSIH_DP2ADD */ pshader_hw_dp2add,
+ /* WINED3DSIH_DP3 */ shader_hw_map2gl,
+ /* WINED3DSIH_DP4 */ shader_hw_map2gl,
+ /* WINED3DSIH_DST */ shader_hw_map2gl,
+ /* WINED3DSIH_DSX */ shader_hw_map2gl,
+ /* WINED3DSIH_DSX_COARSE */ NULL,
+ /* WINED3DSIH_DSX_FINE */ NULL,
+ /* WINED3DSIH_DSY */ shader_hw_dsy,
+ /* WINED3DSIH_DSY_COARSE */ NULL,
+ /* WINED3DSIH_DSY_FINE */ NULL,
+ /* WINED3DSIH_ELSE */ shader_hw_else,
+ /* WINED3DSIH_EMIT */ NULL,
+ /* WINED3DSIH_ENDIF */ shader_hw_endif,
+ /* WINED3DSIH_ENDLOOP */ shader_hw_endloop,
+ /* WINED3DSIH_ENDREP */ shader_hw_endrep,
+ /* WINED3DSIH_EQ */ NULL,
+ /* WINED3DSIH_EXP */ shader_hw_scalar_op,
+ /* WINED3DSIH_EXPP */ shader_hw_scalar_op,
+ /* WINED3DSIH_FRC */ shader_hw_map2gl,
+ /* WINED3DSIH_FTOI */ NULL,
+ /* WINED3DSIH_FTOU */ NULL,
+ /* WINED3DSIH_GE */ NULL,
+ /* WINED3DSIH_HS_DECLS */ NULL,
+ /* WINED3DSIH_HS_FORK_PHASE */ NULL,
+ /* WINED3DSIH_IADD */ NULL,
+ /* WINED3DSIH_IEQ */ NULL,
+ /* WINED3DSIH_IF */ NULL /* Hardcoded into the shader */,
+ /* WINED3DSIH_IFC */ shader_hw_ifc,
+ /* WINED3DSIH_IGE */ NULL,
+ /* WINED3DSIH_ILT */ NULL,
+ /* WINED3DSIH_IMAD */ NULL,
+ /* WINED3DSIH_IMAX */ NULL,
+ /* WINED3DSIH_IMIN */ NULL,
+ /* WINED3DSIH_IMUL */ NULL,
+ /* WINED3DSIH_INE */ NULL,
+ /* WINED3DSIH_INEG */ NULL,
+ /* WINED3DSIH_ISHL */ NULL,
+ /* WINED3DSIH_ITOF */ NULL,
+ /* WINED3DSIH_LABEL */ shader_hw_label,
+ /* WINED3DSIH_LD */ NULL,
+ /* WINED3DSIH_LD2DMS */ NULL,
+ /* WINED3DSIH_LD_STRUCTURED */ NULL,
+ /* WINED3DSIH_LIT */ shader_hw_map2gl,
+ /* WINED3DSIH_LOG */ shader_hw_scalar_op,
+ /* WINED3DSIH_LOGP */ shader_hw_scalar_op,
+ /* WINED3DSIH_LOOP */ shader_hw_loop,
+ /* WINED3DSIH_LRP */ shader_hw_lrp,
+ /* WINED3DSIH_LT */ NULL,
+ /* WINED3DSIH_M3x2 */ shader_hw_mnxn,
+ /* WINED3DSIH_M3x3 */ shader_hw_mnxn,
+ /* WINED3DSIH_M3x4 */ shader_hw_mnxn,
+ /* WINED3DSIH_M4x3 */ shader_hw_mnxn,
+ /* WINED3DSIH_M4x4 */ shader_hw_mnxn,
+ /* WINED3DSIH_MAD */ shader_hw_map2gl,
+ /* WINED3DSIH_MAX */ shader_hw_map2gl,
+ /* WINED3DSIH_MIN */ shader_hw_map2gl,
+ /* WINED3DSIH_MOV */ shader_hw_mov,
+ /* WINED3DSIH_MOVA */ shader_hw_mov,
+ /* WINED3DSIH_MOVC */ NULL,
+ /* WINED3DSIH_MUL */ shader_hw_map2gl,
+ /* WINED3DSIH_NE */ NULL,
+ /* WINED3DSIH_NOP */ shader_hw_nop,
+ /* WINED3DSIH_NOT */ NULL,
+ /* WINED3DSIH_NRM */ shader_hw_nrm,
+ /* WINED3DSIH_OR */ NULL,
+ /* WINED3DSIH_PHASE */ shader_hw_nop,
+ /* WINED3DSIH_POW */ shader_hw_pow,
+ /* WINED3DSIH_RCP */ shader_hw_scalar_op,
+ /* WINED3DSIH_REP */ shader_hw_rep,
+ /* WINED3DSIH_RESINFO */ NULL,
+ /* WINED3DSIH_RET */ shader_hw_ret,
+ /* WINED3DSIH_ROUND_NI */ NULL,
+ /* WINED3DSIH_ROUND_PI */ NULL,
+ /* WINED3DSIH_ROUND_Z */ NULL,
+ /* WINED3DSIH_RSQ */ shader_hw_scalar_op,
+ /* WINED3DSIH_SAMPLE */ NULL,
+ /* WINED3DSIH_SAMPLE_B */ NULL,
+ /* WINED3DSIH_SAMPLE_C */ NULL,
+ /* WINED3DSIH_SAMPLE_C_LZ */ NULL,
+ /* WINED3DSIH_SAMPLE_GRAD */ NULL,
+ /* WINED3DSIH_SAMPLE_LOD */ NULL,
+ /* WINED3DSIH_SETP */ NULL,
+ /* WINED3DSIH_SGE */ shader_hw_map2gl,
+ /* WINED3DSIH_SGN */ shader_hw_sgn,
+ /* WINED3DSIH_SINCOS */ shader_hw_sincos,
+ /* WINED3DSIH_SLT */ shader_hw_map2gl,
+ /* WINED3DSIH_SQRT */ NULL,
+ /* WINED3DSIH_STORE_UAV_TYPED */ NULL,
+ /* WINED3DSIH_SUB */ shader_hw_map2gl,
+ /* WINED3DSIH_TEX */ pshader_hw_tex,
+ /* WINED3DSIH_TEXBEM */ pshader_hw_texbem,
+ /* WINED3DSIH_TEXBEML */ pshader_hw_texbem,
+ /* WINED3DSIH_TEXCOORD */ pshader_hw_texcoord,
+ /* WINED3DSIH_TEXDEPTH */ pshader_hw_texdepth,
+ /* WINED3DSIH_TEXDP3 */ pshader_hw_texdp3,
+ /* WINED3DSIH_TEXDP3TEX */ pshader_hw_texdp3tex,
+ /* WINED3DSIH_TEXKILL */ pshader_hw_texkill,
+ /* WINED3DSIH_TEXLDD */ shader_hw_texldd,
+ /* WINED3DSIH_TEXLDL */ shader_hw_texldl,
+ /* WINED3DSIH_TEXM3x2DEPTH */ pshader_hw_texm3x2depth,
+ /* WINED3DSIH_TEXM3x2PAD */ pshader_hw_texm3x2pad,
+ /* WINED3DSIH_TEXM3x2TEX */ pshader_hw_texm3x2tex,
+ /* WINED3DSIH_TEXM3x3 */ pshader_hw_texm3x3,
+ /* WINED3DSIH_TEXM3x3DIFF */ NULL,
+ /* WINED3DSIH_TEXM3x3PAD */ pshader_hw_texm3x3pad,
+ /* WINED3DSIH_TEXM3x3SPEC */ pshader_hw_texm3x3spec,
+ /* WINED3DSIH_TEXM3x3TEX */ pshader_hw_texm3x3tex,
+ /* WINED3DSIH_TEXM3x3VSPEC */ pshader_hw_texm3x3vspec,
+ /* WINED3DSIH_TEXREG2AR */ pshader_hw_texreg2ar,
+ /* WINED3DSIH_TEXREG2GB */ pshader_hw_texreg2gb,
+ /* WINED3DSIH_TEXREG2RGB */ pshader_hw_texreg2rgb,
+ /* WINED3DSIH_UDIV */ NULL,
+ /* WINED3DSIH_UGE */ NULL,
+ /* WINED3DSIH_USHR */ NULL,
+ /* WINED3DSIH_UTOF */ NULL,
+ /* WINED3DSIH_XOR */ NULL,
};
static BOOL get_bool_const(const struct wined3d_shader_instruction *ins,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index ad3369e..035091f 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -8108,160 +8108,161 @@ static BOOL shader_glsl_color_fixup_supported(struct color_fixup_desc fixup)
static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TABLE_SIZE] =
{
- /* WINED3DSIH_ABS */ shader_glsl_map2gl,
- /* WINED3DSIH_ADD */ shader_glsl_binop,
- /* WINED3DSIH_AND */ shader_glsl_binop,
- /* WINED3DSIH_BEM */ shader_glsl_bem,
- /* WINED3DSIH_BREAK */ shader_glsl_break,
- /* WINED3DSIH_BREAKC */ shader_glsl_breakc,
- /* WINED3DSIH_BREAKP */ shader_glsl_breakp,
- /* WINED3DSIH_CALL */ shader_glsl_call,
- /* WINED3DSIH_CALLNZ */ shader_glsl_callnz,
- /* WINED3DSIH_CMP */ shader_glsl_conditional_move,
- /* WINED3DSIH_CND */ shader_glsl_cnd,
- /* WINED3DSIH_CRS */ shader_glsl_cross,
- /* WINED3DSIH_CUT */ shader_glsl_cut,
- /* WINED3DSIH_DCL */ shader_glsl_nop,
- /* WINED3DSIH_DCL_CONSTANT_BUFFER */ shader_glsl_nop,
- /* WINED3DSIH_DCL_GLOBAL_FLAGS */ shader_glsl_nop,
- /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ NULL,
- /* WINED3DSIH_DCL_INPUT */ shader_glsl_nop,
- /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ NULL,
- /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ shader_glsl_nop,
- /* WINED3DSIH_DCL_INPUT_PS */ NULL,
- /* WINED3DSIH_DCL_INPUT_PS_SGV */ NULL,
- /* WINED3DSIH_DCL_INPUT_PS_SIV */ NULL,
- /* WINED3DSIH_DCL_INPUT_SGV */ shader_glsl_nop,
- /* WINED3DSIH_DCL_INPUT_SIV */ shader_glsl_nop,
- /* WINED3DSIH_DCL_OUTPUT */ shader_glsl_nop,
- /* WINED3DSIH_DCL_OUTPUT_SIV */ shader_glsl_nop,
- /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ shader_glsl_nop,
- /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ NULL,
- /* WINED3DSIH_DCL_SAMPLER */ shader_glsl_nop,
- /* WINED3DSIH_DCL_TEMPS */ shader_glsl_nop,
- /* WINED3DSIH_DCL_UAV_TYPED */ NULL,
- /* WINED3DSIH_DCL_VERTICES_OUT */ shader_glsl_nop,
- /* WINED3DSIH_DEF */ shader_glsl_nop,
- /* WINED3DSIH_DEFB */ shader_glsl_nop,
- /* WINED3DSIH_DEFI */ shader_glsl_nop,
- /* WINED3DSIH_DIV */ shader_glsl_binop,
- /* WINED3DSIH_DP2 */ shader_glsl_dot,
- /* WINED3DSIH_DP2ADD */ shader_glsl_dp2add,
- /* WINED3DSIH_DP3 */ shader_glsl_dot,
- /* WINED3DSIH_DP4 */ shader_glsl_dot,
- /* WINED3DSIH_DST */ shader_glsl_dst,
- /* WINED3DSIH_DSX */ shader_glsl_map2gl,
- /* WINED3DSIH_DSX_COARSE */ NULL,
- /* WINED3DSIH_DSX_FINE */ NULL,
- /* WINED3DSIH_DSY */ shader_glsl_map2gl,
- /* WINED3DSIH_DSY_COARSE */ NULL,
- /* WINED3DSIH_DSY_FINE */ NULL,
- /* WINED3DSIH_ELSE */ shader_glsl_else,
- /* WINED3DSIH_EMIT */ shader_glsl_emit,
- /* WINED3DSIH_ENDIF */ shader_glsl_end,
- /* WINED3DSIH_ENDLOOP */ shader_glsl_end,
- /* WINED3DSIH_ENDREP */ shader_glsl_end,
- /* WINED3DSIH_EQ */ shader_glsl_relop,
- /* WINED3DSIH_EXP */ shader_glsl_scalar_op,
- /* WINED3DSIH_EXPP */ shader_glsl_expp,
- /* WINED3DSIH_FRC */ shader_glsl_map2gl,
- /* WINED3DSIH_FTOI */ shader_glsl_to_int,
- /* WINED3DSIH_FTOU */ shader_glsl_to_uint,
- /* WINED3DSIH_GE */ shader_glsl_relop,
- /* WINED3DSIH_HS_DECLS */ shader_glsl_nop,
- /* WINED3DSIH_HS_FORK_PHASE */ NULL,
- /* WINED3DSIH_IADD */ shader_glsl_binop,
- /* WINED3DSIH_IEQ */ shader_glsl_relop,
- /* WINED3DSIH_IF */ shader_glsl_if,
- /* WINED3DSIH_IFC */ shader_glsl_ifc,
- /* WINED3DSIH_IGE */ shader_glsl_relop,
- /* WINED3DSIH_ILT */ shader_glsl_relop,
- /* WINED3DSIH_IMAD */ shader_glsl_mad,
- /* WINED3DSIH_IMAX */ shader_glsl_map2gl,
- /* WINED3DSIH_IMIN */ shader_glsl_map2gl,
- /* WINED3DSIH_IMUL */ shader_glsl_imul,
- /* WINED3DSIH_INE */ shader_glsl_relop,
- /* WINED3DSIH_INEG */ shader_glsl_unary_op,
- /* WINED3DSIH_ISHL */ shader_glsl_binop,
- /* WINED3DSIH_ITOF */ shader_glsl_to_float,
- /* WINED3DSIH_LABEL */ shader_glsl_label,
- /* WINED3DSIH_LD */ shader_glsl_ld,
- /* WINED3DSIH_LD2DMS */ NULL,
- /* WINED3DSIH_LD_STRUCTURED */ NULL,
- /* WINED3DSIH_LIT */ shader_glsl_lit,
- /* WINED3DSIH_LOG */ shader_glsl_scalar_op,
- /* WINED3DSIH_LOGP */ shader_glsl_scalar_op,
- /* WINED3DSIH_LOOP */ shader_glsl_loop,
- /* WINED3DSIH_LRP */ shader_glsl_lrp,
- /* WINED3DSIH_LT */ shader_glsl_relop,
- /* WINED3DSIH_M3x2 */ shader_glsl_mnxn,
- /* WINED3DSIH_M3x3 */ shader_glsl_mnxn,
- /* WINED3DSIH_M3x4 */ shader_glsl_mnxn,
- /* WINED3DSIH_M4x3 */ shader_glsl_mnxn,
- /* WINED3DSIH_M4x4 */ shader_glsl_mnxn,
- /* WINED3DSIH_MAD */ shader_glsl_mad,
- /* WINED3DSIH_MAX */ shader_glsl_map2gl,
- /* WINED3DSIH_MIN */ shader_glsl_map2gl,
- /* WINED3DSIH_MOV */ shader_glsl_mov,
- /* WINED3DSIH_MOVA */ shader_glsl_mov,
- /* WINED3DSIH_MOVC */ shader_glsl_conditional_move,
- /* WINED3DSIH_MUL */ shader_glsl_binop,
- /* WINED3DSIH_NE */ shader_glsl_relop,
- /* WINED3DSIH_NOP */ shader_glsl_nop,
- /* WINED3DSIH_NOT */ shader_glsl_unary_op,
- /* WINED3DSIH_NRM */ shader_glsl_nrm,
- /* WINED3DSIH_OR */ shader_glsl_binop,
- /* WINED3DSIH_PHASE */ shader_glsl_nop,
- /* WINED3DSIH_POW */ shader_glsl_pow,
- /* WINED3DSIH_RCP */ shader_glsl_scalar_op,
- /* WINED3DSIH_REP */ shader_glsl_rep,
- /* WINED3DSIH_RESINFO */ shader_glsl_resinfo,
- /* WINED3DSIH_RET */ shader_glsl_ret,
- /* WINED3DSIH_ROUND_NI */ shader_glsl_map2gl,
- /* WINED3DSIH_ROUND_PI */ shader_glsl_map2gl,
- /* WINED3DSIH_ROUND_Z */ shader_glsl_map2gl,
- /* WINED3DSIH_RSQ */ shader_glsl_scalar_op,
- /* WINED3DSIH_SAMPLE */ shader_glsl_sample,
- /* WINED3DSIH_SAMPLE_B */ shader_glsl_sample,
- /* WINED3DSIH_SAMPLE_C */ shader_glsl_sample_c,
- /* WINED3DSIH_SAMPLE_C_LZ */ shader_glsl_sample_c,
- /* WINED3DSIH_SAMPLE_GRAD */ shader_glsl_sample,
- /* WINED3DSIH_SAMPLE_LOD */ shader_glsl_sample,
- /* WINED3DSIH_SETP */ NULL,
- /* WINED3DSIH_SGE */ shader_glsl_compare,
- /* WINED3DSIH_SGN */ shader_glsl_sgn,
- /* WINED3DSIH_SINCOS */ shader_glsl_sincos,
- /* WINED3DSIH_SLT */ shader_glsl_compare,
- /* WINED3DSIH_SQRT */ shader_glsl_map2gl,
- /* WINED3DSIH_STORE_UAV_TYPED */ NULL,
- /* WINED3DSIH_SUB */ shader_glsl_binop,
- /* WINED3DSIH_TEX */ shader_glsl_tex,
- /* WINED3DSIH_TEXBEM */ shader_glsl_texbem,
- /* WINED3DSIH_TEXBEML */ shader_glsl_texbem,
- /* WINED3DSIH_TEXCOORD */ shader_glsl_texcoord,
- /* WINED3DSIH_TEXDEPTH */ shader_glsl_texdepth,
- /* WINED3DSIH_TEXDP3 */ shader_glsl_texdp3,
- /* WINED3DSIH_TEXDP3TEX */ shader_glsl_texdp3tex,
- /* WINED3DSIH_TEXKILL */ shader_glsl_texkill,
- /* WINED3DSIH_TEXLDD */ shader_glsl_texldd,
- /* WINED3DSIH_TEXLDL */ shader_glsl_texldl,
- /* WINED3DSIH_TEXM3x2DEPTH */ shader_glsl_texm3x2depth,
- /* WINED3DSIH_TEXM3x2PAD */ shader_glsl_texm3x2pad,
- /* WINED3DSIH_TEXM3x2TEX */ shader_glsl_texm3x2tex,
- /* WINED3DSIH_TEXM3x3 */ shader_glsl_texm3x3,
- /* WINED3DSIH_TEXM3x3DIFF */ NULL,
- /* WINED3DSIH_TEXM3x3PAD */ shader_glsl_texm3x3pad,
- /* WINED3DSIH_TEXM3x3SPEC */ shader_glsl_texm3x3spec,
- /* WINED3DSIH_TEXM3x3TEX */ shader_glsl_texm3x3tex,
- /* WINED3DSIH_TEXM3x3VSPEC */ shader_glsl_texm3x3vspec,
- /* WINED3DSIH_TEXREG2AR */ shader_glsl_texreg2ar,
- /* WINED3DSIH_TEXREG2GB */ shader_glsl_texreg2gb,
- /* WINED3DSIH_TEXREG2RGB */ shader_glsl_texreg2rgb,
- /* WINED3DSIH_UDIV */ shader_glsl_udiv,
- /* WINED3DSIH_UGE */ shader_glsl_relop,
- /* WINED3DSIH_USHR */ shader_glsl_binop,
- /* WINED3DSIH_UTOF */ shader_glsl_to_float,
- /* WINED3DSIH_XOR */ shader_glsl_binop,
+ /* WINED3DSIH_ABS */ shader_glsl_map2gl,
+ /* WINED3DSIH_ADD */ shader_glsl_binop,
+ /* WINED3DSIH_AND */ shader_glsl_binop,
+ /* WINED3DSIH_BEM */ shader_glsl_bem,
+ /* WINED3DSIH_BREAK */ shader_glsl_break,
+ /* WINED3DSIH_BREAKC */ shader_glsl_breakc,
+ /* WINED3DSIH_BREAKP */ shader_glsl_breakp,
+ /* WINED3DSIH_CALL */ shader_glsl_call,
+ /* WINED3DSIH_CALLNZ */ shader_glsl_callnz,
+ /* WINED3DSIH_CMP */ shader_glsl_conditional_move,
+ /* WINED3DSIH_CND */ shader_glsl_cnd,
+ /* WINED3DSIH_CRS */ shader_glsl_cross,
+ /* WINED3DSIH_CUT */ shader_glsl_cut,
+ /* WINED3DSIH_DCL */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_CONSTANT_BUFFER */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_GLOBAL_FLAGS */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ NULL,
+ /* WINED3DSIH_DCL_INPUT */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_INPUT_PS */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PS_SGV */ NULL,
+ /* WINED3DSIH_DCL_INPUT_PS_SIV */ NULL,
+ /* WINED3DSIH_DCL_INPUT_SGV */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_INPUT_SIV */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_OUTPUT */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT */ NULL,
+ /* WINED3DSIH_DCL_OUTPUT_SIV */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ NULL,
+ /* WINED3DSIH_DCL_SAMPLER */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_TEMPS */ shader_glsl_nop,
+ /* WINED3DSIH_DCL_UAV_TYPED */ NULL,
+ /* WINED3DSIH_DCL_VERTICES_OUT */ shader_glsl_nop,
+ /* WINED3DSIH_DEF */ shader_glsl_nop,
+ /* WINED3DSIH_DEFB */ shader_glsl_nop,
+ /* WINED3DSIH_DEFI */ shader_glsl_nop,
+ /* WINED3DSIH_DIV */ shader_glsl_binop,
+ /* WINED3DSIH_DP2 */ shader_glsl_dot,
+ /* WINED3DSIH_DP2ADD */ shader_glsl_dp2add,
+ /* WINED3DSIH_DP3 */ shader_glsl_dot,
+ /* WINED3DSIH_DP4 */ shader_glsl_dot,
+ /* WINED3DSIH_DST */ shader_glsl_dst,
+ /* WINED3DSIH_DSX */ shader_glsl_map2gl,
+ /* WINED3DSIH_DSX_COARSE */ NULL,
+ /* WINED3DSIH_DSX_FINE */ NULL,
+ /* WINED3DSIH_DSY */ shader_glsl_map2gl,
+ /* WINED3DSIH_DSY_COARSE */ NULL,
+ /* WINED3DSIH_DSY_FINE */ NULL,
+ /* WINED3DSIH_ELSE */ shader_glsl_else,
+ /* WINED3DSIH_EMIT */ shader_glsl_emit,
+ /* WINED3DSIH_ENDIF */ shader_glsl_end,
+ /* WINED3DSIH_ENDLOOP */ shader_glsl_end,
+ /* WINED3DSIH_ENDREP */ shader_glsl_end,
+ /* WINED3DSIH_EQ */ shader_glsl_relop,
+ /* WINED3DSIH_EXP */ shader_glsl_scalar_op,
+ /* WINED3DSIH_EXPP */ shader_glsl_expp,
+ /* WINED3DSIH_FRC */ shader_glsl_map2gl,
+ /* WINED3DSIH_FTOI */ shader_glsl_to_int,
+ /* WINED3DSIH_FTOU */ shader_glsl_to_uint,
+ /* WINED3DSIH_GE */ shader_glsl_relop,
+ /* WINED3DSIH_HS_DECLS */ shader_glsl_nop,
+ /* WINED3DSIH_HS_FORK_PHASE */ NULL,
+ /* WINED3DSIH_IADD */ shader_glsl_binop,
+ /* WINED3DSIH_IEQ */ shader_glsl_relop,
+ /* WINED3DSIH_IF */ shader_glsl_if,
+ /* WINED3DSIH_IFC */ shader_glsl_ifc,
+ /* WINED3DSIH_IGE */ shader_glsl_relop,
+ /* WINED3DSIH_ILT */ shader_glsl_relop,
+ /* WINED3DSIH_IMAD */ shader_glsl_mad,
+ /* WINED3DSIH_IMAX */ shader_glsl_map2gl,
+ /* WINED3DSIH_IMIN */ shader_glsl_map2gl,
+ /* WINED3DSIH_IMUL */ shader_glsl_imul,
+ /* WINED3DSIH_INE */ shader_glsl_relop,
+ /* WINED3DSIH_INEG */ shader_glsl_unary_op,
+ /* WINED3DSIH_ISHL */ shader_glsl_binop,
+ /* WINED3DSIH_ITOF */ shader_glsl_to_float,
+ /* WINED3DSIH_LABEL */ shader_glsl_label,
+ /* WINED3DSIH_LD */ shader_glsl_ld,
+ /* WINED3DSIH_LD2DMS */ NULL,
+ /* WINED3DSIH_LD_STRUCTURED */ NULL,
+ /* WINED3DSIH_LIT */ shader_glsl_lit,
+ /* WINED3DSIH_LOG */ shader_glsl_scalar_op,
+ /* WINED3DSIH_LOGP */ shader_glsl_scalar_op,
+ /* WINED3DSIH_LOOP */ shader_glsl_loop,
+ /* WINED3DSIH_LRP */ shader_glsl_lrp,
+ /* WINED3DSIH_LT */ shader_glsl_relop,
+ /* WINED3DSIH_M3x2 */ shader_glsl_mnxn,
+ /* WINED3DSIH_M3x3 */ shader_glsl_mnxn,
+ /* WINED3DSIH_M3x4 */ shader_glsl_mnxn,
+ /* WINED3DSIH_M4x3 */ shader_glsl_mnxn,
+ /* WINED3DSIH_M4x4 */ shader_glsl_mnxn,
+ /* WINED3DSIH_MAD */ shader_glsl_mad,
+ /* WINED3DSIH_MAX */ shader_glsl_map2gl,
+ /* WINED3DSIH_MIN */ shader_glsl_map2gl,
+ /* WINED3DSIH_MOV */ shader_glsl_mov,
+ /* WINED3DSIH_MOVA */ shader_glsl_mov,
+ /* WINED3DSIH_MOVC */ shader_glsl_conditional_move,
+ /* WINED3DSIH_MUL */ shader_glsl_binop,
+ /* WINED3DSIH_NE */ shader_glsl_relop,
+ /* WINED3DSIH_NOP */ shader_glsl_nop,
+ /* WINED3DSIH_NOT */ shader_glsl_unary_op,
+ /* WINED3DSIH_NRM */ shader_glsl_nrm,
+ /* WINED3DSIH_OR */ shader_glsl_binop,
+ /* WINED3DSIH_PHASE */ shader_glsl_nop,
+ /* WINED3DSIH_POW */ shader_glsl_pow,
+ /* WINED3DSIH_RCP */ shader_glsl_scalar_op,
+ /* WINED3DSIH_REP */ shader_glsl_rep,
+ /* WINED3DSIH_RESINFO */ shader_glsl_resinfo,
+ /* WINED3DSIH_RET */ shader_glsl_ret,
+ /* WINED3DSIH_ROUND_NI */ shader_glsl_map2gl,
+ /* WINED3DSIH_ROUND_PI */ shader_glsl_map2gl,
+ /* WINED3DSIH_ROUND_Z */ shader_glsl_map2gl,
+ /* WINED3DSIH_RSQ */ shader_glsl_scalar_op,
+ /* WINED3DSIH_SAMPLE */ shader_glsl_sample,
+ /* WINED3DSIH_SAMPLE_B */ shader_glsl_sample,
+ /* WINED3DSIH_SAMPLE_C */ shader_glsl_sample_c,
+ /* WINED3DSIH_SAMPLE_C_LZ */ shader_glsl_sample_c,
+ /* WINED3DSIH_SAMPLE_GRAD */ shader_glsl_sample,
+ /* WINED3DSIH_SAMPLE_LOD */ shader_glsl_sample,
+ /* WINED3DSIH_SETP */ NULL,
+ /* WINED3DSIH_SGE */ shader_glsl_compare,
+ /* WINED3DSIH_SGN */ shader_glsl_sgn,
+ /* WINED3DSIH_SINCOS */ shader_glsl_sincos,
+ /* WINED3DSIH_SLT */ shader_glsl_compare,
+ /* WINED3DSIH_SQRT */ shader_glsl_map2gl,
+ /* WINED3DSIH_STORE_UAV_TYPED */ NULL,
+ /* WINED3DSIH_SUB */ shader_glsl_binop,
+ /* WINED3DSIH_TEX */ shader_glsl_tex,
+ /* WINED3DSIH_TEXBEM */ shader_glsl_texbem,
+ /* WINED3DSIH_TEXBEML */ shader_glsl_texbem,
+ /* WINED3DSIH_TEXCOORD */ shader_glsl_texcoord,
+ /* WINED3DSIH_TEXDEPTH */ shader_glsl_texdepth,
+ /* WINED3DSIH_TEXDP3 */ shader_glsl_texdp3,
+ /* WINED3DSIH_TEXDP3TEX */ shader_glsl_texdp3tex,
+ /* WINED3DSIH_TEXKILL */ shader_glsl_texkill,
+ /* WINED3DSIH_TEXLDD */ shader_glsl_texldd,
+ /* WINED3DSIH_TEXLDL */ shader_glsl_texldl,
+ /* WINED3DSIH_TEXM3x2DEPTH */ shader_glsl_texm3x2depth,
+ /* WINED3DSIH_TEXM3x2PAD */ shader_glsl_texm3x2pad,
+ /* WINED3DSIH_TEXM3x2TEX */ shader_glsl_texm3x2tex,
+ /* WINED3DSIH_TEXM3x3 */ shader_glsl_texm3x3,
+ /* WINED3DSIH_TEXM3x3DIFF */ NULL,
+ /* WINED3DSIH_TEXM3x3PAD */ shader_glsl_texm3x3pad,
+ /* WINED3DSIH_TEXM3x3SPEC */ shader_glsl_texm3x3spec,
+ /* WINED3DSIH_TEXM3x3TEX */ shader_glsl_texm3x3tex,
+ /* WINED3DSIH_TEXM3x3VSPEC */ shader_glsl_texm3x3vspec,
+ /* WINED3DSIH_TEXREG2AR */ shader_glsl_texreg2ar,
+ /* WINED3DSIH_TEXREG2GB */ shader_glsl_texreg2gb,
+ /* WINED3DSIH_TEXREG2RGB */ shader_glsl_texreg2rgb,
+ /* WINED3DSIH_UDIV */ shader_glsl_udiv,
+ /* WINED3DSIH_UGE */ shader_glsl_relop,
+ /* WINED3DSIH_USHR */ shader_glsl_binop,
+ /* WINED3DSIH_UTOF */ shader_glsl_to_float,
+ /* WINED3DSIH_XOR */ shader_glsl_binop,
};
static void shader_glsl_handle_instruction(const struct wined3d_shader_instruction *ins) {
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 1bb587f..5521939 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -40,160 +40,161 @@ const float wined3d_srgb_const1[] = {0.0031308f, 0.0f, 0.0f, 0.0f};
static const char * const shader_opcode_names[] =
{
- /* WINED3DSIH_ABS */ "abs",
- /* WINED3DSIH_ADD */ "add",
- /* WINED3DSIH_AND */ "and",
- /* WINED3DSIH_BEM */ "bem",
- /* WINED3DSIH_BREAK */ "break",
- /* WINED3DSIH_BREAKC */ "breakc",
- /* WINED3DSIH_BREAKP */ "breakp",
- /* WINED3DSIH_CALL */ "call",
- /* WINED3DSIH_CALLNZ */ "callnz",
- /* WINED3DSIH_CMP */ "cmp",
- /* WINED3DSIH_CND */ "cnd",
- /* WINED3DSIH_CRS */ "crs",
- /* WINED3DSIH_CUT */ "cut",
- /* WINED3DSIH_DCL */ "dcl",
- /* WINED3DSIH_DCL_CONSTANT_BUFFER */ "dcl_constantBuffer",
- /* WINED3DSIH_DCL_GLOBAL_FLAGS */ "dcl_globalFlags",
- /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ "dcl_immediateConstantBuffer",
- /* WINED3DSIH_DCL_INPUT */ "dcl_input",
- /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ "dcl_input_control_point_count",
- /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ "dcl_inputPrimitive",
- /* WINED3DSIH_DCL_INPUT_PS */ "dcl_input_ps",
- /* WINED3DSIH_DCL_INPUT_PS_SGV */ "dcl_input_ps_sgv",
- /* WINED3DSIH_DCL_INPUT_PS_SIV */ "dcl_input_ps_siv",
- /* WINED3DSIH_DCL_INPUT_SGV */ "dcl_input_sgv",
- /* WINED3DSIH_DCL_INPUT_SIV */ "dcl_input_siv",
- /* WINED3DSIH_DCL_OUTPUT */ "dcl_output",
- /* WINED3DSIH_DCL_OUTPUT_SIV */ "dcl_output_siv",
- /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ "dcl_outputTopology",
- /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ "dcl_resource_structured",
- /* WINED3DSIH_DCL_SAMPLER */ "dcl_sampler",
- /* WINED3DSIH_DCL_TEMPS */ "dcl_temps",
- /* WINED3DSIH_DCL_UAV_TYPED */ "dcl_uav_typed",
- /* WINED3DSIH_DCL_VERTICES_OUT */ "dcl_maxOutputVertexCount",
- /* WINED3DSIH_DEF */ "def",
- /* WINED3DSIH_DEFB */ "defb",
- /* WINED3DSIH_DEFI */ "defi",
- /* WINED3DSIH_DIV */ "div",
- /* WINED3DSIH_DP2 */ "dp2",
- /* WINED3DSIH_DP2ADD */ "dp2add",
- /* WINED3DSIH_DP3 */ "dp3",
- /* WINED3DSIH_DP4 */ "dp4",
- /* WINED3DSIH_DST */ "dst",
- /* WINED3DSIH_DSX */ "dsx",
- /* WINED3DSIH_DSX_COARSE */ "deriv_rtx_coarse",
- /* WINED3DSIH_DSX_FINE */ "deriv_rtx_fine",
- /* WINED3DSIH_DSY */ "dsy",
- /* WINED3DSIH_DSY_COARSE */ "deriv_rty_coarse",
- /* WINED3DSIH_DSY_FINE */ "deriv_rty_fine",
- /* WINED3DSIH_ELSE */ "else",
- /* WINED3DSIH_EMIT */ "emit",
- /* WINED3DSIH_ENDIF */ "endif",
- /* WINED3DSIH_ENDLOOP */ "endloop",
- /* WINED3DSIH_ENDREP */ "endrep",
- /* WINED3DSIH_EQ */ "eq",
- /* WINED3DSIH_EXP */ "exp",
- /* WINED3DSIH_EXPP */ "expp",
- /* WINED3DSIH_FRC */ "frc",
- /* WINED3DSIH_FTOI */ "ftoi",
- /* WINED3DSIH_FTOU */ "ftou",
- /* WINED3DSIH_GE */ "ge",
- /* WINED3DSIH_HS_DECLS */ "hs_decls",
- /* WINED3DSIH_HS_FORK_PHASE */ "hs_fork_phase",
- /* WINED3DSIH_IADD */ "iadd",
- /* WINED3DSIH_IEQ */ "ieq",
- /* WINED3DSIH_IF */ "if",
- /* WINED3DSIH_IFC */ "ifc",
- /* WINED3DSIH_IGE */ "ige",
- /* WINED3DSIH_ILT */ "ilt",
- /* WINED3DSIH_IMAD */ "imad",
- /* WINED3DSIH_IMAX */ "imax",
- /* WINED3DSIH_IMIN */ "imin",
- /* WINED3DSIH_IMUL */ "imul",
- /* WINED3DSIH_INE */ "ine",
- /* WINED3DSIH_INEG */ "ineg",
- /* WINED3DSIH_ISHL */ "ishl",
- /* WINED3DSIH_ITOF */ "itof",
- /* WINED3DSIH_LABEL */ "label",
- /* WINED3DSIH_LD */ "ld",
- /* WINED3DSIH_LD2DMS */ "ld2dms",
- /* WINED3DSIH_LD_STRUCTURED */ "ld_structured",
- /* WINED3DSIH_LIT */ "lit",
- /* WINED3DSIH_LOG */ "log",
- /* WINED3DSIH_LOGP */ "logp",
- /* WINED3DSIH_LOOP */ "loop",
- /* WINED3DSIH_LRP */ "lrp",
- /* WINED3DSIH_LT */ "lt",
- /* WINED3DSIH_M3x2 */ "m3x2",
- /* WINED3DSIH_M3x3 */ "m3x3",
- /* WINED3DSIH_M3x4 */ "m3x4",
- /* WINED3DSIH_M4x3 */ "m4x3",
- /* WINED3DSIH_M4x4 */ "m4x4",
- /* WINED3DSIH_MAD */ "mad",
- /* WINED3DSIH_MAX */ "max",
- /* WINED3DSIH_MIN */ "min",
- /* WINED3DSIH_MOV */ "mov",
- /* WINED3DSIH_MOVA */ "mova",
- /* WINED3DSIH_MOVC */ "movc",
- /* WINED3DSIH_MUL */ "mul",
- /* WINED3DSIH_NE */ "ne",
- /* WINED3DSIH_NOP */ "nop",
- /* WINED3DSIH_NOT */ "not",
- /* WINED3DSIH_NRM */ "nrm",
- /* WINED3DSIH_OR */ "or",
- /* WINED3DSIH_PHASE */ "phase",
- /* WINED3DSIH_POW */ "pow",
- /* WINED3DSIH_RCP */ "rcp",
- /* WINED3DSIH_REP */ "rep",
- /* WINED3DSIH_RESINFO */ "resinfo",
- /* WINED3DSIH_RET */ "ret",
- /* WINED3DSIH_ROUND_NI */ "round_ni",
- /* WINED3DSIH_ROUND_PI */ "round_pi",
- /* WINED3DSIH_ROUND_Z */ "round_z",
- /* WINED3DSIH_RSQ */ "rsq",
- /* WINED3DSIH_SAMPLE */ "sample",
- /* WINED3DSIH_SAMPLE_B */ "sample_b",
- /* WINED3DSIH_SAMPLE_C */ "sample_c",
- /* WINED3DSIH_SAMPLE_C_LZ */ "sample_c_lz",
- /* WINED3DSIH_SAMPLE_GRAD */ "sample_d",
- /* WINED3DSIH_SAMPLE_LOD */ "sample_l",
- /* WINED3DSIH_SETP */ "setp",
- /* WINED3DSIH_SGE */ "sge",
- /* WINED3DSIH_SGN */ "sgn",
- /* WINED3DSIH_SINCOS */ "sincos",
- /* WINED3DSIH_SLT */ "slt",
- /* WINED3DSIH_SQRT */ "sqrt",
- /* WINED3DSIH_STORE_UAV_TYPED */ "store_uav_typed",
- /* WINED3DSIH_SUB */ "sub",
- /* WINED3DSIH_TEX */ "texld",
- /* WINED3DSIH_TEXBEM */ "texbem",
- /* WINED3DSIH_TEXBEML */ "texbeml",
- /* WINED3DSIH_TEXCOORD */ "texcrd",
- /* WINED3DSIH_TEXDEPTH */ "texdepth",
- /* WINED3DSIH_TEXDP3 */ "texdp3",
- /* WINED3DSIH_TEXDP3TEX */ "texdp3tex",
- /* WINED3DSIH_TEXKILL */ "texkill",
- /* WINED3DSIH_TEXLDD */ "texldd",
- /* WINED3DSIH_TEXLDL */ "texldl",
- /* WINED3DSIH_TEXM3x2DEPTH */ "texm3x2depth",
- /* WINED3DSIH_TEXM3x2PAD */ "texm3x2pad",
- /* WINED3DSIH_TEXM3x2TEX */ "texm3x2tex",
- /* WINED3DSIH_TEXM3x3 */ "texm3x3",
- /* WINED3DSIH_TEXM3x3DIFF */ "texm3x3diff",
- /* WINED3DSIH_TEXM3x3PAD */ "texm3x3pad",
- /* WINED3DSIH_TEXM3x3SPEC */ "texm3x3spec",
- /* WINED3DSIH_TEXM3x3TEX */ "texm3x3tex",
- /* WINED3DSIH_TEXM3x3VSPEC */ "texm3x3vspec",
- /* WINED3DSIH_TEXREG2AR */ "texreg2ar",
- /* WINED3DSIH_TEXREG2GB */ "texreg2gb",
- /* WINED3DSIH_TEXREG2RGB */ "texreg2rgb",
- /* WINED3DSIH_UDIV */ "udiv",
- /* WINED3DSIH_UGE */ "uge",
- /* WINED3DSIH_USHR */ "ushr",
- /* WINED3DSIH_UTOF */ "utof",
- /* WINED3DSIH_XOR */ "xor",
+ /* WINED3DSIH_ABS */ "abs",
+ /* WINED3DSIH_ADD */ "add",
+ /* WINED3DSIH_AND */ "and",
+ /* WINED3DSIH_BEM */ "bem",
+ /* WINED3DSIH_BREAK */ "break",
+ /* WINED3DSIH_BREAKC */ "breakc",
+ /* WINED3DSIH_BREAKP */ "breakp",
+ /* WINED3DSIH_CALL */ "call",
+ /* WINED3DSIH_CALLNZ */ "callnz",
+ /* WINED3DSIH_CMP */ "cmp",
+ /* WINED3DSIH_CND */ "cnd",
+ /* WINED3DSIH_CRS */ "crs",
+ /* WINED3DSIH_CUT */ "cut",
+ /* WINED3DSIH_DCL */ "dcl",
+ /* WINED3DSIH_DCL_CONSTANT_BUFFER */ "dcl_constantBuffer",
+ /* WINED3DSIH_DCL_GLOBAL_FLAGS */ "dcl_globalFlags",
+ /* WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER */ "dcl_immediateConstantBuffer",
+ /* WINED3DSIH_DCL_INPUT */ "dcl_input",
+ /* WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT */ "dcl_input_control_point_count",
+ /* WINED3DSIH_DCL_INPUT_PRIMITIVE */ "dcl_inputPrimitive",
+ /* WINED3DSIH_DCL_INPUT_PS */ "dcl_input_ps",
+ /* WINED3DSIH_DCL_INPUT_PS_SGV */ "dcl_input_ps_sgv",
+ /* WINED3DSIH_DCL_INPUT_PS_SIV */ "dcl_input_ps_siv",
+ /* WINED3DSIH_DCL_INPUT_SGV */ "dcl_input_sgv",
+ /* WINED3DSIH_DCL_INPUT_SIV */ "dcl_input_siv",
+ /* WINED3DSIH_DCL_OUTPUT */ "dcl_output",
+ /* WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT */ "dcl_output_control_point_count",
+ /* WINED3DSIH_DCL_OUTPUT_SIV */ "dcl_output_siv",
+ /* WINED3DSIH_DCL_OUTPUT_TOPOLOGY */ "dcl_outputTopology",
+ /* WINED3DSIH_DCL_RESOURCE_STRUCTURED */ "dcl_resource_structured",
+ /* WINED3DSIH_DCL_SAMPLER */ "dcl_sampler",
+ /* WINED3DSIH_DCL_TEMPS */ "dcl_temps",
+ /* WINED3DSIH_DCL_UAV_TYPED */ "dcl_uav_typed",
+ /* WINED3DSIH_DCL_VERTICES_OUT */ "dcl_maxOutputVertexCount",
+ /* WINED3DSIH_DEF */ "def",
+ /* WINED3DSIH_DEFB */ "defb",
+ /* WINED3DSIH_DEFI */ "defi",
+ /* WINED3DSIH_DIV */ "div",
+ /* WINED3DSIH_DP2 */ "dp2",
+ /* WINED3DSIH_DP2ADD */ "dp2add",
+ /* WINED3DSIH_DP3 */ "dp3",
+ /* WINED3DSIH_DP4 */ "dp4",
+ /* WINED3DSIH_DST */ "dst",
+ /* WINED3DSIH_DSX */ "dsx",
+ /* WINED3DSIH_DSX_COARSE */ "deriv_rtx_coarse",
+ /* WINED3DSIH_DSX_FINE */ "deriv_rtx_fine",
+ /* WINED3DSIH_DSY */ "dsy",
+ /* WINED3DSIH_DSY_COARSE */ "deriv_rty_coarse",
+ /* WINED3DSIH_DSY_FINE */ "deriv_rty_fine",
+ /* WINED3DSIH_ELSE */ "else",
+ /* WINED3DSIH_EMIT */ "emit",
+ /* WINED3DSIH_ENDIF */ "endif",
+ /* WINED3DSIH_ENDLOOP */ "endloop",
+ /* WINED3DSIH_ENDREP */ "endrep",
+ /* WINED3DSIH_EQ */ "eq",
+ /* WINED3DSIH_EXP */ "exp",
+ /* WINED3DSIH_EXPP */ "expp",
+ /* WINED3DSIH_FRC */ "frc",
+ /* WINED3DSIH_FTOI */ "ftoi",
+ /* WINED3DSIH_FTOU */ "ftou",
+ /* WINED3DSIH_GE */ "ge",
+ /* WINED3DSIH_HS_DECLS */ "hs_decls",
+ /* WINED3DSIH_HS_FORK_PHASE */ "hs_fork_phase",
+ /* WINED3DSIH_IADD */ "iadd",
+ /* WINED3DSIH_IEQ */ "ieq",
+ /* WINED3DSIH_IF */ "if",
+ /* WINED3DSIH_IFC */ "ifc",
+ /* WINED3DSIH_IGE */ "ige",
+ /* WINED3DSIH_ILT */ "ilt",
+ /* WINED3DSIH_IMAD */ "imad",
+ /* WINED3DSIH_IMAX */ "imax",
+ /* WINED3DSIH_IMIN */ "imin",
+ /* WINED3DSIH_IMUL */ "imul",
+ /* WINED3DSIH_INE */ "ine",
+ /* WINED3DSIH_INEG */ "ineg",
+ /* WINED3DSIH_ISHL */ "ishl",
+ /* WINED3DSIH_ITOF */ "itof",
+ /* WINED3DSIH_LABEL */ "label",
+ /* WINED3DSIH_LD */ "ld",
+ /* WINED3DSIH_LD2DMS */ "ld2dms",
+ /* WINED3DSIH_LD_STRUCTURED */ "ld_structured",
+ /* WINED3DSIH_LIT */ "lit",
+ /* WINED3DSIH_LOG */ "log",
+ /* WINED3DSIH_LOGP */ "logp",
+ /* WINED3DSIH_LOOP */ "loop",
+ /* WINED3DSIH_LRP */ "lrp",
+ /* WINED3DSIH_LT */ "lt",
+ /* WINED3DSIH_M3x2 */ "m3x2",
+ /* WINED3DSIH_M3x3 */ "m3x3",
+ /* WINED3DSIH_M3x4 */ "m3x4",
+ /* WINED3DSIH_M4x3 */ "m4x3",
+ /* WINED3DSIH_M4x4 */ "m4x4",
+ /* WINED3DSIH_MAD */ "mad",
+ /* WINED3DSIH_MAX */ "max",
+ /* WINED3DSIH_MIN */ "min",
+ /* WINED3DSIH_MOV */ "mov",
+ /* WINED3DSIH_MOVA */ "mova",
+ /* WINED3DSIH_MOVC */ "movc",
+ /* WINED3DSIH_MUL */ "mul",
+ /* WINED3DSIH_NE */ "ne",
+ /* WINED3DSIH_NOP */ "nop",
+ /* WINED3DSIH_NOT */ "not",
+ /* WINED3DSIH_NRM */ "nrm",
+ /* WINED3DSIH_OR */ "or",
+ /* WINED3DSIH_PHASE */ "phase",
+ /* WINED3DSIH_POW */ "pow",
+ /* WINED3DSIH_RCP */ "rcp",
+ /* WINED3DSIH_REP */ "rep",
+ /* WINED3DSIH_RESINFO */ "resinfo",
+ /* WINED3DSIH_RET */ "ret",
+ /* WINED3DSIH_ROUND_NI */ "round_ni",
+ /* WINED3DSIH_ROUND_PI */ "round_pi",
+ /* WINED3DSIH_ROUND_Z */ "round_z",
+ /* WINED3DSIH_RSQ */ "rsq",
+ /* WINED3DSIH_SAMPLE */ "sample",
+ /* WINED3DSIH_SAMPLE_B */ "sample_b",
+ /* WINED3DSIH_SAMPLE_C */ "sample_c",
+ /* WINED3DSIH_SAMPLE_C_LZ */ "sample_c_lz",
+ /* WINED3DSIH_SAMPLE_GRAD */ "sample_d",
+ /* WINED3DSIH_SAMPLE_LOD */ "sample_l",
+ /* WINED3DSIH_SETP */ "setp",
+ /* WINED3DSIH_SGE */ "sge",
+ /* WINED3DSIH_SGN */ "sgn",
+ /* WINED3DSIH_SINCOS */ "sincos",
+ /* WINED3DSIH_SLT */ "slt",
+ /* WINED3DSIH_SQRT */ "sqrt",
+ /* WINED3DSIH_STORE_UAV_TYPED */ "store_uav_typed",
+ /* WINED3DSIH_SUB */ "sub",
+ /* WINED3DSIH_TEX */ "texld",
+ /* WINED3DSIH_TEXBEM */ "texbem",
+ /* WINED3DSIH_TEXBEML */ "texbeml",
+ /* WINED3DSIH_TEXCOORD */ "texcrd",
+ /* WINED3DSIH_TEXDEPTH */ "texdepth",
+ /* WINED3DSIH_TEXDP3 */ "texdp3",
+ /* WINED3DSIH_TEXDP3TEX */ "texdp3tex",
+ /* WINED3DSIH_TEXKILL */ "texkill",
+ /* WINED3DSIH_TEXLDD */ "texldd",
+ /* WINED3DSIH_TEXLDL */ "texldl",
+ /* WINED3DSIH_TEXM3x2DEPTH */ "texm3x2depth",
+ /* WINED3DSIH_TEXM3x2PAD */ "texm3x2pad",
+ /* WINED3DSIH_TEXM3x2TEX */ "texm3x2tex",
+ /* WINED3DSIH_TEXM3x3 */ "texm3x3",
+ /* WINED3DSIH_TEXM3x3DIFF */ "texm3x3diff",
+ /* WINED3DSIH_TEXM3x3PAD */ "texm3x3pad",
+ /* WINED3DSIH_TEXM3x3SPEC */ "texm3x3spec",
+ /* WINED3DSIH_TEXM3x3TEX */ "texm3x3tex",
+ /* WINED3DSIH_TEXM3x3VSPEC */ "texm3x3vspec",
+ /* WINED3DSIH_TEXREG2AR */ "texreg2ar",
+ /* WINED3DSIH_TEXREG2GB */ "texreg2gb",
+ /* WINED3DSIH_TEXREG2RGB */ "texreg2rgb",
+ /* WINED3DSIH_UDIV */ "udiv",
+ /* WINED3DSIH_UGE */ "uge",
+ /* WINED3DSIH_USHR */ "ushr",
+ /* WINED3DSIH_UTOF */ "utof",
+ /* WINED3DSIH_XOR */ "xor",
};
static const char * const semantic_names[] =
@@ -2063,7 +2064,8 @@ static void shader_trace_init(const struct wined3d_shader_frontend *fe, void *fe
}
else if (ins.handler_idx == WINED3DSIH_DCL_TEMPS
|| ins.handler_idx == WINED3DSIH_DCL_VERTICES_OUT
- || ins.handler_idx == WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT)
+ || ins.handler_idx == WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
+ || ins.handler_idx == WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT)
{
shader_addline(&buffer, "%s %u", shader_opcode_names[ins.handler_idx], ins.declaration.count);
}
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index a19fd21..e4b4938 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -194,6 +194,7 @@ enum wined3d_sm4_opcode
WINED3D_SM5_OP_DERIV_RTY_COARSE = 0x7c,
WINED3D_SM5_OP_DERIV_RTY_FINE = 0x7d,
WINED3D_SM5_OP_DCL_INPUT_CPOINT_COUNT = 0x93,
+ WINED3D_SM5_OP_DCL_OUTPUT_CPOINT_COUNT = 0x94,
WINED3D_SM5_OP_DCL_UAV_TYPED = 0x9c,
WINED3D_SM5_OP_DCL_RESOURCE_STRUCTURED = 0xa2,
WINED3D_SM5_OP_STORE_UAV_TYPED = 0xa4,
@@ -317,102 +318,103 @@ struct wined3d_sm4_opcode_info
*/
static const struct wined3d_sm4_opcode_info opcode_table[] =
{
- {WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, "f", "ff"},
- {WINED3D_SM4_OP_AND, WINED3DSIH_AND, "u", "uu"},
- {WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, "", ""},
- {WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, "", "u"},
- {WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, "", ""},
- {WINED3D_SM4_OP_DERIV_RTX, WINED3DSIH_DSX, "f", "f"},
- {WINED3D_SM4_OP_DERIV_RTY, WINED3DSIH_DSY, "f", "f"},
- {WINED3D_SM4_OP_DISCARD, WINED3DSIH_TEXKILL, "", "u"},
- {WINED3D_SM4_OP_DIV, WINED3DSIH_DIV, "f", "ff"},
- {WINED3D_SM4_OP_DP2, WINED3DSIH_DP2, "f", "ff"},
- {WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, "f", "ff"},
- {WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, "f", "ff"},
- {WINED3D_SM4_OP_ELSE, WINED3DSIH_ELSE, "", ""},
- {WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, "", ""},
- {WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, "", ""},
- {WINED3D_SM4_OP_ENDLOOP, WINED3DSIH_ENDLOOP, "", ""},
- {WINED3D_SM4_OP_EQ, WINED3DSIH_EQ, "u", "ff"},
- {WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, "f", "f"},
- {WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, "f", "f"},
- {WINED3D_SM4_OP_FTOI, WINED3DSIH_FTOI, "i", "f"},
- {WINED3D_SM4_OP_FTOU, WINED3DSIH_FTOU, "u", "f"},
- {WINED3D_SM4_OP_GE, WINED3DSIH_GE, "u", "ff"},
- {WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, "i", "ii"},
- {WINED3D_SM4_OP_IF, WINED3DSIH_IF, "", "u"},
- {WINED3D_SM4_OP_IEQ, WINED3DSIH_IEQ, "u", "ii"},
- {WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, "u", "ii"},
- {WINED3D_SM4_OP_ILT, WINED3DSIH_ILT, "u", "ii"},
- {WINED3D_SM4_OP_IMAD, WINED3DSIH_IMAD, "i", "iii"},
- {WINED3D_SM4_OP_IMAX, WINED3DSIH_IMAX, "i", "ii"},
- {WINED3D_SM4_OP_IMIN, WINED3DSIH_IMIN, "i", "ii"},
- {WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, "ii", "ii"},
- {WINED3D_SM4_OP_INE, WINED3DSIH_INE, "u", "ii"},
- {WINED3D_SM4_OP_INEG, WINED3DSIH_INEG, "i", "i"},
- {WINED3D_SM4_OP_ISHL, WINED3DSIH_ISHL, "i", "ii"},
- {WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, "f", "i"},
- {WINED3D_SM4_OP_LD, WINED3DSIH_LD, "u", "iR"},
- {WINED3D_SM4_OP_LD2DMS, WINED3DSIH_LD2DMS, "u", "iRi"},
- {WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, "f", "f"},
- {WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, "", ""},
- {WINED3D_SM4_OP_LT, WINED3DSIH_LT, "u", "ff"},
- {WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, "f", "fff"},
- {WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, "f", "ff"},
- {WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, "f", "ff"},
- {WINED3D_SM4_OP_SHADER_DATA, WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER, "", ""},
- {WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, "f", "f"},
- {WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, "f", "uff"},
- {WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, "f", "ff"},
- {WINED3D_SM4_OP_NE, WINED3DSIH_NE, "u", "ff"},
- {WINED3D_SM4_OP_NOT, WINED3DSIH_NOT, "u", "u"},
- {WINED3D_SM4_OP_OR, WINED3DSIH_OR, "u", "uu"},
- {WINED3D_SM4_OP_RESINFO, WINED3DSIH_RESINFO, "f", "iR"},
- {WINED3D_SM4_OP_RET, WINED3DSIH_RET, "", ""},
- {WINED3D_SM4_OP_ROUND_NI, WINED3DSIH_ROUND_NI, "f", "f"},
- {WINED3D_SM4_OP_ROUND_PI, WINED3DSIH_ROUND_PI, "f", "f"},
- {WINED3D_SM4_OP_ROUND_Z, WINED3DSIH_ROUND_Z, "f", "f"},
- {WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, "f", "f"},
- {WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, "u", "fRS"},
- {WINED3D_SM4_OP_SAMPLE_C, WINED3DSIH_SAMPLE_C, "f", "fRSf"},
- {WINED3D_SM4_OP_SAMPLE_C_LZ, WINED3DSIH_SAMPLE_C_LZ, "f", "fRSf"},
- {WINED3D_SM4_OP_SAMPLE_LOD, WINED3DSIH_SAMPLE_LOD, "u", "fRSf"},
- {WINED3D_SM4_OP_SAMPLE_GRAD, WINED3DSIH_SAMPLE_GRAD, "u", "fRSff"},
- {WINED3D_SM4_OP_SAMPLE_B, WINED3DSIH_SAMPLE_B, "u", "fRSf"},
- {WINED3D_SM4_OP_SQRT, WINED3DSIH_SQRT, "f", "f"},
- {WINED3D_SM4_OP_SINCOS, WINED3DSIH_SINCOS, "ff", "f"},
- {WINED3D_SM4_OP_UDIV, WINED3DSIH_UDIV, "uu", "uu"},
- {WINED3D_SM4_OP_UGE, WINED3DSIH_UGE, "u", "uu"},
- {WINED3D_SM4_OP_USHR, WINED3DSIH_USHR, "u", "uu"},
- {WINED3D_SM4_OP_UTOF, WINED3DSIH_UTOF, "f", "u"},
- {WINED3D_SM4_OP_XOR, WINED3DSIH_XOR, "u", "uu"},
- {WINED3D_SM4_OP_DCL_RESOURCE, WINED3DSIH_DCL, "R", ""},
- {WINED3D_SM4_OP_DCL_CONSTANT_BUFFER, WINED3DSIH_DCL_CONSTANT_BUFFER, "", ""},
- {WINED3D_SM4_OP_DCL_SAMPLER, WINED3DSIH_DCL_SAMPLER, "", ""},
- {WINED3D_SM4_OP_DCL_OUTPUT_TOPOLOGY, WINED3DSIH_DCL_OUTPUT_TOPOLOGY, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_PRIMITIVE, WINED3DSIH_DCL_INPUT_PRIMITIVE, "", ""},
- {WINED3D_SM4_OP_DCL_VERTICES_OUT, WINED3DSIH_DCL_VERTICES_OUT, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT, WINED3DSIH_DCL_INPUT, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_SGV, WINED3DSIH_DCL_INPUT_SGV, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_SIV, WINED3DSIH_DCL_INPUT_SIV, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_PS, WINED3DSIH_DCL_INPUT_PS, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_PS_SGV, WINED3DSIH_DCL_INPUT_PS_SGV, "", ""},
- {WINED3D_SM4_OP_DCL_INPUT_PS_SIV, WINED3DSIH_DCL_INPUT_PS_SIV, "", ""},
- {WINED3D_SM4_OP_DCL_OUTPUT, WINED3DSIH_DCL_OUTPUT, "", ""},
- {WINED3D_SM4_OP_DCL_OUTPUT_SIV, WINED3DSIH_DCL_OUTPUT_SIV, "", ""},
- {WINED3D_SM4_OP_DCL_TEMPS, WINED3DSIH_DCL_TEMPS, "", ""},
- {WINED3D_SM4_OP_DCL_GLOBAL_FLAGS, WINED3DSIH_DCL_GLOBAL_FLAGS, "", ""},
- {WINED3D_SM5_OP_HS_DECLS, WINED3DSIH_HS_DECLS, "", ""},
- {WINED3D_SM5_OP_HS_FORK_PHASE, WINED3DSIH_HS_FORK_PHASE, "", ""},
- {WINED3D_SM5_OP_DERIV_RTX_COARSE, WINED3DSIH_DSX_COARSE, "f", "f"},
- {WINED3D_SM5_OP_DERIV_RTX_FINE, WINED3DSIH_DSX_FINE, "f", "f"},
- {WINED3D_SM5_OP_DERIV_RTY_COARSE, WINED3DSIH_DSY_COARSE, "f", "f"},
- {WINED3D_SM5_OP_DERIV_RTY_FINE, WINED3DSIH_DSY_FINE, "f", "f"},
- {WINED3D_SM5_OP_DCL_INPUT_CPOINT_COUNT, WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT, "", ""},
- {WINED3D_SM5_OP_DCL_UAV_TYPED, WINED3DSIH_DCL_UAV_TYPED, "", ""},
- {WINED3D_SM5_OP_DCL_RESOURCE_STRUCTURED, WINED3DSIH_DCL_RESOURCE_STRUCTURED, "", ""},
- {WINED3D_SM5_OP_STORE_UAV_TYPED, WINED3DSIH_STORE_UAV_TYPED, "", "Uif"},
- {WINED3D_SM5_OP_LD_STRUCTURED, WINED3DSIH_LD_STRUCTURED, "u", "uuR"},
+ {WINED3D_SM4_OP_ADD, WINED3DSIH_ADD, "f", "ff"},
+ {WINED3D_SM4_OP_AND, WINED3DSIH_AND, "u", "uu"},
+ {WINED3D_SM4_OP_BREAK, WINED3DSIH_BREAK, "", ""},
+ {WINED3D_SM4_OP_BREAKC, WINED3DSIH_BREAKP, "", "u"},
+ {WINED3D_SM4_OP_CUT, WINED3DSIH_CUT, "", ""},
+ {WINED3D_SM4_OP_DERIV_RTX, WINED3DSIH_DSX, "f", "f"},
+ {WINED3D_SM4_OP_DERIV_RTY, WINED3DSIH_DSY, "f", "f"},
+ {WINED3D_SM4_OP_DISCARD, WINED3DSIH_TEXKILL, "", "u"},
+ {WINED3D_SM4_OP_DIV, WINED3DSIH_DIV, "f", "ff"},
+ {WINED3D_SM4_OP_DP2, WINED3DSIH_DP2, "f", "ff"},
+ {WINED3D_SM4_OP_DP3, WINED3DSIH_DP3, "f", "ff"},
+ {WINED3D_SM4_OP_DP4, WINED3DSIH_DP4, "f", "ff"},
+ {WINED3D_SM4_OP_ELSE, WINED3DSIH_ELSE, "", ""},
+ {WINED3D_SM4_OP_EMIT, WINED3DSIH_EMIT, "", ""},
+ {WINED3D_SM4_OP_ENDIF, WINED3DSIH_ENDIF, "", ""},
+ {WINED3D_SM4_OP_ENDLOOP, WINED3DSIH_ENDLOOP, "", ""},
+ {WINED3D_SM4_OP_EQ, WINED3DSIH_EQ, "u", "ff"},
+ {WINED3D_SM4_OP_EXP, WINED3DSIH_EXP, "f", "f"},
+ {WINED3D_SM4_OP_FRC, WINED3DSIH_FRC, "f", "f"},
+ {WINED3D_SM4_OP_FTOI, WINED3DSIH_FTOI, "i", "f"},
+ {WINED3D_SM4_OP_FTOU, WINED3DSIH_FTOU, "u", "f"},
+ {WINED3D_SM4_OP_GE, WINED3DSIH_GE, "u", "ff"},
+ {WINED3D_SM4_OP_IADD, WINED3DSIH_IADD, "i", "ii"},
+ {WINED3D_SM4_OP_IF, WINED3DSIH_IF, "", "u"},
+ {WINED3D_SM4_OP_IEQ, WINED3DSIH_IEQ, "u", "ii"},
+ {WINED3D_SM4_OP_IGE, WINED3DSIH_IGE, "u", "ii"},
+ {WINED3D_SM4_OP_ILT, WINED3DSIH_ILT, "u", "ii"},
+ {WINED3D_SM4_OP_IMAD, WINED3DSIH_IMAD, "i", "iii"},
+ {WINED3D_SM4_OP_IMAX, WINED3DSIH_IMAX, "i", "ii"},
+ {WINED3D_SM4_OP_IMIN, WINED3DSIH_IMIN, "i", "ii"},
+ {WINED3D_SM4_OP_IMUL, WINED3DSIH_IMUL, "ii", "ii"},
+ {WINED3D_SM4_OP_INE, WINED3DSIH_INE, "u", "ii"},
+ {WINED3D_SM4_OP_INEG, WINED3DSIH_INEG, "i", "i"},
+ {WINED3D_SM4_OP_ISHL, WINED3DSIH_ISHL, "i", "ii"},
+ {WINED3D_SM4_OP_ITOF, WINED3DSIH_ITOF, "f", "i"},
+ {WINED3D_SM4_OP_LD, WINED3DSIH_LD, "u", "iR"},
+ {WINED3D_SM4_OP_LD2DMS, WINED3DSIH_LD2DMS, "u", "iRi"},
+ {WINED3D_SM4_OP_LOG, WINED3DSIH_LOG, "f", "f"},
+ {WINED3D_SM4_OP_LOOP, WINED3DSIH_LOOP, "", ""},
+ {WINED3D_SM4_OP_LT, WINED3DSIH_LT, "u", "ff"},
+ {WINED3D_SM4_OP_MAD, WINED3DSIH_MAD, "f", "fff"},
+ {WINED3D_SM4_OP_MIN, WINED3DSIH_MIN, "f", "ff"},
+ {WINED3D_SM4_OP_MAX, WINED3DSIH_MAX, "f", "ff"},
+ {WINED3D_SM4_OP_SHADER_DATA, WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER, "", ""},
+ {WINED3D_SM4_OP_MOV, WINED3DSIH_MOV, "f", "f"},
+ {WINED3D_SM4_OP_MOVC, WINED3DSIH_MOVC, "f", "uff"},
+ {WINED3D_SM4_OP_MUL, WINED3DSIH_MUL, "f", "ff"},
+ {WINED3D_SM4_OP_NE, WINED3DSIH_NE, "u", "ff"},
+ {WINED3D_SM4_OP_NOT, WINED3DSIH_NOT, "u", "u"},
+ {WINED3D_SM4_OP_OR, WINED3DSIH_OR, "u", "uu"},
+ {WINED3D_SM4_OP_RESINFO, WINED3DSIH_RESINFO, "f", "iR"},
+ {WINED3D_SM4_OP_RET, WINED3DSIH_RET, "", ""},
+ {WINED3D_SM4_OP_ROUND_NI, WINED3DSIH_ROUND_NI, "f", "f"},
+ {WINED3D_SM4_OP_ROUND_PI, WINED3DSIH_ROUND_PI, "f", "f"},
+ {WINED3D_SM4_OP_ROUND_Z, WINED3DSIH_ROUND_Z, "f", "f"},
+ {WINED3D_SM4_OP_RSQ, WINED3DSIH_RSQ, "f", "f"},
+ {WINED3D_SM4_OP_SAMPLE, WINED3DSIH_SAMPLE, "u", "fRS"},
+ {WINED3D_SM4_OP_SAMPLE_C, WINED3DSIH_SAMPLE_C, "f", "fRSf"},
+ {WINED3D_SM4_OP_SAMPLE_C_LZ, WINED3DSIH_SAMPLE_C_LZ, "f", "fRSf"},
+ {WINED3D_SM4_OP_SAMPLE_LOD, WINED3DSIH_SAMPLE_LOD, "u", "fRSf"},
+ {WINED3D_SM4_OP_SAMPLE_GRAD, WINED3DSIH_SAMPLE_GRAD, "u", "fRSff"},
+ {WINED3D_SM4_OP_SAMPLE_B, WINED3DSIH_SAMPLE_B, "u", "fRSf"},
+ {WINED3D_SM4_OP_SQRT, WINED3DSIH_SQRT, "f", "f"},
+ {WINED3D_SM4_OP_SINCOS, WINED3DSIH_SINCOS, "ff", "f"},
+ {WINED3D_SM4_OP_UDIV, WINED3DSIH_UDIV, "uu", "uu"},
+ {WINED3D_SM4_OP_UGE, WINED3DSIH_UGE, "u", "uu"},
+ {WINED3D_SM4_OP_USHR, WINED3DSIH_USHR, "u", "uu"},
+ {WINED3D_SM4_OP_UTOF, WINED3DSIH_UTOF, "f", "u"},
+ {WINED3D_SM4_OP_XOR, WINED3DSIH_XOR, "u", "uu"},
+ {WINED3D_SM4_OP_DCL_RESOURCE, WINED3DSIH_DCL, "R", ""},
+ {WINED3D_SM4_OP_DCL_CONSTANT_BUFFER, WINED3DSIH_DCL_CONSTANT_BUFFER, "", ""},
+ {WINED3D_SM4_OP_DCL_SAMPLER, WINED3DSIH_DCL_SAMPLER, "", ""},
+ {WINED3D_SM4_OP_DCL_OUTPUT_TOPOLOGY, WINED3DSIH_DCL_OUTPUT_TOPOLOGY, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_PRIMITIVE, WINED3DSIH_DCL_INPUT_PRIMITIVE, "", ""},
+ {WINED3D_SM4_OP_DCL_VERTICES_OUT, WINED3DSIH_DCL_VERTICES_OUT, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT, WINED3DSIH_DCL_INPUT, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_SGV, WINED3DSIH_DCL_INPUT_SGV, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_SIV, WINED3DSIH_DCL_INPUT_SIV, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_PS, WINED3DSIH_DCL_INPUT_PS, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_PS_SGV, WINED3DSIH_DCL_INPUT_PS_SGV, "", ""},
+ {WINED3D_SM4_OP_DCL_INPUT_PS_SIV, WINED3DSIH_DCL_INPUT_PS_SIV, "", ""},
+ {WINED3D_SM4_OP_DCL_OUTPUT, WINED3DSIH_DCL_OUTPUT, "", ""},
+ {WINED3D_SM4_OP_DCL_OUTPUT_SIV, WINED3DSIH_DCL_OUTPUT_SIV, "", ""},
+ {WINED3D_SM4_OP_DCL_TEMPS, WINED3DSIH_DCL_TEMPS, "", ""},
+ {WINED3D_SM4_OP_DCL_GLOBAL_FLAGS, WINED3DSIH_DCL_GLOBAL_FLAGS, "", ""},
+ {WINED3D_SM5_OP_HS_DECLS, WINED3DSIH_HS_DECLS, "", ""},
+ {WINED3D_SM5_OP_HS_FORK_PHASE, WINED3DSIH_HS_FORK_PHASE, "", ""},
+ {WINED3D_SM5_OP_DERIV_RTX_COARSE, WINED3DSIH_DSX_COARSE, "f", "f"},
+ {WINED3D_SM5_OP_DERIV_RTX_FINE, WINED3DSIH_DSX_FINE, "f", "f"},
+ {WINED3D_SM5_OP_DERIV_RTY_COARSE, WINED3DSIH_DSY_COARSE, "f", "f"},
+ {WINED3D_SM5_OP_DERIV_RTY_FINE, WINED3DSIH_DSY_FINE, "f", "f"},
+ {WINED3D_SM5_OP_DCL_INPUT_CPOINT_COUNT, WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT, "", ""},
+ {WINED3D_SM5_OP_DCL_OUTPUT_CPOINT_COUNT, WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT, "", ""},
+ {WINED3D_SM5_OP_DCL_UAV_TYPED, WINED3DSIH_DCL_UAV_TYPED, "", ""},
+ {WINED3D_SM5_OP_DCL_RESOURCE_STRUCTURED, WINED3DSIH_DCL_RESOURCE_STRUCTURED, "", ""},
+ {WINED3D_SM5_OP_STORE_UAV_TYPED, WINED3DSIH_STORE_UAV_TYPED, "", "Uif"},
+ {WINED3D_SM5_OP_LD_STRUCTURED, WINED3DSIH_LD_STRUCTURED, "u", "uuR"},
};
static const enum wined3d_shader_register_type register_type_table[] =
@@ -1027,7 +1029,8 @@ static void shader_sm4_read_instruction(void *data, const DWORD **ptr, struct wi
ins->declaration.primitive_type = output_primitive_type_table[primitive_type];
}
}
- else if (opcode == WINED3D_SM5_OP_DCL_INPUT_CPOINT_COUNT)
+ else if (opcode == WINED3D_SM5_OP_DCL_INPUT_CPOINT_COUNT
+ || opcode == WINED3D_SM5_OP_DCL_OUTPUT_CPOINT_COUNT)
{
ins->declaration.count = (opcode_token & WINED3D_SM5_CPOINT_COUNT_MASK) >> WINED3D_SM5_CPOINT_COUNT_SHIFT;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 648287f..ed86e9d 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -522,6 +522,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER
WINED3DSIH_DCL_INPUT_SGV,
WINED3DSIH_DCL_INPUT_SIV,
WINED3DSIH_DCL_OUTPUT,
+ WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT,
WINED3DSIH_DCL_OUTPUT_SIV,
WINED3DSIH_DCL_OUTPUT_TOPOLOGY,
WINED3DSIH_DCL_RESOURCE_STRUCTURED,
--
2.4.10
More information about the wine-patches
mailing list