diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 294466330fb..8035abb0f40 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -519,6 +519,7 @@ void shader_dump_param( IWineD3DBaseShaderImpl* This = (IWineD3DBaseShaderImpl*) iface; static const char * const rastout_reg_names[] = { "oPos", "oFog", "oPts" }; + static const char * const misctype_reg_names[] = { "vPos", "vFace"}; char swizzle_reg_chars[4]; DWORD reg = param & WINED3DSP_REGNUM_MASK; @@ -611,6 +612,13 @@ void shader_dump_param( case WINED3DSPR_SAMPLER: TRACE("s%u", reg); break; + case WINED3DSPR_MISCTYPE: + if (reg > 1) { + FIXME("Unhandled misctype register %d\n", reg); + } else { + TRACE("%s", misctype_reg_names[reg]); + } + break; case WINED3DSPR_PREDICATE: TRACE("p%u", reg); break; diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index f6d55d13227..9ff5378b557 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -690,6 +690,18 @@ static void shader_glsl_get_register_name( else sprintf(tmpStr, "gl_TexCoord[%u]", reg); break; + case WINED3DSPR_MISCTYPE: + if (reg == 0) { + /* vPos */ + sprintf(tmpStr, "gl_FragCoord"); + } else { + /* gl_FrontFacing could be used for vFace, but note that + * gl_FrontFacing is a bool, while vFace is a float for + * which the sign determines front/back */ + FIXME("Unhandled misctype register %d\n", reg); + sprintf(tmpStr, "unrecognized_register"); + } + break; default: FIXME("Unhandled register name Type(%d)\n", regtype); sprintf(tmpStr, "unrecognized_register");