fxInitPixelTables() change for Voodoo 1/2 vs 3
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 1 Dec 1999 01:22:20 +0000 (01:22 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 1 Dec 1999 01:22:20 +0000 (01:22 +0000)
src/mesa/drivers/glide/fxapi.c

index ca56188..cb4230a 100644 (file)
@@ -972,12 +972,27 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,
    }
 
    /* Pixel tables are use during pixel read-back */
+#if FXMESA_USE_ARGB 
+   fxInitPixelTables(GL_FALSE); /* Force RGB pixel order */    
+#else
    if (glbHWConfig.SSTs[glbCurrentBoard].type == GR_SSTTYPE_VOODOO) {
-      fxInitPixelTables(GL_TRUE); /* use BGR pixel order on Voodoo1/2 */
+      /* jk991130 - GROSS HACK!!! - Voodoo 3s don't use BGR!!
+       * the only way to tell if it's a Voodoo 3 at this stage of the
+       * ballgame (no Glide 3.x for linux *yet*) is to query the # of TMUs
+       * as Voodoo3s have 2 TMUs on board, Banshee has only 1
+       * Thanks to Joseph Kain for that one
+       */
+      if (glbHWConfig.SSTs[glbCurrentBoard].sstBoard.VoodooConfig.nTexelfx == 2) {
+         fxInitPixelTables(GL_FALSE); /* use RGB pixel order (Voodoo3) */
+      }
+      else {
+         fxInitPixelTables(GL_TRUE); /* use BGR pixel order on Voodoo1/2 */
+      }
    }
    else {
       fxInitPixelTables(GL_FALSE); /* use RGB pixel order otherwise */
    }
+#endif
 
    fxMesa->width=FX_grSstScreenWidth();
    fxMesa->height=FX_grSstScreenHeight();