H. Verbeet : wined3d: Handle the ps_3_0 vPos field.

Alexandre Julliard julliard at wine.codeweavers.com
Fri May 4 07:11:13 CDT 2007


Module: wine
Branch: master
Commit: 89245248c739273f2f2c2e09443a10bc1cdfcc29
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=89245248c739273f2f2c2e09443a10bc1cdfcc29

Author: H. Verbeet <hverbeet at 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");




More information about the wine-cvs mailing list