[1/19] WineD3D: Temporary disable nvrc junk texture skipping

Stefan Dösinger stefan at codeweavers.com
Tue Dec 19 15:37:37 CST 2006


Disabling this temporary makes the sampler and texture stage state move to the 
state table much easier and less regression-prone. I will reenable it with 
patch 19/19
-------------- next part --------------
From 0490769eaedcf3cb4021c78af4be341ddc0f0d6b Mon Sep 17 00:00:00 2001
From: Stefan Doesinger <stefan at codeweavers.com>
Date: Tue, 19 Dec 2006 00:19:43 +0100
Subject: [PATCH] WineD3D: Disable junk texture skipping

---
 dlls/wined3d/drawprim.c   |    8 +++---
 dlls/wined3d/stateblock.c |   65 ++++++++++++++++++++++-----------------------
 2 files changed, 36 insertions(+), 37 deletions(-)

diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c
index 6ac7462..88a3f90 100644
--- a/dlls/wined3d/drawprim.c
+++ b/dlls/wined3d/drawprim.c
@@ -1166,7 +1166,7 @@ #endif
             continue;
         }
 
-        if (!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]) {
+        if (/*!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]*/ TRUE) {
             /* Select the correct texture stage */
             GL_EXTCALL(glClientActiveTextureARB(GL_TEXTURE0_ARB + texture_idx));
         }
@@ -1204,7 +1204,7 @@ #endif
             glDisableClientState(GL_TEXTURE_COORD_ARRAY);
             GL_EXTCALL(glMultiTexCoord4fARB(GL_TEXTURE0_ARB + textureNo, 0, 0, 0, 1));
         }
-        if (!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]) ++texture_idx;
+        if (/*!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]*/ TRUE) ++texture_idx;
     }
     if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
         for (textureNo = texture_idx; textureNo < GL_LIMITS(textures); ++textureNo) {
@@ -1479,7 +1479,7 @@ static void drawStridedSlow(IWineD3DDevi
                     }
                 }
             }
-            if (!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]) ++texture_idx;
+            if (/*!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[textureNo]*/TRUE) ++texture_idx;
         } /* End of textures */
 
         /* Diffuse -------------------------------- */
@@ -1911,7 +1911,7 @@ static void drawPrimitiveUploadTextures(
         /* WINED3DTOP_DISABLE disables the current & any higher texture stages */
         if (This->stateBlock->textureState[i][WINED3DTSS_COLOROP] == WINED3DTOP_DISABLE) break;
 
-        if (!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[i]) {
+        if (/*!GL_SUPPORT(NV_REGISTER_COMBINERS) || This->stateBlock->textures[i]*/ TRUE) {
             texture_idx = current_sampler++;
 
             /* Active the texture unit corresponding to the current texture stage */
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 98904cc..e7e0f3a 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -1026,46 +1026,45 @@ static HRESULT  WINAPI IWineD3DStateBloc
        bound. We emulate this by creating dummy textures and binding them to each
        texture stage, but disable all stages by default. Hence if a stage is enabled
        then the default texture will kick in until replaced by a SetTexture call     */
-    if (!GL_SUPPORT(NV_REGISTER_COMBINERS)) {
-        ENTER_GL();
-
-        for (i = 0; i < GL_LIMITS(texture_stages); i++) {
-            GLubyte white = 255;
-
-            /* Note this avoids calling settexture, so pretend it has been called */
-            This->set.textures[i]     = TRUE;
-            This->changed.textures[i] = TRUE;
-            This->textures[i]         = NULL;
-
-            /* Make appropriate texture active */
-            if (GL_SUPPORT(ARB_MULTITEXTURE)) {
-                GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
-                checkGLcall("glActiveTextureARB");
-            } else if (i > 0) {
-                FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
-            }
+    ENTER_GL();
+
+    for (i = 0; i < GL_LIMITS(texture_stages); i++) {
+        GLubyte white = 255;
+
+        /* Note this avoids calling settexture, so pretend it has been called */
+        This->set.textures[i]     = TRUE;
+        This->changed.textures[i] = TRUE;
+        This->textures[i]         = NULL;
+
+        /* Make appropriate texture active */
+        if (GL_SUPPORT(ARB_MULTITEXTURE)) {
+            GL_EXTCALL(glActiveTextureARB(GL_TEXTURE0_ARB + i));
+            checkGLcall("glActiveTextureARB");
+        } else if (i > 0) {
+            FIXME("Program using multiple concurrent textures which this opengl implementation doesn't support\n");
+        }
 
-            /* Generate an opengl texture name */
-            glGenTextures(1, &ThisDevice->dummyTextureName[i]);
-            checkGLcall("glGenTextures");
-            TRACE("Dummy Texture %d given name %d\n", i, ThisDevice->dummyTextureName[i]);
+        /* Generate an opengl texture name */
+        glGenTextures(1, &ThisDevice->dummyTextureName[i]);
+        checkGLcall("glGenTextures");
+        TRACE("Dummy Texture %d given name %d\n", i, ThisDevice->dummyTextureName[i]);
 
-            /* Generate a dummy 1d texture */
-            This->textureDimensions[i] = GL_TEXTURE_1D;
-            glBindTexture(GL_TEXTURE_1D, ThisDevice->dummyTextureName[i]);
-            checkGLcall("glBindTexture");
+        /* Generate a dummy 1d texture */
+        This->textureDimensions[i] = GL_TEXTURE_1D;
+        glBindTexture(GL_TEXTURE_1D, ThisDevice->dummyTextureName[i]);
+        checkGLcall("glBindTexture");
 
-            glTexImage1D(GL_TEXTURE_1D, 0, GL_LUMINANCE, 1, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &white);
-            checkGLcall("glTexImage1D");
+        glTexImage1D(GL_TEXTURE_1D, 0, GL_LUMINANCE, 1, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &white);
+        checkGLcall("glTexImage1D");
 #if 1   /* TODO: move the setting texture states off to basetexture */
-            /* Reapply all the texture state information to this texture */
-            IWineD3DDevice_SetupTextureStates(device, i, i, REAPPLY_ALL);
+        /* Reapply all the texture state information to this texture */
+        IWineD3DDevice_SetupTextureStates(device, i, i, REAPPLY_ALL);
 #endif
-        }
-
-        LEAVE_GL();
     }
 
+    LEAVE_GL();
+
+
     /* Defaulting palettes - Note these are device wide but reinitialized here for convenience*/
     for (i = 0; i < MAX_PALETTES; ++i) {
       int j;
-- 
1.4.2.4



More information about the wine-patches mailing list