Module: wine Branch: refs/heads/master Commit: c61af3af8da074620485998b7757c21cd0fb6b9a URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c61af3af8da074620485998b... Author: Ivan Gyurdiev <ivg2(a)cornell.edu> Date: Wed May 10 13:53:07 2006 -0400 wined3d: Share shader_dump_ins_modifiers(). Share shader_dump_ins_modifiers(), and make vertex shaders use it. The saturate modifer (_sat) is valid on vs_3_0+, and it isn't being shown in the trace. --- dlls/wined3d/baseshader.c | 25 +++++++++++++++++++++++++ dlls/wined3d/pixelshader.c | 29 ++--------------------------- dlls/wined3d/vertexshader.c | 5 ++++- dlls/wined3d/wined3d_private.h | 3 +++ 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 5c3b143..acc402b 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -395,4 +395,29 @@ void generate_base_shader( } +void shader_dump_ins_modifiers(const DWORD output) { + + DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT; + DWORD mmask = output & D3DSP_DSTMOD_MASK; + + switch (shift) { + case 0: break; + case 13: TRACE("_d8"); break; + case 14: TRACE("_d4"); break; + case 15: TRACE("_d2"); break; + case 1: TRACE("_x2"); break; + case 2: TRACE("_x4"); break; + case 3: TRACE("_x8"); break; + default: TRACE("_unhandled_shift(%ld)", shift); break; + } + + switch(mmask) { + case D3DSPDM_NONE: break; + case D3DSPDM_SATURATE: TRACE("_sat"); break; + case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break; + case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break; + default: TRACE("_unhandled_modifier(%#lx)", mmask); break; + } +} + /* TODO: Move other shared code here */ diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c index ff368dc..d43bea9 100644 --- a/dlls/wined3d/pixelshader.c +++ b/dlls/wined3d/pixelshader.c @@ -1370,31 +1370,6 @@ #if 1 /* if were using the data buffer o #endif } -inline static void pshader_program_dump_ins_modifiers(const DWORD output) { - - DWORD shift = (output & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT; - DWORD mmask = output & D3DSP_DSTMOD_MASK; - - switch (shift) { - case 0: break; - case 13: TRACE("_d8"); break; - case 14: TRACE("_d4"); break; - case 15: TRACE("_d2"); break; - case 1: TRACE("_x2"); break; - case 2: TRACE("_x4"); break; - case 3: TRACE("_x8"); break; - default: TRACE("_unhandled_shift(%ld)", shift); break; - } - - switch(mmask) { - case D3DSPDM_NONE: break; - case D3DSPDM_SATURATE: TRACE("_sat"); break; - case D3DSPDM_PARTIALPRECISION: TRACE("_pp"); break; - case D3DSPDM_MSAMPCENTROID: TRACE("_centroid"); break; - default: TRACE("_unhandled_modifier(%#lx)", mmask); break; - } -} - inline static void pshader_program_dump_ps_param(const DWORD param, int input) { static const char* rastout_reg_names[] = { "oC0", "oC1", "oC2", "oC3", "oDepth" }; static const char swizzle_reg_chars[] = "rgba"; @@ -1568,7 +1543,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S else TRACE("dcl"); - pshader_program_dump_ins_modifiers(param); + shader_dump_ins_modifiers(param); TRACE(" "); pshader_program_dump_ps_param(param, 0); pToken += 2; @@ -1594,7 +1569,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_S } else { TRACE("%s", curOpcode->name); if (curOpcode->num_params > 0) { - pshader_program_dump_ins_modifiers(*pToken); + shader_dump_ins_modifiers(*pToken); TRACE(" "); pshader_program_dump_ps_param(*pToken, 0); ++pToken; diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c index c527ceb..c578d38 100644 --- a/dlls/wined3d/vertexshader.c +++ b/dlls/wined3d/vertexshader.c @@ -1641,6 +1641,7 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_ parse_decl_usage(This, usage, param & D3DSP_REGNUM_MASK); shader_program_dump_decl_usage(usage, param); + shader_dump_ins_modifiers(param); TRACE(" "); vshader_program_dump_vs_param(param, 0); pToken += 2; @@ -1664,8 +1665,10 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_ ++pToken; ++len; } else { - TRACE("%s ", curOpcode->name); + TRACE("%s", curOpcode->name); if (curOpcode->num_params > 0) { + shader_dump_ins_modifiers(*pToken); + TRACE(" "); vshader_program_dump_vs_param(*pToken, 0); ++pToken; ++len; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 30cf91c..d978604 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1300,6 +1300,9 @@ extern void generate_base_shader( SHADER_BUFFER* buffer, CONST DWORD* pFunction); +extern void shader_dump_ins_modifiers( + const DWORD output); + inline static int shader_get_regtype(const DWORD param) { return (((param & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) | ((param & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2));