[Xorg-commit] xc/lib/GL/mesa/src/drv/sis sis_alloc.c,1.1.4.1,1.1.4.2 sis_alloc.h,1.1,1.1.4.1 sis_clear.c,1.1.4.1,1.1.4.2 sis_common2.h,1.1,1.1.4.1 sis_context.c,1.1,1.1.4.1 sis_context.h,1.1,1.1.4.1 sis_dd.c,1.1,1.1.4.1 sis_dd.h,1.1,1.1.4.1 sis_debug.c,1.1.4.1,1.1.4.2 sis_debug.h,1.1,1.1.4.1 sis_fog.c,1.1.4.1,1.1.4.2 sis_lock.c,1.1,1.1.4.1 sis_lock.h,1.1.4.1,1.1.4.2 sis_reg.h,1.1.4.1,1.1.4.2 sis_screen.c,1.1,1.1.4.1 sis_screen.h,1.1,1.1.4.1 sis_span.c,1.1.4.1,1.1.4.2 sis_span.h,1.1,1.1.4.1 sis_state.c,1.1,1.1.4.1 sis_state.h,1.1,1.1.4.1 sis_stencil.c,1.1.4.1,1.1.4.2 sis_stencil.h,1.1,1.1.4.1 sis_tex.c,1.1,1.1.4.1 sis_tex.h,1.1,1.1.4.1 sis_texstate.c,1.1,1.1.4.1 sis_tris.c,1.1,1.1.4.1 sis_tris.h,1.1,1.1.4.1 sis_tritmp.h,1.1,1.1.4.1 sis_vb.c,1.1,1.1.4.1 sis_vb.h,1.1,1.1.4.1

Kaleb Keithley xorg-commit at pdx.freedesktop.org
Sat Dec 20 02:28:58 EET 2003


Committed by: kaleb

Update of /cvs/xorg/xc/lib/GL/mesa/src/drv/sis
In directory pdx:/home/kaleb/xorg/xc.XORG-CURRENT/lib/GL/mesa/src/drv/sis

Modified Files:
      Tag: XORG-CURRENT
	sis_alloc.c sis_alloc.h sis_clear.c sis_common2.h 
	sis_context.c sis_context.h sis_dd.c sis_dd.h sis_debug.c 
	sis_debug.h sis_fog.c sis_lock.c sis_lock.h sis_reg.h 
	sis_screen.c sis_screen.h sis_span.c sis_span.h sis_state.c 
	sis_state.h sis_stencil.c sis_stencil.h sis_tex.c sis_tex.h 
	sis_texstate.c sis_tris.c sis_tris.h sis_tritmp.h sis_vb.c 
	sis_vb.h 
Log Message:
merge XFree86 RC2 (4.3.99.902) from vendor branch

Index: sis_alloc.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_alloc.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_alloc.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_alloc.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.c,v 1.9 2003/11/06 18:37:55 tsi Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.c,v 1.10 2003/12/09 00:15:20 alanh Exp $ */
 
 /*
  * Authors:
@@ -32,13 +33,13 @@
  *   Eric Anholt <anholt at FreeBSD.org>
  */
 
-#include <assert.h>
-
 #include "sis_context.h"
 #include "sis_alloc.h"
 
 #include "sis_common.h"
 
+#include <unistd.h>
+
 #define Z_BUFFER_HW_ALIGNMENT 16
 #define Z_BUFFER_HW_PLUS (16 + 4)
 
@@ -46,15 +47,7 @@
 #define DRAW_BUFFER_HW_ALIGNMENT 16
 #define DRAW_BUFFER_HW_PLUS (16 + 4)
 
-#ifdef ROUNDUP
-#undef ROUNDUP
-#endif
-#define ROUNDUP(nbytes, pad) (((nbytes)+(pad-1))/(pad))
-
-#ifdef ALIGNMENT
-#undef ALIGNMENT
-#endif
-#define ALIGNMENT(value, align) (ROUNDUP((value),(align))*(align))
+#define ALIGNMENT(value, align) (((value) + (align) - 1) / (align) * (align))
 
 static int _total_video_memory_used = 0;
 static int _total_video_memory_count = 0;
@@ -172,12 +165,13 @@
 
    smesa->depthbuffer = (void *) addr;
    smesa->depthPitch = width2;
+   smesa->depthOffset = (unsigned long)addr - (unsigned long)smesa->FbBase;
 
    /* set pZClearPacket */
    memset( &smesa->zClearPacket, 0, sizeof(ENGPACKET) );
 
    smesa->zClearPacket.dwSrcPitch = (z_depth == 2) ? 0x80000000 : 0xf0000000;
