From 690d666de5fb263c9ecb3837a6fc4f9a1ece3001 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 6 May 2009 17:59:22 +0200 Subject: [PATCH] wined3d: Add support for immediate constants to shader_dump_register(). --- dlls/wined3d/baseshader.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 52dd4cbd61f..19bd0c3fa64 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -667,6 +667,7 @@ static void shader_dump_decl_usage(const struct wined3d_shader_semantic *semanti } static void shader_dump_register(WINED3DSHADER_PARAM_REGISTER_TYPE register_type, UINT register_idx, + enum wined3d_immconst_type immconst_type, const DWORD *immconst_data, const struct wined3d_shader_src_param *rel_addr, const struct wined3d_shader_version *shader_version) { static const char * const rastout_reg_names[] = {"oPos", "oFog", "oPts"}; @@ -747,12 +748,37 @@ static void shader_dump_register(WINED3DSHADER_PARAM_REGISTER_TYPE register_type TRACE("p"); break; + case WINED3DSPR_IMMCONST: + TRACE("l"); + break; + default: TRACE("unhandled_rtype(%#x)", register_type); break; } - if (register_type != WINED3DSPR_RASTOUT && register_type != WINED3DSPR_MISCTYPE) + if (register_type == WINED3DSPR_IMMCONST) + { + TRACE("("); + switch (immconst_type) + { + case WINED3D_IMMCONST_FLOAT: + TRACE("%.8e", *(float *)immconst_data); + break; + + case WINED3D_IMMCONST_FLOAT4: + TRACE("%.8e, %.8e, %.8e, %.8e", + *(float *)&immconst_data[0], *(float *)&immconst_data[1], + *(float *)&immconst_data[2], *(float *)&immconst_data[3]); + break; + + default: + TRACE("", immconst_type); + break; + } + TRACE(")"); + } + else if (register_type != WINED3DSPR_RASTOUT && register_type != WINED3DSPR_MISCTYPE) { if (rel_addr) { @@ -770,7 +796,7 @@ void shader_dump_dst_param(const struct wined3d_shader_dst_param *param, { DWORD write_mask = param->write_mask; - shader_dump_register(param->register_type, param->register_idx, param->rel_addr, shader_version); + shader_dump_register(param->register_type, param->register_idx, 0, NULL, param->rel_addr, shader_version); if (write_mask != WINED3DSP_WRITEMASK_ALL) { @@ -804,7 +830,8 @@ void shader_dump_src_param(const struct wined3d_shader_src_param *param, if (src_modifier == WINED3DSPSM_ABS || src_modifier == WINED3DSPSM_ABSNEG) TRACE("abs("); - shader_dump_register(param->register_type, param->register_idx, param->rel_addr, shader_version); + shader_dump_register(param->register_type, param->register_idx, + param->immconst_type, param->immconst_data, param->rel_addr, shader_version); if (src_modifier) {