[10/10] wined3d: Handle the ps_3_0 vPos field
H. Verbeet
hverbeet at gmail.com
Thu May 3 14:01:09 CDT 2007
This should improve SM3.0 support a little.
Changelog:
- Handle the ps_3_0 vPos field
-------------- next part --------------
---
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");
More information about the wine-patches
mailing list