-   smesa->zClearPacket.dwDestBaseAddr = (unsigned long)(addr -
+   smesa->zClearPacket.dwDestBaseAddr = (GLint)(addr -
       (unsigned long)smesa->FbBase);
    smesa->zClearPacket.wDestPitch = width2;
    smesa->zClearPacket.stdwDestPos.wY = 0;
@@ -225,7 +219,7 @@
    addr = (char *)ALIGNMENT( (unsigned long)addr, DRAW_BUFFER_HW_ALIGNMENT );
 
    smesa->backbuffer = addr;
-   smesa->backOffset = (unsigned long)(addr - (unsigned long)smesa->FbBase);
+   smesa->backOffset = (GLint)(addr - (unsigned long)smesa->FbBase);
    smesa->backPitch = width2 * depth;
 
    memset ( &smesa->cbClearPacket, 0, sizeof(ENGPACKET) );

Index: sis_alloc.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_alloc.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_alloc.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_alloc.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.h,v 1.1 2003/09/28 20:15:33 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_alloc.h,v 1.2 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_clear.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_clear.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_clear.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_clear.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_clear.c,v 1.7 2003/11/06 18:37:56 tsi Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_clear.c,v 1.8 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:
@@ -39,11 +40,9 @@
 #include "swrast/swrast.h"
 #include "mmath.h"
 
-#if 0
 static GLbitfield sis_3D_Clear( GLcontext * ctx, GLbitfield mask,
 				GLint x, GLint y, GLint width,
 				GLint height );
-#endif
 static void sis_clear_color_buffer( GLcontext *ctx, GLenum mask, GLint x,
 				    GLint y, GLint width, GLint height );
 static void sis_clear_z_stencil_buffer( GLcontext * ctx,
@@ -56,7 +55,7 @@
 		   GLubyte blue, GLubyte alpha )
 {
    /* XXX only RGB565 and ARGB8888 */
-   switch (GET_ColorFormat(smesa))
+   switch (smesa->colorFormat)
    {
    case DST_FORMAT_ARGB_8888:
       smesa->clearColorPattern = (alpha << 24) +
@@ -77,24 +76,18 @@
 {
    GLuint zPattern;
 
-   if (z <= 0.0f)
-      zPattern = 0x0;
-   else if (z >= 1.0f)
-      zPattern = 0xFFFFFFFF;
-   else
-      zPattern = doFPtoFixedNoRound( z, 32 );
-
    switch (smesa->zFormat)
    {
    case SiS_ZFORMAT_Z16:
-      zPattern = zPattern >> 16;
+      zPattern = FLOAT_TO_USHORT(z);
       zPattern |= zPattern << 16;
       break;
    case SiS_ZFORMAT_S8Z24:
-      zPattern = zPattern >> 8;
+      zPattern = FLOAT_TO_UINT(z) >> 8;
       zPattern |= stencil << 24;
       break;
    case SiS_ZFORMAT_Z32:
+      zPattern = FLOAT_TO_UINT(z);
       break;
    default:
       assert(0);
@@ -123,19 +116,26 @@
       width1 = width;            
       height1 = height;
    }
+   /* XXX: Scissoring */
 
    LOCK_HARDWARE();
 
-   /* The 3D_Clear code is broken and I've failed to fix it so far. */
-#if 0
-   if (( ctx->Visual.stencilBits &&
-       ((mask | GL_DEPTH_BUFFER_BIT) ^ (mask | GL_STENCIL_BUFFER_BIT)) ) ||
-       (*(GLint *)(ctx->Color.ColorMask) != 0xffffffff) )
+   /* Mask out any non-existent buffers */
+   if (ctx->Visual.depthBits == 0 || !ctx->Depth.Mask)
+      mask &= ~DD_DEPTH_BIT;
+   if (ctx->Visual.stencilBits == 0)
+      mask &= ~DD_STENCIL_BIT;
+
+   /* The 3d clear code is use for masked clears because I don't know how to do
+    * masked clears with the 2d functions.  3d isn't used in general because
+    * it's slower, even in the case of clearing multiple buffers
+    */
+   if ((smesa->current.hwDstMask != 0xffffffff &&
+      (mask & (DD_BACK_LEFT_BIT | DD_FRONT_LEFT_BIT)) != 0) ||
+      (ctx->Stencil.WriteMask[0] < 0xff && (mask & DD_STENCIL_BIT) != 0) )
    {
-      /* only Clear either depth or stencil buffer */ 
       mask = sis_3D_Clear( ctx, mask, x1, y1, width1, height1 );
    }
-#endif
 
    if ( mask & DD_FRONT_LEFT_BIT || mask & DD_BACK_LEFT_BIT) {
       sis_clear_color_buffer( ctx, mask, x1, y1, width1, height1 );
@@ -185,13 +185,6 @@
    sisUpdateZStencilPattern( smesa, ctx->Depth.Clear, s );
 }
 
-#define MAKE_CLEAR_COLOR_8888(cc)   \
-            ( (((GLint)(((GLubyte *)(cc))[3] * 255.0 + 0.5))<<24) | \
-              (((GLint)(((GLubyte *)(cc))[0] * 255.0 + 0.5))<<16) | \
-              (((GLint)(((GLubyte *)(cc))[1] * 255.0 + 0.5))<<8) | \
-               ((GLint)(((GLubyte *)(cc))[2] * 255.0 + 0.5)) )
-
-#if 0
 static GLbitfield
 sis_3D_Clear( GLcontext * ctx, GLbitfield mask,
 	      GLint x, GLint y, GLint width, GLint height )
@@ -200,97 +193,61 @@
 
    __GLSiSHardware *current = &smesa->current;
 
-#define RESETSTATE (GFLAG_ENABLESETTING | GFLAG_ENABLESETTING2 | \
-                    GFLAG_ZSETTING | GFLAG_DESTSETTING | \
-                    GFLAG_STENCILSETTING | GFLAG_CLIPPING)
-#define STEN_OP (SiS_SFAIL_REPLACE | SiS_SPASS_ZFAIL_REPLACE | \
-                 SiS_SPASS_ZPASS_REPLACE)
-
    float left, top, right, bottom, zClearVal;
-   GLint dwColor=0;
-   GLint bClrColor, bClrDepth, bClrStencil;
+   GLboolean bClrColor, bClrDepth, bClrStencil;
    GLint dwPrimitiveSet;
-   GLint dwEnable1, dwEnable2 = 0, dwDepthMask=0, dwSten1=0, dwSten2=0;
-
+   GLint dwEnable1 = 0, dwEnable2 = MASK_ColorMaskWriteEnable;
+   GLint dwDepthMask = 0, dwSten1 = 0, dwSten2 = 0;
+   GLint dirtyflags = GFLAG_ENABLESETTING | GFLAG_ENABLESETTING2 |
+      GFLAG_CLIPPING | GFLAG_DESTSETTING;
    int count;
    XF86DRIClipRectPtr pExtents;
 
-   bClrColor = 0;
-   bClrDepth = (mask & DD_DEPTH_BIT) && 
-               (ctx->Visual.depthBits);
-   bClrStencil = (mask & DD_STENCIL_BIT) && 
-                 (ctx->Visual.stencilBits);
+   bClrColor = (mask & (DD_BACK_LEFT_BIT | DD_FRONT_LEFT_BIT)) != 0;
+   bClrDepth = (mask & DD_DEPTH_BIT) != 0;
+   bClrStencil = (mask & DD_STENCIL_BIT) != 0;
 
-  /* update HW state */
-  /* TODO: if enclosing sis_Clear by sis_RenderStart and sis_RenderEnd is
-   * uniform, but it seems needless to do so
-   */
-   if (smesa->GlobalFlag)
+   if (smesa->GlobalFlag & GFLAG_RENDER_STATES)
       sis_update_render_state( smesa );
 
-   if (bClrColor)
-      dwColor = MAKE_CLEAR_COLOR_8888( ctx->Color.ClearColor );
-   else
-      dwEnable2 |= MASK_ColorMaskWriteEnable;
-
-   if (bClrDepth && bClrStencil) {
-      GLint wmask, smask;
-      GLstencil sten;
-
-      zClearVal = ctx->Depth.Clear;
-      sten = ctx->Stencil.Clear;
-      wmask = ctx->Stencil.WriteMask[0];
-      smask = 0xff;
-
+   if (bClrStencil) {
+      dwSten1 = STENCIL_FORMAT_8 | SiS_STENCIL_ALWAYS |
+         (ctx->Stencil.Clear << 8) | 0xff;
+      dwSten2 = SiS_SFAIL_REPLACE | SiS_SPASS_ZFAIL_REPLACE |
+         SiS_SPASS_ZPASS_REPLACE;
       dwEnable1 = MASK_ZWriteEnable | MASK_StencilTestEnable;
       dwEnable2 |= MASK_ZMaskWriteEnable;
-      dwDepthMask = ((wmask << 24) | 0x00ffffff);
-      dwSten1 = STENCIL_FORMAT_8 | (((GLint) sten << 8) | smask) |
-         SiS_STENCIL_ALWAYS;
-      dwSten2 = STEN_OP;
+      dwDepthMask |= ctx->Stencil.WriteMask[0] << 24;
    } else if (bClrDepth) {
-      zClearVal = ctx->Depth.Clear;
       dwEnable1 = MASK_ZWriteEnable;
       dwEnable2 |= MASK_ZMaskWriteEnable;
-      dwDepthMask = 0xffffff;
-   } else if (bClrStencil) {
-      GLint wmask, smask;
-      GLstencil sten;
-
-      sten = (GLstencil)ctx->Stencil.Clear;
-      wmask = (GLint)ctx->Stencil.WriteMask[0];
-      smask = 0xff;
-
-      zClearVal = 0;
-      dwEnable1 = MASK_ZWriteEnable | MASK_StencilTestEnable;
-      dwEnable2 |= MASK_ZMaskWriteEnable;
-      dwDepthMask = (wmask << 24) & 0xff000000;
-      dwSten1 = STENCIL_FORMAT_8 | (((GLint) sten << 8) | smask) |
-         SiS_STENCIL_ALWAYS;
-      dwSten2 = STEN_OP;
-   } else {
-      dwEnable2 &= ~MASK_ZMaskWriteEnable;
-      dwEnable1 = 0L;
-      zClearVal = 1;
    }
 
-   mWait3DCmdQueue (35);
+   if (bClrDepth) {
+      zClearVal = ctx->Depth.Clear;
+      if (ctx->Visual.depthBits != 32)
+         dwDepthMask |= 0x00ffffff;
+      else
+         dwDepthMask = 0xffffffff;
+   } else
+      zClearVal = 0.0;
+
+   mWait3DCmdQueue(9);
    MMIO(REG_3D_TEnable, dwEnable1);
    MMIO(REG_3D_TEnable2, dwEnable2);
-   if (bClrDepth | bClrStencil) {
-      MMIO(REG_3D_ZSet, current->hwZ);
-      MMIO(REG_3D_ZStWriteMask, dwDepthMask);
-      MMIO(REG_3D_ZAddress, current->hwOffsetZ);
+   if (bClrDepth || bClrStencil) {
+      MMIO(REG_3D_ZSet, (current->hwZ & ~MASK_ZTestMode) | SiS_Z_COMP_ALWAYS);
+      dirtyflags |= GFLAG_ZSETTING;
    }
    if (bClrColor) {
-      MMIO(REG_3D_DstSet, (current->hwDstSet & 0x00ffffff) | 0xc000000);
-      MMIO(REG_3D_DstAddress, current->hwOffsetDest);
+      MMIO(REG_3D_DstSet, (current->hwDstSet & ~MASK_ROP2) | LOP_COPY);
    } else {
       MMIO(REG_3D_DstAlphaWriteMask, 0L);
    }
    if (bClrStencil) {
       MMIO(REG_3D_StencilSet, dwSten1);
       MMIO(REG_3D_StencilSet2, dwSten2);
+      dirtyflags |= GFLAG_STENCILSETTING;
    }
 
    if (mask & DD_FRONT_LEFT_BIT) {
@@ -303,9 +260,9 @@
 
    while(count--) {
       left = x;
-      right = x + width - 1;
+      right = x + width;
       top = y;
-      bottom = y + height - 1;
+      bottom = y + height;
 
       if (pExtents != NULL) {
          GLuint x1, y1, x2, y2;
@@ -319,58 +276,58 @@
          right = (right > x2) ? x2 : right;
          top = (top > y1) ? top : y1;
          bottom = (bottom > y2) ? y2 : bottom;
+         pExtents++;
          if (left > right || top > bottom)
             continue;
-         pExtents++;
       }
 
-      MMIO(REG_3D_ClipTopBottom, ((GLint) top << 13) | (GLint) bottom);
-      MMIO(REG_3D_ClipLeftRight, ((GLint) left << 13) | (GLint) right);
+      mWait3DCmdQueue(20);
+
+      MMIO(REG_3D_ClipTopBottom, ((GLint)top << 13) | (GLint)bottom);
+      MMIO(REG_3D_ClipLeftRight, ((GLint)left << 13) | (GLint)right);
 
       /* the first triangle */
-      dwPrimitiveSet = (OP_3D_TRIANGLE_DRAW | OP_3D_FIRE_TSARGBc | 
-                        SHADE_FLAT_VertexC);
+      dwPrimitiveSet = OP_3D_TRIANGLE_DRAW | OP_3D_FIRE_TSARGBc | 
+                        SHADE_FLAT_VertexC;
       MMIO(REG_3D_PrimitiveSet, dwPrimitiveSet);
 
-      MMIO(REG_3D_TSZa, *(GLint *) & zClearVal);
-      MMIO(REG_3D_TSXa, *(GLint *) & right);
-      MMIO(REG_3D_TSYa, *(GLint *) & top);
-      MMIO(REG_3D_TSARGBa, dwColor);
+      MMIO(REG_3D_TSZa, *(GLint *) &zClearVal);
+      MMIO(REG_3D_TSXa, *(GLint *) &right);
+      MMIO(REG_3D_TSYa, *(GLint *) &top);
+      MMIO(REG_3D_TSARGBa, smesa->clearColorPattern);
 
-      MMIO(REG_3D_TSZb, *(GLint *) & zClearVal);
-      MMIO(REG_3D_TSXb, *(GLint *) & left);
-      MMIO(REG_3D_TSYb, *(GLint *) & top);
-      MMIO(REG_3D_TSARGBb, dwColor);
+      MMIO(REG_3D_TSZb, *(GLint *) &zClearVal);
+      MMIO(REG_3D_TSXb, *(GLint *) &left);
+      MMIO(REG_3D_TSYb, *(GLint *) &top);
+      MMIO(REG_3D_TSARGBb, smesa->clearColorPattern);
 
-      MMIO(REG_3D_TSZc, *(GLint *) & zClearVal);
-      MMIO(REG_3D_TSXc, *(GLint *) & left);
-      MMIO(REG_3D_TSYc, *(GLint *) & bottom);
-      MMIO(REG_3D_TSARGBc, dwColor);
+      MMIO(REG_3D_TSZc, *(GLint *) &zClearVal);
+      MMIO(REG_3D_TSXc, *(GLint *) &left);
+      MMIO(REG_3D_TSYc, *(GLint *) &bottom);
+      MMIO(REG_3D_TSARGBc, smesa->clearColorPattern);
 
       /* second triangle */
-      dwPrimitiveSet = (OP_3D_TRIANGLE_DRAW | OP_3D_FIRE_TSARGBb |
-                        SHADE_FLAT_VertexB);
+      dwPrimitiveSet = OP_3D_TRIANGLE_DRAW | OP_3D_FIRE_TSARGBb |
+                        SHADE_FLAT_VertexB;
       MMIO(REG_3D_PrimitiveSet, dwPrimitiveSet);
 
-      MMIO(REG_3D_TSZb, *(GLint *) & zClearVal);
-      MMIO(REG_3D_TSXb, *(GLint *) & right);
-      MMIO(REG_3D_TSYb, *(GLint *) & bottom);
-      MMIO(REG_3D_TSARGBb, dwColor);
-    }
+      MMIO(REG_3D_TSZb, *(GLint *) &zClearVal);
+      MMIO(REG_3D_TSXb, *(GLint *) &right);
+      MMIO(REG_3D_TSYb, *(GLint *) &bottom);
+      MMIO(REG_3D_TSARGBb, smesa->clearColorPattern);
+   }
 
-   mEndPrimitive ();
+   mEndPrimitive();
 
-   smesa->GlobalFlag |= RESETSTATE;
+   /* If DD_FRONT_LEFT_BIT is set, we've only cleared the front buffer so far */
+   if ((mask & DD_FRONT_LEFT_BIT) != 0 && (mask & DD_BACK_LEFT_BIT) != 0)
+      sis_3D_Clear( ctx, DD_BACK_LEFT_BIT, x, y, width, height );
 
-#undef RESETSTATE
-#undef STEN_OP
-  
-   /* 
-    * TODO: will mesa call several times if multiple draw buffer
-    */
-   return (mask & ~(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT));
+   smesa->GlobalFlag |= dirtyflags;
+
+   return mask & ~(DD_DEPTH_BIT | DD_STENCIL_BIT | DD_BACK_LEFT_BIT |
+      DD_FRONT_LEFT_BIT);
 }
-#endif
 
 static void
 sis_bitblt_clear_cmd( sisContextPtr smesa, ENGPACKET * pkt )
@@ -391,7 +348,7 @@
    }
 
    MMIO(REG_CMD0, *(GLint *) & pkt->stdwCmd);
-   MMIO(REG_QueueLen, -1);
+   MMIO(REG_CommandQueue, -1);
 }
 
 static void
@@ -401,7 +358,7 @@
    sisContextPtr smesa = SIS_CONTEXT(ctx);
 
    int count;
-   GLuint depth = GET_DEPTH (smesa);
+   GLuint depth = smesa->bytesPerPixel;
    XF86DRIClipRectPtr pExtents = NULL;
    GLint xx, yy;
    GLint x0, y0, width0, height0;
@@ -480,11 +437,6 @@
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
 
-   /* TODO: check write mask */
-
-   if ( smesa->depthbuffer == NULL )
-      return;
-
    /* TODO: consider alignment of width, height? */
    smesa->zClearPacket.stdwDestPos.wY = y;
    smesa->zClearPacket.stdwDestPos.wX = x;

Index: sis_common2.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_common2.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_common2.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_common2.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+IN NO EVENT SHALL SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR
 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_common2.h,v 1.2 2003/09/29 11:25:18 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_common2.h,v 1.3 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:
@@ -46,7 +47,6 @@
 
 #ifdef GLX_DIRECT_RENDERING
 # include <stdio.h>
-# include <unistd.h>
 # include <stdlib.h>
 # include <string.h>
 typedef struct _Box

Index: sis_context.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_context.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_context.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_context.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_context.c,v 1.2 2003/09/29 11:25:18 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_context.c,v 1.3 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:
@@ -69,41 +70,32 @@
 void
 WaitEngIdle (sisContextPtr smesa)
 {
-   GLubyte *IOBase = GET_IOBase (smesa);
-   GLbyte cEngineState;
+   GLuint engineState;
 
-   cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   while (((cEngineState & 0x80) == 0) ||
-	  ((cEngineState & 0x40) == 0) || ((cEngineState & 0x20) == 0))
-   {
-      cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   }
+   do {
+      engineState = MMIO_READ(REG_CommandQueue);
+   } while ((engineState & SiS_EngIdle) != SiS_EngIdle);
 }
 
 void
 Wait2DEngIdle (sisContextPtr smesa)
 {
-   GLubyte *IOBase = GET_IOBase (smesa);
-   GLbyte cEngineState;
+   GLuint engineState;
 
-   cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   while (!(cEngineState & 0x80))
-   {
-      cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   }
+   do {
+      engineState = MMIO_READ(REG_CommandQueue);
+   } while ((engineState & SiS_EngIdle2d) != SiS_EngIdle2d);
 }
 
 /* To be called from mWait3DCmdQueue.  Separate function for profiling
  * purposes, and speed doesn't matter because we're spinning anyway.
- * This function should use usleeps to release cpu probably, but I have yet
- * to see it get called.
  */
 void
 WaitingFor3dIdle(sisContextPtr smesa, int wLen)
 {
-   while ( *(smesa->CurrentQueueLenPtr) < wLen) {
+   while (*(smesa->CurrentQueueLenPtr) < wLen) {
       *(smesa->CurrentQueueLenPtr) =
-         (*(GLint *)(GET_IOBase(smesa) + REG_QueueLen) & MASK_QueueLen) - 20;
+         (MMIO_READ(REG_CommandQueue) & MASK_QueueLen) - 20;
    }
 }
 
@@ -218,6 +210,9 @@
    _tnl_CreateContext( ctx );
    _swsetup_CreateContext( ctx );
 
+   _swrast_allow_pixel_fog( ctx, GL_TRUE );
+   _swrast_allow_vertex_fog( ctx, GL_FALSE );
+
    sisDDInitStateFuncs( ctx );
    sisDDInitState( smesa );	/* Initializes smesa->zFormat, important */
    sisInitVB( ctx );
@@ -382,7 +377,7 @@
    __GLSiSHardware *prev = &smesa->prev;
 
    mWait3DCmdQueue (55);
-   if (smesa->clearTexCache) {
+   if (smesa->clearTexCache || (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS)) {
       MMIO(REG_3D_TEnable, prev->hwCapEnable | MASK_TextureCacheClear);
       MMIO(REG_3D_TEnable, prev->hwCapEnable);
       smesa->clearTexCache = GL_FALSE;
@@ -404,9 +399,6 @@
       MMIO(REG_3D_TextureBorderColor, prev->texture[0].hwTextureBorderColor);
 
    if (smesa->GlobalFlag & GFLAG_TEXTUREADDRESS) {
-      MMIO(REG_3D_TEnable, prev->hwCapEnable | MASK_TextureCacheClear);
-      MMIO(REG_3D_TEnable, prev->hwCapEnable);
-
       switch ((prev->texture[0].hwTextureSet & MASK_TextureLevel) >> 8)
       {
       case 11:
@@ -489,183 +481,18 @@
    /* texture environment */
    if (smesa->GlobalFlag & GFLAG_TEXTUREENV) {
       MMIO(REG_3D_TextureBlendFactor, prev->hwTexEnvColor);
-      MMIO(REG_3D_TextureColorBlendSet0, prev->hwTexBlendClr0);
+      MMIO(REG_3D_TextureColorBlendSet0, prev->hwTexBlendColor0);
       MMIO(REG_3D_TextureAlphaBlendSet0, prev->hwTexBlendAlpha0);
    }
    if (smesa->GlobalFlag & GFLAG_TEXTUREENV_1) {
       MMIO(REG_3D_TextureBlendFactor, prev->hwTexEnvColor);
-      MMIO(REG_3D_TextureColorBlendSet1, prev->hwTexBlendClr1);
+      MMIO(REG_3D_TextureColorBlendSet1, prev->hwTexBlendColor1);
       MMIO(REG_3D_TextureAlphaBlendSet1, prev->hwTexBlendAlpha1);
    }
 
    smesa->GlobalFlag &= ~GFLAG_TEXTURE_STATES;
 }
 
-/* Updates all state.
- * Called when the lock is taken and another context had the lock previously.
- */
-void
-sis_validate_all_state (sisContextPtr smesa)
-{
-   __GLSiSHardware *prev = &smesa->prev;
-
-   mEndPrimitive ();
-   mWait3DCmdQueue (40);
-
-   /* Enable Setting */
-   MMIO(REG_3D_TEnable, prev->hwCapEnable);
-   MMIO(REG_3D_TEnable2, prev->hwCapEnable2);
-
-   /* Z Setting */
-   /* if (prev->hwCapEnable & MASK_ZTestEnable) { */
-   MMIO(REG_3D_ZSet, prev->hwZ);
-   MMIO(REG_3D_ZStWriteMask, prev->hwZMask);
-   MMIO(REG_3D_ZAddress, prev->hwOffsetZ);
-   /* } */
-
-   /* Alpha Setting */
-   if (prev->hwCapEnable & MASK_AlphaTestEnable)
-      MMIO(REG_3D_AlphaSet, prev->hwAlpha);
-
-   /* Destination Setting */
-   MMIO(REG_3D_DstSet, prev->hwDstSet);
-   MMIO(REG_3D_DstAlphaWriteMask, prev->hwDstMask);
-   MMIO(REG_3D_DstAddress, prev->hwOffsetDest);
-
-   /* Line Setting */
-#if 0
-   if (prev->hwCapEnable2 & MASK_LinePatternEnable)
-      MMIO(REG_3D_LinePattern, prev->hwLinePattern);
-#endif
-
-   /* Fog Setting */
-   if (prev->hwCapEnable & MASK_FogEnable) {
-      MMIO(REG_3D_FogSet, prev->hwFog);
-      MMIO(REG_3D_FogInverseDistance, prev->hwFogInverse);
-      MMIO(REG_3D_FogFarDistance, prev->hwFogFar);
-      MMIO(REG_3D_FogFactorDensity, prev->hwFogDensity);
-   }
-
-   /* Stencil Setting */
-   if (prev->hwCapEnable & MASK_StencilTestEnable) {
-      MMIO(REG_3D_StencilSet, prev->hwStSetting);
-      MMIO(REG_3D_StencilSet2, prev->hwStSetting2);
-   }
-
-   /* Miscellaneous Setting */
-   if (prev->hwCapEnable & MASK_BlendEnable)
-      MMIO(REG_3D_DstBlendMode, prev->hwDstSrcBlend);
-
-   MMIO(REG_3D_ClipTopBottom, prev->clipTopBottom);
-   MMIO(REG_3D_ClipLeftRight, prev->clipLeftRight);
-
-   /* TODO */
-   /* Texture Setting */
-   /* if (prev->hwCapEnable & MASK_TextureEnable) */
-   {
-      MMIO(REG_3D_TEnable, prev->hwCapEnable | MASK_TextureCacheClear);
-
-      MMIO(REG_3D_TEnable, prev->hwCapEnable);
-
-      MMIO(REG_3D_TextureSet, prev->texture[0].hwTextureSet);
-      MMIO(REG_3D_TextureMip, prev->texture[0].hwTextureMip);
-      /*
-      MMIO(REG_3D_TextureTransparencyColorHigh, prev->texture[0].hwTextureClrHigh);
-      MMIO(REG_3D_TextureTransparencyColorLow, prev->texture[0].hwTextureClrLow);
-      */
-      MMIO(REG_3D_TextureBorderColor, prev->texture[0].hwTextureBorderColor);
-
-      switch ((prev->texture[0].hwTextureSet & MASK_TextureLevel) >> 8)
-      {
-      case 11:
-         MMIO(REG_3D_TextureAddress11, prev->texture[0].texOffset11);
-      case 10:
-         MMIO(REG_3D_TextureAddress10, prev->texture[0].texOffset10);
-         MMIO(REG_3D_TexturePitch10, prev->texture[0].texPitch10);
-      case 9:
-         MMIO(REG_3D_TextureAddress9, prev->texture[0].texOffset9);
-      case 8:
-         MMIO(REG_3D_TextureAddress8, prev->texture[0].texOffset8);
-         MMIO(REG_3D_TexturePitch8, prev->texture[0].texPitch89);
-      case 7:
-         MMIO(REG_3D_TextureAddress7, prev->texture[0].texOffset7);
-      case 6:
-         MMIO(REG_3D_TextureAddress6, prev->texture[0].texOffset6);
-         MMIO(REG_3D_TexturePitch6, prev->texture[0].texPitch67);
-      case 5:
-         MMIO(REG_3D_TextureAddress5, prev->texture[0].texOffset5);
-      case 4:
-         MMIO(REG_3D_TextureAddress4, prev->texture[0].texOffset4);
-         MMIO(REG_3D_TexturePitch4, prev->texture[0].texPitch45);
-      case 3:
-         MMIO(REG_3D_TextureAddress3, prev->texture[0].texOffset3);
-      case 2:
-         MMIO(REG_3D_TextureAddress2, prev->texture[0].texOffset2);
-         MMIO(REG_3D_TexturePitch2, prev->texture[0].texPitch23);
-      case 1:
-         MMIO(REG_3D_TextureAddress1, prev->texture[0].texOffset1);
-      case 0:
-         MMIO(REG_3D_TextureAddress0, prev->texture[0].texOffset0);
-         MMIO(REG_3D_TexturePitch0, prev->texture[0].texPitch01);
-      }
-
-      /* TODO */
-      /* if (smesa->ctx->Texture.Unit[1].ReallyEnabled) */
-      {
-         MMIO(REG_3D_Texture1Set, prev->texture[1].hwTextureSet);
-         MMIO(REG_3D_Texture1Mip, prev->texture[1].hwTextureMip);
-         /*
-         MMIO(REG_3D_Texture1TransparencyColorHigh, prev->texture[1].hwTextureClrHigh);
-         MMIO(REG_3D_Texture1TransparencyColorLow, prev->texture[1].hwTextureClrLow);
-         */
-         MMIO(REG_3D_Texture1BorderColor, prev->texture[1].hwTextureBorderColor);
-
-         switch ((prev->texture[1].hwTextureSet & MASK_TextureLevel) >> 8)
-         {
-         case 11:			
-            MMIO(REG_3D_Texture1Address11, prev->texture[1].texOffset11);
-         case 10:			
-            MMIO(REG_3D_Texture1Address10, prev->texture[1].texOffset10);
-            MMIO(REG_3D_Texture1Pitch10, prev->texture[1].texPitch10);
-         case 9:			
-            MMIO(REG_3D_Texture1Address9, prev->texture[1].texOffset9);
-         case 8:			
-            MMIO(REG_3D_Texture1Address8, prev->texture[1].texOffset8);
-            MMIO(REG_3D_Texture1Pitch8, prev->texture[1].texPitch89);
-         case 7:			
-            MMIO(REG_3D_Texture1Address7, prev->texture[1].texOffset7);
-         case 6:			
-            MMIO(REG_3D_Texture1Address6, prev->texture[1].texOffset6);
-            MMIO(REG_3D_Texture1Pitch6, prev->texture[1].texPitch67);
-         case 5:			
-            MMIO(REG_3D_Texture1Address5, prev->texture[1].texOffset5);
-         case 4:			
-            MMIO(REG_3D_Texture1Address4, prev->texture[1].texOffset4);
-            MMIO(REG_3D_Texture1Pitch4, prev->texture[1].texPitch45);
-         case 3:			
-            MMIO(REG_3D_Texture1Address3, prev->texture[1].texOffset3);
-         case 2:			
-            MMIO(REG_3D_Texture1Address2, prev->texture[1].texOffset2);
-            MMIO(REG_3D_Texture1Pitch2, prev->texture[1].texPitch23);
-         case 1:			
-            MMIO(REG_3D_Texture1Address1, prev->texture[1].texOffset1);
-         case 0:			
-            MMIO(REG_3D_Texture1Address0, prev->texture[1].texOffset0);
-            MMIO(REG_3D_Texture1Pitch0, prev->texture[1].texPitch01);
-         }
-      }
-
-      /* texture environment */
-      MMIO(REG_3D_TextureBlendFactor, prev->hwTexEnvColor);
-      MMIO(REG_3D_TextureColorBlendSet0, prev->hwTexBlendClr0);
-      MMIO(REG_3D_TextureColorBlendSet1, prev->hwTexBlendClr1);
-      MMIO(REG_3D_TextureAlphaBlendSet0, prev->hwTexBlendAlpha0);
-      MMIO(REG_3D_TextureAlphaBlendSet1, prev->hwTexBlendAlpha1);
-   }
-
-   smesa->GlobalFlag = 0;
-}
-
 void
 sis_fatal_error (void)
 {

Index: sis_context.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_context.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_context.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_context.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_context.h,v 1.2 2003/09/29 11:25:18 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_context.h,v 1.3 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:
@@ -55,8 +56,12 @@
 /* Flags for software fallback cases:
  */
 #define SIS_FALLBACK_TEXTURE		0x0001
-#define SIS_FALLBACK_DRAW_BUFFER	0x0002
-#define SIS_FALLBACK_STENCIL		0x0004
+#define SIS_FALLBACK_TEXTURE0		0x0002
+#define SIS_FALLBACK_TEXTURE1		0x0004
+#define SIS_FALLBACK_TEXENV0		0x0008
+#define SIS_FALLBACK_TEXENV1		0x0010
+#define SIS_FALLBACK_DRAW_BUFFER	0x0020
+#define SIS_FALLBACK_STENCIL		0x0040
 #define SIS_FALLBACK_FORCE		0x8000
 
 /* Flags for hardware state that needs to be updated */
@@ -194,8 +199,8 @@
 
   GLint hwTexEnvColor;		/* Texture Blending Setting */
 
-  GLint hwTexBlendClr0;
-  GLint hwTexBlendClr1;
+  GLint hwTexBlendColor0;
+  GLint hwTexBlendColor1;
   GLint hwTexBlendAlpha0;
   GLint hwTexBlendAlpha1;
 
@@ -335,6 +340,7 @@
   unsigned int backOffset;
   unsigned int backPitch;
   GLvoid *depthbuffer;
+  unsigned int depthOffset;
   unsigned int depthPitch;
   void *zbFree, *bbFree;		/* Cookies for freeing buffers */
   ENGPACKET zClearPacket, cbClearPacket;
@@ -357,25 +363,14 @@
 
   sisScreenPtr sisScreen;		/* Screen private DRI data */
   SISSAREAPrivPtr sarea;		/* Private SAREA data */
+
 };
 
 #define SIS_CONTEXT(ctx)		((sisContextPtr)(ctx->DriverCtx))
 
 /* Macros */
 #define GET_IOBase(x) ((x)->IOBase)
-#define GET_FbBase(x) ((x)->FbBase)
-#define GET_AGPBase(x) ((x)->AGPBase)
-#define GET_DEPTH(x) ((x)->bytesPerPixel)
-#define GET_WIDTH(x) ((x)->displayWidth)
-#define GET_FbPos(smesa,x,y) (GET_FbBase(smesa)+(x)*GET_DEPTH(smesa)\
-                             +(y)*smesa->frontPitch)
 
-#define GET_ColorFormat(x) ((x)->colorFormat)
-
-#define GET_RMASK(x) ((x)->redMask)
-#define GET_GMASK(x) ((x)->greenMask)
-#define GET_BMASK(x) ((x)->blueMask)
-#define GET_AMASK(x) ((x)->alphaMask)
 #define Y_FLIP(Y)  (smesa->bottom - (Y))
 
 #define SISPACKCOLOR565( r, g, b )					\
@@ -406,7 +401,7 @@
 /* Update the mirrored queue pointer if it doesn't indicate enough space */ \
 if (*(smesa->CurrentQueueLenPtr) < (wLen)) {				\
    *(smesa->CurrentQueueLenPtr) =					\
-      (*(GLint *)(GET_IOBase(smesa) + REG_QueueLen) & MASK_QueueLen) - 20; \
+      (*(GLint *)(GET_IOBase(smesa) + REG_CommandQueue) & MASK_QueueLen) - 20; \
    /* Spin and wait if the queue is actually too full */		\
    if (*(smesa->CurrentQueueLenPtr) < (wLen))				\
       WaitingFor3dIdle(smesa, wLen);					\
@@ -436,7 +431,6 @@
 /* update to hw */
 extern void sis_update_texture_state( sisContextPtr smesa );
 extern void sis_update_render_state( sisContextPtr smesa );
-extern void sis_validate_all_state( sisContextPtr smesa );
 
 void sis_fatal_error (void);
 

Index: sis_dd.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_dd.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_dd.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_dd.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_dd.c,v 1.2 2003/11/18 02:58:44 tsi Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_dd.c,v 1.3 2003/12/09 00:15:21 alanh Exp $ */
 
 /*
  * Authors:
@@ -151,8 +152,7 @@
 
    current->hwZ &= ~MASK_ZBufferPitch;
    current->hwZ |= smesa->width * z_depth >> 2;
-   current->hwOffsetZ = ( (unsigned long)smesa->depthbuffer -
-			  (unsigned long)GET_FbBase(smesa) ) >> 2;
+   current->hwOffsetZ = smesa->depthOffset >> 2;
 
    if ((current->hwOffsetZ != prev->hwOffsetZ) || (current->hwZ != prev->hwZ)) {
       prev->hwOffsetZ = current->hwOffsetZ;

Index: sis_dd.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_dd.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_dd.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_dd.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_dd.h,v 1.1 2003/09/28 20:15:33 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_dd.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_debug.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_debug.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_debug.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_debug.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+IN NO EVENT SHALL SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR
 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_debug.c,v 1.6 2003/09/28 20:15:33 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_debug.c,v 1.7 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_debug.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_debug.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_debug.h	14 Nov 2003 16:48:46 -0000	1.1
+++ sis_debug.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+IN NO EVENT SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR
 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_debug.h,v 1.3 2000/09/26 15:56:48 tsi Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_debug.h,v 1.4 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_fog.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_fog.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_fog.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_fog.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_fog.c,v 1.4 2003/09/28 20:15:33 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_fog.c,v 1.5 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -44,6 +45,7 @@
 sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
+   __GLSiSHardware *prev = &smesa->prev;
    __GLSiSHardware *current = &smesa->current;
 
    float fArg;
@@ -57,29 +59,25 @@
       {
       case GL_LINEAR:
          current->hwFog |= FOGMODE_LINEAR;
-         _swrast_allow_pixel_fog( ctx, GL_TRUE );
-         _swrast_allow_vertex_fog( ctx, GL_FALSE );
          break;
       case GL_EXP:
-         if (ctx->Hint.Fog == GL_NICEST || smesa->AGPCmdModeEnabled) {
-            current->hwFog |= FOGMODE_EXP;
-            _swrast_allow_pixel_fog( ctx, GL_TRUE );
-            _swrast_allow_vertex_fog( ctx, GL_FALSE );
-         } else { /* GL_DONTCARE or GL_FASTEST */
-            current->hwFog |= FOGMODE_CHEAP;
-            _swrast_allow_pixel_fog( ctx, GL_FALSE );
-            _swrast_allow_vertex_fog( ctx, GL_TRUE );
-         }
+         current->hwFog |= FOGMODE_EXP;
          break;
       case GL_EXP2:
          current->hwFog |= FOGMODE_EXP2;
-         _swrast_allow_pixel_fog( ctx, GL_TRUE );
-         _swrast_allow_vertex_fog( ctx, GL_FALSE );
          break;
       }
+      if (current->hwFog != prev->hwFog) {
+         prev->hwFog = current->hwFog;
+         smesa->GlobalFlag |= GFLAG_FOGSETTING;
+      }
       break;
    case GL_FOG_DENSITY:
       current->hwFogDensity = convertFtToFogFt( ctx->Fog.Density );
+      if (current->hwFogDensity != prev->hwFogDensity) {
+         prev->hwFogDensity = current->hwFogDensity;
+         smesa->GlobalFlag |= GFLAG_FOGSETTING;
+      }
       break;
    case GL_FOG_START:
    case GL_FOG_END:
@@ -92,6 +90,13 @@
          else
             current->hwFogFar = doFPtoFixedNoRound( ctx->Fog.End, 6 );
       }
+      if (current->hwFogFar != prev->hwFogFar ||
+          current->hwFogInverse != prev->hwFogInverse)
+      {
+         prev->hwFogFar = current->hwFogFar;
+         prev->hwFogInverse = current->hwFogInverse;
+         smesa->GlobalFlag |= GFLAG_FOGSETTING;
+      }
       break;
    case GL_FOG_INDEX:
       /* TODO */
@@ -102,6 +107,10 @@
       fogColor |= FLOAT_TO_UBYTE( ctx->Fog.Color[2] );
       current->hwFog &= 0xff000000;
       current->hwFog |= fogColor;
+      if (current->hwFog != prev->hwFog) {
+          prev->hwFog = current->hwFog;
+         smesa->GlobalFlag |= GFLAG_FOGSETTING;
+      }
       break;
    }
 }

