Mesa (mesa_7_4_branch): mesa: fix logic error in computing enableBits in update_texture_state()

Brian Paul brianp at kemper.freedesktop.org
Sat Feb 7 19:04:33 UTC 2009


Module: Mesa
Branch: mesa_7_4_branch
Commit: 7e8f2c56c00f93ad55842dc5e3b123a1fcf74b3c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e8f2c56c00f93ad55842dc5e3b123a1fcf74b3c

Author: Brian Paul <brianp at vmware.com>
Date:   Sat Feb  7 12:04:15 2009 -0700

mesa: fix logic error in computing enableBits in update_texture_state()

If we had a vertex shader but no fragment shader (i.e. fixed function) we
didn't get the right enabled texture targets.

Fixes blank/white texture problem.

(cherry picked from master, commit b46611633c5da6fa23ee17bce22939fe20ef194e)

---

 src/mesa/main/texstate.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 9bfb7e0..7b5d904 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -498,25 +498,27 @@ update_texture_state( GLcontext *ctx )
       texUnit->_ReallyEnabled = 0;
       texUnit->_GenFlags = 0;
 
-      /* Get the bitmask of texture enables.
+      /* Get the bitmask of texture target enables.
        * enableBits will be a mask of the TEXTURE_*_BIT flags indicating
        * which texture targets are enabled (fixed function) or referenced
        * by a fragment shader/program.  When multiple flags are set, we'll
        * settle on the one with highest priority (see texture_override below).
        */
-      if (fprog || vprog) {
-         enableBits = 0x0;
-         if (fprog)
-            enableBits |= fprog->Base.TexturesUsed[unit];
-         if (vprog)
-            enableBits |= vprog->Base.TexturesUsed[unit];
+      enableBits = 0x0;
+      if (vprog) {
+         enableBits |= vprog->Base.TexturesUsed[unit];
+      }
+      if (fprog) {
+         enableBits |= fprog->Base.TexturesUsed[unit];
       }
       else {
-         if (!texUnit->Enabled)
-            continue;
-         enableBits = texUnit->Enabled;
+         /* fixed-function fragment program */
+         enableBits |= texUnit->Enabled;
       }
 
+      if (enableBits == 0x0)
+         continue;
+
       ASSERT(texUnit->Current1D);
       ASSERT(texUnit->Current2D);
       ASSERT(texUnit->Current3D);




More information about the mesa-commit mailing list