Fixed a bug in vertex emitter (untile we move to t_vertex.c)
authorDaniel Borca <dborca@users.sourceforge.net>
Mon, 14 Jun 2004 09:11:13 +0000 (09:11 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Mon, 14 Jun 2004 09:11:13 +0000 (09:11 +0000)
docs/README.3DFX
src/mesa/drivers/glide/fxvbtmp.h

index 69c16560eb9f2baf60b9af2700e95f673218f805..d9bf09604e92d22b64043030fbca40edc2c90cf0 100644 (file)
@@ -191,14 +191,14 @@ MESA_3DFX_STRING
        Desc: advertise "3dfx" substring in GL_RENDERER
        Note: used by some games aware by 3dfx hw limitations
 MESA_GLX_FX
-       OS: win32, linux
-       HW: selective
-       Desc: force display mode
-       Note: (!) experimental!
+       OS: linux
+       HW: Voodoo1, Rush, Voodoo2
+       Desc: display mode
+       Note: (!) experimental: "w" may work in Win32 using non-V1/V2 HW
        Value:
-           "w" - windowed mode (linux: V1/2/Rush, win32: all except V1/V2)
-           "f" - fullscreen mode (linux: V1/V2/Rush)
-           "d" - disable glide driver (linux: V1/V2/Rush)
+           "w" - windowed mode
+           "f" - fullscreen mode
+           "d" - disable glide driver
 
 
 
index ba6dd15acf70c15d5adadf67290da33f8921a9fa..c20d5fc3c4fa86fb479df59caea7ba766ad5f748 100644 (file)
@@ -43,7 +43,7 @@ static void TAG(emit)( GLcontext *ctx,
    GLfloat (*tc0)[4], (*tc1)[4];
    GLfloat (*col)[4], (*spec)[4];
    GLuint tc0_stride, tc1_stride, col_stride, spec_stride;
-   GLuint tc0_size, tc1_size;
+   GLuint tc0_size, tc1_size, col_size;
    GLfloat (*proj)[4] = VB->NdcPtr->data; 
    GLuint proj_stride = VB->NdcPtr->stride;
    GLfloat (*psize)[4];
@@ -80,6 +80,7 @@ static void TAG(emit)( GLcontext *ctx,
    if (IND & SETUP_RGBA) {
       col = VB->ColorPtr[0]->data;
       col_stride = VB->ColorPtr[0]->stride;
+      col_size = VB->ColorPtr[0]->size;
    }
 
    if (IND & SETUP_SPEC) {
@@ -138,7 +139,11 @@ static void TAG(emit)( GLcontext *ctx,
          UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[2], col[0][0]);
          UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[1], col[0][1]);
          UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[0], col[0][2]);
-         UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[3], col[0][3]);
+         if (col_size == 4) {
+            UNCLAMPED_FLOAT_TO_UBYTE(v->pargb[3], col[0][3]);
+         } else {
+            v->pargb[3] = 255;
+         }
         STRIDE_4F(col, col_stride);
       }
       if (IND & SETUP_SPEC) {