Index: sis_lock.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_lock.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_lock.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_lock.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_lock.c,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_lock.c,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 

Index: sis_lock.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_lock.h,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_lock.h	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_lock.h	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_lock.h,v 1.4 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_lock.h,v 1.5 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_reg.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_reg.h,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_reg.h	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_reg.h	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -1,6 +1,7 @@
 /**************************************************************************
 
 Copyright 2000 Silicon Integrated Systems Corp, Inc., HsinChu, Taiwan.
+Copyright 2003 Eric Anholt
 All Rights Reserved.
 
 Permission is hereby granted, free of charge, to any person obtaining a
@@ -15,16 +16,17 @@
 next paragraph) shall be included in all copies or substantial portions
 of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_reg.h,v 1.4 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_reg.h,v 1.5 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -39,7 +41,7 @@
  * Define All the Register Address of 6327
  */
 
-#define REG_QueueLen			0x8240
+#define REG_CommandQueue		0x8240
  
 #define REG_3D_TSFSa                    0x8800
 #define REG_3D_TSZa                     0x8804
@@ -217,7 +219,7 @@
 #define REG_3D_TexturePalette                  0x8C00
 
 /*
- * REG_QueueLen -- (8240h-8243h)
+ * REG_CommandQueue -- (8240h-8243h)
  */
 #define MASK_QueueLen				0x0000ffff
 #define SiS_EngIdle2d				0x80000000
