Module: wine Branch: master Commit: 89245248c739273f2f2c2e09443a10bc1cdfcc29 URL: http://source.winehq.org/git/wine.git/?a=commit;h=89245248c739273f2f2c2e0944...
Author: H. Verbeet hverbeet@gmail.com Date: Thu May 3 21:01:09 2007 +0200
wined3d: Handle the ps_3_0 vPos field.
---
dlls/wined3d/baseshader.c | 8 ++++++++ dlls/wined3d/glsl_shader.c | 12 ++++++++++++ 2 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 2944663..8035abb 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 f6d55d1..9ff5378 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");