@@ -528,17 +530,17 @@
 #define FOGMODE_EXP2			0x07000000
 
 /*
- * REG_3D_FogStartEnd -- Define Fog Start End Setting (8A34h-8A37h)
+ * REG_3D_FogStartEnd -- Define Fog Start End Setting	(0x8A34 - 0x8A37)
  */
 #define MASK_FogFarDistance		0x0007FFFF
 
 /*
- * REG_3D_FogStartEnd -- Define Fog End Setting (8A38h-8A3Bh)
+ * REG_3D_FogStartEnd -- Define Fog End Setting		(0x8A38 - 0x8A3B)
  */
 #define MASK_FogInvFarDistance		0x0007FFFF
 
 /*
- * REG_3D_FogStartEnd -- Define Fog End Setting	(0x8A3C - 0x8A3F)
+ * REG_3D_FogFactorDensity		(0x8A3C - 0x8A3F)
  */
 #define MASK_FogDensity                 0x0003FFFF
 #define MASK_FogFactor                  0xFF000000
@@ -804,97 +806,27 @@
  * REG_3D_TextureAlphaBlendSet0		(0x8B40 - 0x8B43)
  * REG_3D_TextureAlphaBlendSet1		(0x8B44 - 0x8B46)
  */
+#define STAGE0_C_CF			0xa1485000
+#define STAGE0_C_CS			0xc1485000
+#define STAGE0_C_CFCS			0xa1705000
+#define STAGE0_C_CFOMAS_CSAS		0xc534c001
+#define STAGE0_C_CFOMCS_CCCS		0x4530c001
 
-#define A_REPLACE_RGB_STAGE0		0xa1485000
-#define A_REPLACE_A_STAGE0		0xc3230000
-#define L_REPLACE__RGB_STAGE0		0xc1485000
-#define L_REPLACE__A_STAGE0		0x63230000
-#define LA_REPLACE__RGB_STAGE0		0xc1485000
-#define LA_REPLACE__A_STAGE0		0xc3230000
-#define I_REPLACE__RGB_STAGE0		0xc1485000
-#define I_REPLACE__A_STAGE0		0xc3230000
-#define RGB_REPLACE__RGB_STAGE0		0xc1485000
-#define RGB_REPLACE__A_STAGE0		0x63230000
-#define RGBA_REPLACE__RGB_STAGE0	0xc1485000
-#define RGBA_REPLACE__A_STAGE0		0xc3230000
-
-#define A_MODULATE_RGB_STAGE0		0xa1485000
-#define A_MODULATE_A_STAGE0		0x63c30000
-#define L_MODULATE__RGB_STAGE0		0xa1705000
-#define L_MODULATE__A_STAGE0		0x63230000
-#define LA_MODULATE__RGB_STAGE0		0xa1705000
-#define LA_MODULATE__A_STAGE0		0x63c30000
-#define I_MODULATE__RGB_STAGE0		0xa1705000
-#define I_MODULATE__A_STAGE0		0x63c30000
-#define RGB_MODULATE__RGB_STAGE0	0xa1705000
-#define RGB_MODULATE__A_STAGE0		0x63230000
-#define RGBA_MODULATE__RGB_STAGE0	0xa1705000
-#define RGBA_MODULATE__A_STAGE0		0x63c30000
-
-#define RGB_DECAL__RGB_STAGE0		0xc1485000
-#define RGB_DECAL__A_STAGE0		0x63230000
-#define RGBA_DECAL__RGB_STAGE0		0xc534c001
-#define RGBA_DECAL__A_STAGE0		0x63230000
-
-#define A_BLEND_RGB_STAGE0		0xa1485000
-#define A_BLEND_A_STAGE0		0x63c30000
-#define L_BLEND__RGB_STAGE0		0x4530c001
-#define L_BLEND__A_STAGE0		0x63230000
-#define LA_BLEND__RGB_STAGE0		0x4530c001
-#define LA_BLEND__A_STAGE0		0x63c30000
-#define I_BLEND__RGB_STAGE0		0x4530c001
-#define I_BLEND__A_STAGE0		0x46c60001
-#define RGB_BLEND__RGB_STAGE0		0x4530c001
-#define RGB_BLEND__A_STAGE0		0x63230000
-#define RGBA_BLEND__RGB_STAGE0		0x4530c001
-#define RGBA_BLEND__A_STAGE0		0x63c30000
-
-#define RGB_STAGE1			0xa1485000
-#define A_STAGE1			0xa3230000
-
-#define A_REPLACE_RGB_STAGE1		0xa1485000
-#define A_REPLACE_A_STAGE1		0xe3230000
-#define L_REPLACE__RGB_STAGE1		0xe1485000
-#define L_REPLACE__A_STAGE1		0xa3230000
-#define LA_REPLACE__RGB_STAGE1		0xe1485000
-#define LA_REPLACE__A_STAGE1		0xe3230000
-#define I_REPLACE__RGB_STAGE1		0xe1485000
-#define I_REPLACE__A_STAGE1		0xe3230000
-#define RGB_REPLACE__RGB_STAGE1		0xe1485000
-#define RGB_REPLACE__A_STAGE1		0xa3230000
-#define RGBA_REPLACE__RGB_STAGE1	0xe1485000
-#define RGBA_REPLACE__A_STAGE1		0xe3230000
-
-#define A_MODULATE_RGB_STAGE1		0xa1485000
-#define A_MODULATE_A_STAGE1		0xa3e30000
-#define L_MODULATE__RGB_STAGE1		0xa1785000
-#define L_MODULATE__A_STAGE1		0xa3230000
-#define LA_MODULATE__RGB_STAGE1		0xa1785000
-#define LA_MODULATE__A_STAGE1		0xa3e30000
-#define I_MODULATE__RGB_STAGE1		0xa1785000
-#define I_MODULATE__A_STAGE1		0xa3e30000
-#define RGB_MODULATE__RGB_STAGE1	0xa1785000
-#define RGB_MODULATE__A_STAGE1		0xa3230000
-#define RGBA_MODULATE__RGB_STAGE1	0xa1785000
-#define RGBA_MODULATE__A_STAGE1		0xa3e30000
+#define STAGE0_A_AF			0x63230000
+#define STAGE0_A_AS			0xc3230000
+#define STAGE0_A_AFAS			0x63c30000
+#define STAGE0_A_AFOMAS_ACAS		0x46c60001
 
-#define RGB_DECAL__RGB_STAGE1		0xe1485000
-#define RGB_DECAL__A_STAGE1		0xa3230000
-#define RGBA_DECAL__RGB_STAGE1		0xe5394001
-#define RGBA_DECAL__A_STAGE1		0xa3230000
+#define STAGE1_C_CF			0xa1485000
+#define STAGE1_C_CS			0xe1485000
+#define STAGE1_C_CFCS			0xa1785000
+#define STAGE1_C_CFOMAS_CSAS		0xe5394001
+#define STAGE1_C_CFOMCS_CCCS		0x45394001
 
-#define A_BLEND_RGB_STAGE1		0xa1485000
-#define A_BLEND_A_STAGE1		0xa3e30000
-#define L_BLEND__RGB_STAGE1		0x45394001
-#define L_BLEND__A_STAGE1		0xa3230000
-#define LA_BLEND__RGB_STAGE1		0x45394001
-#define LA_BLEND__A_STAGE1		0xa3e30000
-#define I_BLEND__RGB_STAGE1		0x45394001
-#define I_BLEND__A_STAGE1		0x4aea0001
-#define RGB_BLEND__RGB_STAGE1		0x45394001
-#define RGB_BLEND__A_STAGE1		0xa3230000
-#define RGBA_BLEND__RGB_STAGE1		0x45394001
-#define RGBA_BLEND__A_STAGE1		0xa3e30000
+#define STAGE1_A_AF			0xa3230000
+#define STAGE1_A_AS			0xe3230000
+#define STAGE1_A_AFAS			0xa3e30000
+#define STAGE1_A_AFOMAS_ACAS		0x4aea0001
 
 /* What registers are these associated with? */
 #define MASK_BMMemoryInSystem           0x00000080

Index: sis_screen.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_screen.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_screen.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_screen.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_screen.c,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_screen.c,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 
@@ -150,7 +150,7 @@
       *lpdwDest++ = *lpdwSrc++;
 
    MMIO(REG_CMD0, *(GLint *)&pkt->stdwCmd);
-   MMIO(REG_QueueLen, -1);
+   MMIO(REG_CommandQueue, -1);
 }
 
 static void sisCopyBuffer( __DRIdrawablePrivate *dPriv )
@@ -160,7 +160,7 @@
    ENGPACKET stEngPacket;
   
    while ((*smesa->FrameCountPtr) - MMIO_READ(0x8a2c) > SIS_MAX_FRAME_LENGTH)
-      usleep(1);
+      ;
 
    LOCK_HARDWARE();
 

Index: sis_screen.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_screen.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_screen.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_screen.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_screen.h,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_screen.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_span.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_span.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_span.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_span.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_span.c,v 1.6 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_span.c,v 1.7 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -39,11 +40,6 @@
 
 #define DBG 0
 
-/* from mga */
-/* TODO: should lock drawable in these routines because glBitmap will
- *       call this function without locking, or modify sis_Bitmap
- */
-
 #define LOCAL_VARS							\
    sisContextPtr smesa = SIS_CONTEXT(ctx);				\
    char *buf = (char *)(smesa->FbBase + smesa->drawOffset);		\

Index: sis_span.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_span.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_span.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_span.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_span.h,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_span.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_state.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_state.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_state.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_state.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_state.c,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_state.c,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -366,10 +367,10 @@
       current->hwCapEnable2 |= (MASK_AlphaMaskWriteEnable |
                              MASK_ColorMaskWriteEnable);
 
-      current->hwDstMask = (r) ? GET_RMASK(smesa) : 0 |
-			   (g) ? GET_GMASK(smesa) : 0 |
-			   (b) ? GET_BMASK(smesa) : 0 |
-			   (a) ? GET_AMASK(smesa) : 0;
+      current->hwDstMask = (r) ? smesa->redMask : 0 |
+			   (g) ? smesa->greenMask : 0 |
+			   (b) ? smesa->blueMask : 0 |
+			   (a) ? smesa->alphaMask : 0;
    }
    
    if (current->hwDstMask != prev->hwDstMask) {
@@ -542,19 +543,6 @@
    }
 }
 
-static void
-sisDDHint( GLcontext *ctx, GLenum target, GLenum mode )
-{
-   
-   switch (target) {
-   case GL_FOG_HINT:
-      /* Update fog mode setting */
-      sisDDFogfv(ctx, GL_FOG_MODE, NULL);
-      break;
-   }
-   
-}
-
 /* =============================================================
  * Polygon stipple
  */
@@ -582,10 +570,6 @@
       else
          current->hwCapEnable &= ~MASK_AlphaTestEnable;
       break;
-/*
-      case GL_AUTO_NORMAL:
-         break;
-*/
    case GL_BLEND:
       /* TODO: */
       if (state)
@@ -594,17 +578,6 @@
       else
          current->hwCapEnable &= ~MASK_BlendEnable;
       break;
-/*
-    case GL_CLIP_PLANE0:
-    case GL_CLIP_PLANE1:
-    case GL_CLIP_PLANE2:
-    case GL_CLIP_PLANE3:
-    case GL_CLIP_PLANE4:
-    case GL_CLIP_PLANE5:
-      break;
-    case GL_COLOR_MATERIAL:
-      break;
-*/
    case GL_CULL_FACE:
       if (state)
          current->hwCapEnable |= MASK_CullEnable;
@@ -630,93 +603,15 @@
       else
          current->hwCapEnable &= ~MASK_FogEnable;
       break;
-/*
-    case GL_LIGHT0:
-    case GL_LIGHT1:
-    case GL_LIGHT2:
-    case GL_LIGHT3:
-    case GL_LIGHT4:
-    case GL_LIGHT5:
-    case GL_LIGHT6:
-    case GL_LIGHT7:
-      break;
-    case GL_LIGHTING:
-      break;
-    case GL_LINE_SMOOTH:
-      break;
-    case GL_LINE_STIPPLE:
-      break;
-    case GL_INDEX_LOGIC_OP:
-      break;
-*/
    case GL_COLOR_LOGIC_OP:
       if (state)
          sisDDLogicOpCode( ctx, ctx->Color.LogicOp );
       else
          sisDDLogicOpCode( ctx, GL_COPY );
       break;
-/*
-    case GL_MAP1_COLOR_4:
-      break;
-    case GL_MAP1_INDEX:
-      break;
-    case GL_MAP1_NORMAL:
-      break;
-    case GL_MAP1_TEXTURE_COORD_1:
-      break;
-    case GL_MAP1_TEXTURE_COORD_2:
-      break;
-    case GL_MAP1_TEXTURE_COORD_3:
-      break;
-    case GL_MAP1_TEXTURE_COORD_4:
-      break;
-    case GL_MAP1_VERTEX_3:
-      break;
-    case GL_MAP1_VERTEX_4:
-      break;
-    case GL_MAP2_COLOR_4:
-      break;
-    case GL_MAP2_INDEX:
-      break;
-    case GL_MAP2_NORMAL:
-      break;
-    case GL_MAP2_TEXTURE_COORD_1:
-      break;
-    case GL_MAP2_TEXTURE_COORD_2:
-      break;
-    case GL_MAP2_TEXTURE_COORD_3:
-      break;
-    case GL_MAP2_TEXTURE_COORD_4:
-      break;
-    case GL_MAP2_VERTEX_3:
-      break;
-    case GL_MAP2_VERTEX_4:
-      break;
-    case GL_NORMALIZE:
-      break;
-    case GL_POINT_SMOOTH:
-      break;
-    case GL_POLYGON_SMOOTH:
-      break;
-    case GL_POLYGON_STIPPLE:
-      break;
-    case GL_POLYGON_OFFSET_POINT:
-      break;
-    case GL_POLYGON_OFFSET_LINE:
-      break;
-    case GL_POLYGON_OFFSET_FILL:
-    case GL_POLYGON_OFFSET_EXT:
-     break;
-    case GL_RESCALE_NORMAL_EXT:
-      break;
-*/
    case GL_SCISSOR_TEST:
       sisUpdateClipping( ctx );
       break;
-/*
-    case GL_SHARED_TEXTURE_PALETTE_EXT:
-      break;
-*/
    case GL_STENCIL_TEST:
       if (state) {
          if (smesa->zFormat != SiS_ZFORMAT_S8Z24)
@@ -730,33 +625,6 @@
 				   MASK_StencilWriteEnable);
       }
       break;
-/*
-    case GL_TEXTURE_1D:
-    case GL_TEXTURE_2D:
-    case GL_TEXTURE_3D:
-      break;
-    case GL_TEXTURE_GEN_Q:
-      break;
-    case GL_TEXTURE_GEN_R:
-      break;
-    case GL_TEXTURE_GEN_S:
-      break;
-    case GL_TEXTURE_GEN_T:
-      break;
-
-    case GL_VERTEX_ARRAY:
-      break;
-    case GL_NORMAL_ARRAY:
-      break;
-    case GL_COLOR_ARRAY:
-      break;
-    case GL_INDEX_ARRAY:
-      break;
-    case GL_TEXTURE_COORD_ARRAY:
-      break;
-    case GL_EDGE_FLAG_ARRAY:
-      break;
-*/
     }
 }
 
@@ -833,27 +701,6 @@
       smesa->GlobalFlag |= GFLAG_ENABLESETTING2;
    }
 
-  /* TODO: if fog disable, don't check */
-  if (current->hwCapEnable & MASK_FogEnable) {
-      /* fog setting */
-      if (current->hwFog != prev->hwFog) {
-	  prev->hwFog = current->hwFog;
-	  smesa->GlobalFlag |= GFLAG_FOGSETTING;
-	}
-      if (current->hwFogFar != prev->hwFogFar) {
-	  prev->hwFogFar = current->hwFogFar;
-	  smesa->GlobalFlag |= GFLAG_FOGSETTING;
-	}
-      if (current->hwFogInverse != prev->hwFogInverse) {
-	  prev->hwFogInverse = current->hwFogInverse;
-	  smesa->GlobalFlag |= GFLAG_FOGSETTING;
-	}
-      if (current->hwFogDensity != prev->hwFogDensity) {
-	  prev->hwFogDensity = current->hwFogDensity;
-	  smesa->GlobalFlag |= GFLAG_FOGSETTING;
-	}
-    }
-
    if (smesa->GlobalFlag & GFLAG_RENDER_STATES)
       sis_update_render_state( smesa );
 
@@ -928,11 +775,11 @@
    prev->texture[0].hwTextureMip = 0;
 #endif
 
-   /* Texture Blending seeting */
-   prev->hwTexBlendClr0 = L_REPLACE__RGB_STAGE0;
-   prev->hwTexBlendClr1 = 0x294B4000;
-   prev->hwTexBlendAlpha0 = 0x333A0000;
-   prev->hwTexBlendAlpha1 = 0x333A0000;
+   /* Texture Blending setting -- use fragment color/alpha*/
+   prev->hwTexBlendColor0 = STAGE0_C_CF;
+   prev->hwTexBlendColor1 = STAGE1_C_CF;
+   prev->hwTexBlendAlpha0 = STAGE0_A_AF;
+   prev->hwTexBlendAlpha1 = STAGE1_A_AF;
    
    switch (smesa->bytesPerPixel)
    {
@@ -1012,7 +859,7 @@
    ctx->Driver.Enable		 = sisDDEnable;
    ctx->Driver.FrontFace	 = sisDDFrontFace;
    ctx->Driver.Fogfv		 = sisDDFogfv;
-   ctx->Driver.Hint		 = sisDDHint;
+   ctx->Driver.Hint		 = NULL;
    ctx->Driver.Lightfv		 = NULL;
    ctx->Driver.LogicOpcode	 = sisDDLogicOpCode;
    ctx->Driver.PolygonMode	 = NULL;

Index: sis_state.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_state.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_state.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_state.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_state.h,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_state.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_stencil.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_stencil.c,v
retrieving revision 1.1.4.1
retrieving revision 1.1.4.2
diff -u -d -r1.1.4.1 -r1.1.4.2
--- sis_stencil.c	26 Nov 2003 22:48:34 -0000	1.1.4.1
+++ sis_stencil.c	20 Dec 2003 00:28:22 -0000	1.1.4.2
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_stencil.c,v 1.4 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_stencil.c,v 1.5 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_stencil.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_stencil.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_stencil.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_stencil.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_stencil.h,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_stencil.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_tex.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_tex.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_tex.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_tex.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tex.c,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tex.c,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -38,6 +38,7 @@
 #include "imports.h"
 #include "texformat.h"
 #include "texstore.h"
+#include "teximage.h"
 
 #define ALIGN(value, align) (char *)((long)(value + align - 1) & ~(align - 1))
 

Index: sis_tex.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_tex.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_tex.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_tex.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -17,13 +17,13 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tex.h,v 1.1 2003/09/28 20:15:34 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tex.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:

Index: sis_texstate.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_texstate.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_texstate.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_texstate.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -18,13 +18,14 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_texstate.c,v 1.2 2003/09/29 11:25:18 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_texstate.c,v 1.3 2003/12/09 00:15:22 alanh Exp $ */
 
 /*
  * Authors:
@@ -60,70 +61,70 @@
 
    sisTexObjPtr t = texObj->DriverData;
 
-   /*
-   current->hwTexBlendClr0 = RGB_STAGE1; 
-   current->hwTexBlendAlpha0 = A_STAGE1;
-   */
-
    switch (texture_unit->EnvMode)
    {
    case GL_REPLACE:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV0, 0);
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr0 = A_REPLACE_RGB_STAGE0;
-         current->hwTexBlendAlpha0 = A_REPLACE_A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CF;
+         current->hwTexBlendAlpha0 = STAGE0_A_AS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr0 = RGB_REPLACE__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGB_REPLACE__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AF;
          break;
       case GL_INTENSITY:
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr0 = RGBA_REPLACE__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGBA_REPLACE__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AS;
          break;
       }
       break;
 
    case GL_MODULATE:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV0, 0);
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr0 = A_MODULATE_RGB_STAGE0;
-         current->hwTexBlendAlpha0 = A_MODULATE_A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CF;
+         current->hwTexBlendAlpha0 = STAGE0_A_AFAS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr0 = RGB_MODULATE__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGB_MODULATE__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFCS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AF;
          break;
       case GL_INTENSITY:
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr0 = RGBA_MODULATE__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGBA_MODULATE__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFCS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AFAS;
          break;
       }
       break;
 
    case GL_DECAL:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV0, 0);
       switch (t->format)
       {
       case GL_RGB:
-         current->hwTexBlendClr0 = RGB_DECAL__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGB_DECAL__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AF;
          break;
       case GL_RGBA:
-         current->hwTexBlendClr0 = RGBA_DECAL__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGBA_DECAL__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFOMAS_CSAS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AF;
          break;
       }
       break;
 
    case GL_BLEND:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV0, 1);
+#if 0 /* XXX Blending broken */
       current->hwTexEnvColor =
          ((GLint) (texture_unit->EnvColor[3])) << 24 |
          ((GLint) (texture_unit->EnvColor[0])) << 16 |
@@ -132,33 +133,34 @@
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr0 = A_BLEND_RGB_STAGE0;
-         current->hwTexBlendAlpha0 = A_BLEND_A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CF;
+         current->hwTexBlendAlpha0 = STAGE0_A_AFAS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr0 = RGB_BLEND__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGB_BLEND__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AF;
          break;
       case GL_INTENSITY:
-         current->hwTexBlendClr0 = I_BLEND__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = I_BLEND__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AFOMAS_ACAS;
          break;
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr0 = RGBA_BLEND__RGB_STAGE0;
-         current->hwTexBlendAlpha0 = RGBA_BLEND__A_STAGE0;
+         current->hwTexBlendColor0 = STAGE0_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha0 = STAGE0_A_AFAS;
          break;
       }
       break;
+#endif
    }
 
-   if ((current->hwTexBlendClr0 != prev->hwTexBlendClr0) ||
+   if ((current->hwTexBlendColor0 != prev->hwTexBlendColor0) ||
        (current->hwTexBlendAlpha0 != prev->hwTexBlendAlpha0) ||
        (current->hwTexEnvColor != prev->hwTexEnvColor))
    {
       prev->hwTexEnvColor = current->hwTexEnvColor;
-      prev->hwTexBlendClr0 = current->hwTexBlendClr0;
+      prev->hwTexBlendColor0 = current->hwTexBlendColor0;
       prev->hwTexBlendAlpha0 = current->hwTexBlendAlpha0;
       smesa->GlobalFlag |= GFLAG_TEXTUREENV;
    }
@@ -178,70 +180,70 @@
 
    sisTexObjPtr t = texObj->DriverData;
 
-   /*
-   current->hwTexBlendClr1 = RGB_STAGE1; current->hwTexBlendAlpha1 =
-   A_STAGE1;
-   */
-
    switch (texture_unit->EnvMode)
    {
    case GL_REPLACE:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV1, 0);
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr1 = A_REPLACE_RGB_STAGE1;
-         current->hwTexBlendAlpha1 = A_REPLACE_A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CF;
+         current->hwTexBlendAlpha1 = STAGE1_A_AS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr1 = RGB_REPLACE__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGB_REPLACE__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AF;
          break;
       case GL_INTENSITY:
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr1 = RGBA_REPLACE__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGBA_REPLACE__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AS;
          break;
       }
       break;
 
    case GL_MODULATE:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV1, 0);
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr1 = A_MODULATE_RGB_STAGE1;
-         current->hwTexBlendAlpha1 = A_MODULATE_A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CF;
+         current->hwTexBlendAlpha1 = STAGE1_A_AFAS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr1 = RGB_MODULATE__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGB_MODULATE__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFCS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AF;
          break;
       case GL_INTENSITY:
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr1 = RGBA_MODULATE__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGBA_MODULATE__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFCS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AFAS;
          break;
       }
       break;
 
    case GL_DECAL:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV1, 0);
       switch (t->format)
       {
       case GL_RGB:
-         current->hwTexBlendClr1 = RGB_DECAL__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGB_DECAL__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AF;
          break;
       case GL_RGBA:
-         current->hwTexBlendClr1 = RGBA_DECAL__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGBA_DECAL__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFOMAS_CSAS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AF;
          break;
       }
       break;
 
    case GL_BLEND:
+      FALLBACK(smesa, SIS_FALLBACK_TEXENV1, 1);
+#if 0 /* XXX Blending broken */
       current->hwTexEnvColor =
          ((GLint) (texture_unit->EnvColor[3])) << 24 |
          ((GLint) (texture_unit->EnvColor[0])) << 16 |
@@ -250,32 +252,33 @@
       switch (t->format)
       {
       case GL_ALPHA:
-         current->hwTexBlendClr1 = A_BLEND_RGB_STAGE1;
-         current->hwTexBlendAlpha1 = A_BLEND_A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CF;
+         current->hwTexBlendAlpha1 = STAGE1_A_AFAS;
          break;
       case GL_LUMINANCE:
       case GL_RGB:
-         current->hwTexBlendClr1 = RGB_BLEND__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGB_BLEND__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AF;
          break;
       case GL_INTENSITY:
-         current->hwTexBlendClr1 = I_BLEND__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = I_BLEND__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AFOMAS_ACAS;
          break;
       case GL_LUMINANCE_ALPHA:
       case GL_RGBA:
-         current->hwTexBlendClr1 = RGBA_BLEND__RGB_STAGE1;
-         current->hwTexBlendAlpha1 = RGBA_BLEND__A_STAGE1;
+         current->hwTexBlendColor1 = STAGE1_C_CFOMCS_CCCS;
+         current->hwTexBlendAlpha1 = STAGE1_A_AFAS;
          break;
       }
       break;
+#endif
    }
 
-   if ((current->hwTexBlendClr1 != prev->hwTexBlendClr1) ||
+   if ((current->hwTexBlendColor1 != prev->hwTexBlendColor1) ||
        (current->hwTexBlendAlpha1 != prev->hwTexBlendAlpha1) ||
        (current->hwTexEnvColor != prev->hwTexEnvColor))
    {
-      prev->hwTexBlendClr1 = current->hwTexBlendClr1;
+      prev->hwTexBlendColor1 = current->hwTexBlendColor1;
       prev->hwTexBlendAlpha1 = current->hwTexBlendAlpha1;
       prev->hwTexEnvColor = current->hwTexEnvColor;
       smesa->GlobalFlag |= GFLAG_TEXTUREENV_1;
@@ -336,8 +339,7 @@
       GLint b;
 
       /* The mipmap lod biasing is based on experiment.  It seems there's a
-       * limit of around +4/-4 to the bias value; we're being
-       * conservative.
+       * limit of around +4/-4 to the bias value; we're being conservative.
        */
       b = (GLint) (ctx->Texture.Unit[hw_unit].LodBias * 32.0);
       if (b > 127)
@@ -551,27 +553,27 @@
 
    if (hw_unit == 1)
    {
-      current->hwTexBlendClr1 = RGB_STAGE1;
-      current->hwTexBlendAlpha1 = A_STAGE1;
+      current->hwTexBlendColor1 = STAGE1_C_CF;
+      current->hwTexBlendAlpha1 = STAGE1_A_AF;
       
-      if ((current->hwTexBlendClr1 != prev->hwTexBlendClr1) ||
+      if ((current->hwTexBlendColor1 != prev->hwTexBlendColor1) ||
           (current->hwTexBlendAlpha1 != prev->hwTexBlendAlpha1) ||
           (current->hwTexEnvColor != prev->hwTexEnvColor))
       {
-         prev->hwTexBlendClr1 = current->hwTexBlendClr1;
+         prev->hwTexBlendColor1 = current->hwTexBlendColor1;
          prev->hwTexBlendAlpha1 = current->hwTexBlendAlpha1;
          prev->hwTexEnvColor = current->hwTexEnvColor;
          smesa->GlobalFlag |= GFLAG_TEXTUREENV_1;
       }
    } else {
-      current->hwTexBlendClr0 = RGB_STAGE1;
-      current->hwTexBlendAlpha0 = A_STAGE1;
+      current->hwTexBlendColor0 = STAGE0_C_CF;
+      current->hwTexBlendAlpha0 = STAGE0_A_AF;
       
-      if ((current->hwTexBlendClr0 != prev->hwTexBlendClr0) ||
+      if ((current->hwTexBlendColor0 != prev->hwTexBlendColor0) ||
           (current->hwTexBlendAlpha0 != prev->hwTexBlendAlpha0) ||
           (current->hwTexEnvColor != prev->hwTexEnvColor))
       {
-         prev->hwTexBlendClr0 = current->hwTexBlendClr0;
+         prev->hwTexBlendColor0 = current->hwTexBlendColor0;
          prev->hwTexBlendAlpha0 = current->hwTexBlendAlpha0;
          prev->hwTexEnvColor = current->hwTexEnvColor;
          smesa->GlobalFlag |= GFLAG_TEXTUREENV;
@@ -579,16 +581,25 @@
    }
 }
 
-static GLboolean updateTextureUnit( GLcontext *ctx, int unit )
+static void updateTextureUnit( GLcontext *ctx, int unit )
 {
    sisContextPtr smesa = SIS_CONTEXT( ctx );
    const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
    struct gl_texture_object *texObj = texUnit->_Current;
+   GLint fallbackbit;
+   
+   if (unit == 0)
+      fallbackbit = SIS_FALLBACK_TEXTURE0;
+   else
+      fallbackbit = SIS_FALLBACK_TEXTURE1;
 
    if (texUnit->_ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT)) {
-      GLboolean ok = GL_TRUE; /* XXX */
-      if (smesa->TexStates[unit] & NEW_TEXTURING)
+      if (smesa->TexStates[unit] & NEW_TEXTURING) {
+         GLboolean ok;
+
          ok = sis_set_texobj_parm (ctx, texObj, unit);
+         FALLBACK( smesa, fallbackbit, !ok );
+      }
       if (smesa->TexStates[unit] & NEW_TEXTURE_ENV) {
          if (unit == 0)
             sis_set_texture_env0( ctx, texObj, unit );
@@ -596,13 +607,12 @@
             sis_set_texture_env1( ctx, texObj, unit );
       }
       smesa->TexStates[unit] = 0;
-      return ok;
    } else if ( texUnit->_ReallyEnabled ) {
       /* fallback */
-      return GL_FALSE;
+      FALLBACK( smesa, fallbackbit, 1 );
    } else {
       sis_reset_texture_env( ctx, unit );
-      return GL_TRUE;
+      FALLBACK( smesa, fallbackbit, 0 );
    }
 }
 
@@ -610,7 +620,6 @@
 void sisUpdateTextureState( GLcontext *ctx )
 {
    sisContextPtr smesa = SIS_CONTEXT( ctx );
-   GLboolean ok;
    int i;
    __GLSiSHardware *current = &smesa->current;
 
@@ -620,10 +629,8 @@
       smesa->TexStates[i] |= (NEW_TEXTURING | NEW_TEXTURE_ENV);
 #endif
 
-   ok = (updateTextureUnit( ctx, 0 ) &&
-	 updateTextureUnit( ctx, 1 ));
-
-   FALLBACK( smesa, SIS_FALLBACK_TEXTURE, !ok );
+   updateTextureUnit( ctx, 0 );
+   updateTextureUnit( ctx, 1 );
 
    /* XXX Issues with the 2nd unit but not the first being enabled? */
    if ( ctx->Texture.Unit[0]._ReallyEnabled &

Index: sis_tris.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_tris.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_tris.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_tris.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tris.c,v 1.2 2003/09/28 21:44:45 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tris.c,v 1.3 2003/12/09 00:15:22 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2000 Silicon Integrated Systems Corp, Inc., HsinChu, Taiwan.
@@ -19,7 +20,7 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
 DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
 USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -870,7 +871,6 @@
       sisUpdateAGP( smesa );
       while (size > AGP_SpaceLeft) {
          /* Spin until space is available. */
-         usleep(1);
          AGP_ReadPtr = (GLfloat *)((long)MMIO_READ(REG_3D_AGPCmBase) -
             (long)smesa->AGPCmdBufAddr + (long)smesa->AGPCmdBufBase);
          sisUpdateAGP( smesa );

Index: sis_tris.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_tris.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_tris.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_tris.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tris.h,v 1.1 2003/09/28 20:15:35 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tris.h,v 1.2 2003/12/09 00:15:22 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 

Index: sis_tritmp.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_tritmp.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_tritmp.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_tritmp.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tritmp.h,v 1.2 2003/09/28 21:44:45 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_tritmp.h,v 1.3 2003/12/09 00:15:22 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 
@@ -140,10 +140,6 @@
    sis_tri_func_agp[SIS_STATES] = TAG(sis_draw_tri_agp);
    sis_line_func_agp[SIS_STATES] = TAG(sis_draw_line_agp);
    sis_point_func_agp[SIS_STATES] = TAG(sis_draw_point_agp);
-   /*sis_quad_func_agp[SIS_STATES] = TAG(sis_draw_quad_mmio);
-   sis_tri_func_agp[SIS_STATES] = TAG(sis_draw_tri_mmio);
-   sis_line_func_agp[SIS_STATES] = TAG(sis_draw_line_mmio);
-   sis_point_func_agp[SIS_STATES] = TAG(sis_draw_point_mmio);*/
    sis_quad_func_mmio[SIS_STATES] = TAG(sis_draw_quad_mmio);
    sis_tri_func_mmio[SIS_STATES] = TAG(sis_draw_tri_mmio);
    sis_line_func_mmio[SIS_STATES] = TAG(sis_draw_line_mmio);

Index: sis_vb.c
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_vb.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_vb.c	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_vb.c	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_vb.c,v 1.2 2003/09/29 11:25:18 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_vb.c,v 1.3 2003/12/09 00:15:23 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 
@@ -361,7 +361,7 @@
    if (!newinputs)
       return;
 
-   if (newinputs & VERT_BIT_CLIP) {
+   if (newinputs & VERT_BIT_POS) {
       setup_tab[smesa->SetupIndex].emit( ctx, start, count, v, stride );
    } else {
       GLuint ind = 0;

Index: sis_vb.h
===================================================================
RCS file: /cvs/xorg/xc/lib/GL/mesa/src/drv/sis/sis_vb.h,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -d -r1.1 -r1.1.4.1
--- sis_vb.h	25 Nov 2003 19:28:07 -0000	1.1
+++ sis_vb.h	20 Dec 2003 00:28:22 -0000	1.1.4.1
@@ -1,4 +1,5 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_vb.h,v 1.1 2003/09/28 20:15:35 alanh Exp $ */
+/* $XdotOrg$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/sis/sis_vb.h,v 1.2 2003/12/09 00:15:23 alanh Exp $ */
 /**************************************************************************
 
 Copyright 2003 Eric Anholt
@@ -18,10 +19,9 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
+ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 **************************************************************************/
 





More information about the xorg-commit mailing list