merge latest DRI sis driver changes from the DRI trunk
authorAlan Hourihane <alanh@tungstengraphics.com>
Thu, 4 Dec 2003 18:17:32 +0000 (18:17 +0000)
committerAlan Hourihane <alanh@tungstengraphics.com>
Thu, 4 Dec 2003 18:17:32 +0000 (18:17 +0000)
30 files changed:
src/mesa/drivers/dri/sis/sis_alloc.c
src/mesa/drivers/dri/sis/sis_alloc.h
src/mesa/drivers/dri/sis/sis_clear.c
src/mesa/drivers/dri/sis/sis_common2.h
src/mesa/drivers/dri/sis/sis_context.c
src/mesa/drivers/dri/sis/sis_context.h
src/mesa/drivers/dri/sis/sis_dd.c
src/mesa/drivers/dri/sis/sis_dd.h
src/mesa/drivers/dri/sis/sis_debug.c
src/mesa/drivers/dri/sis/sis_debug.h
src/mesa/drivers/dri/sis/sis_fog.c
src/mesa/drivers/dri/sis/sis_lock.c
src/mesa/drivers/dri/sis/sis_lock.h
src/mesa/drivers/dri/sis/sis_reg.h
src/mesa/drivers/dri/sis/sis_screen.c
src/mesa/drivers/dri/sis/sis_screen.h
src/mesa/drivers/dri/sis/sis_span.c
src/mesa/drivers/dri/sis/sis_span.h
src/mesa/drivers/dri/sis/sis_state.c
src/mesa/drivers/dri/sis/sis_state.h
src/mesa/drivers/dri/sis/sis_stencil.c
src/mesa/drivers/dri/sis/sis_stencil.h
src/mesa/drivers/dri/sis/sis_tex.c
src/mesa/drivers/dri/sis/sis_tex.h
src/mesa/drivers/dri/sis/sis_texstate.c
src/mesa/drivers/dri/sis/sis_tris.c
src/mesa/drivers/dri/sis/sis_tris.h
src/mesa/drivers/dri/sis/sis_tritmp.h
src/mesa/drivers/dri/sis/sis_vb.c
src/mesa/drivers/dri/sis/sis_vb.h

index aa71f269d1497bed65283a9f819e49a0a890ccde..1789fbb5ffe0ec90d526c07068597523c0caee9c 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -32,13 +32,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  *   Eric Anholt <anholt@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 +46,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #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,6 +164,7 @@ sisAllocZStencilBuffer( sisContextPtr smesa )
 
    smesa->depthbuffer = (void *) addr;
    smesa->depthPitch = width2;
+   smesa->depthOffset = (unsigned long)addr - (unsigned long)smesa->FbBase;
 
    /* set pZClearPacket */
    memset( &smesa->zClearPacket, 0, sizeof(ENGPACKET) );
index 30f5f3ab36dc84010da98694a39492d89dd2ae1e..e76fc53fe23805eedc2cfbad5bc8bf3027cd5595 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 2506cd5a37bc982ffba4a6dcfa99cf24184440f1..f71c4c4334b3de44abdbf32a27cb1d439a916b7d 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -35,14 +35,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "sis_context.h"
 #include "sis_state.h"
 #include "sis_lock.h"
-#include "macros.h"
+
 #include "swrast/swrast.h"
+#include "macros.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,
@@ -55,7 +54,7 @@ set_color_pattern( sisContextPtr smesa, GLubyte red, GLubyte green,
                   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) +
@@ -76,24 +75,18 @@ sisUpdateZStencilPattern( sisContextPtr smesa, GLclampd z, GLint stencil )
 {
    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);
@@ -122,20 +115,26 @@ sisDDClear( GLcontext * ctx, GLbitfield mask, GLboolean all,
       width1 = width;            
       height1 = height;
    }
+   /* XXX: Scissoring */
 
    LOCK_HARDWARE();
 
-#if 0
-   /* The 3d clear code is disabled because it appears to be slower, even
-    * in the case of being requested to clear Z and color buffers at the
-    * same time.
+   /* 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 (mask & (DD_BACK_LEFT_BIT | DD_DEPTH_BIT | DD_STENCIL_BIT))
+   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,7 +184,6 @@ sisDDClearStencil( GLcontext * ctx, GLint s )
    sisUpdateZStencilPattern( smesa, ctx->Depth.Clear, s );
 }
 
-#if 0
 static GLbitfield
 sis_3D_Clear( GLcontext * ctx, GLbitfield mask,
              GLint x, GLint y, GLint width, GLint height )
@@ -197,23 +195,20 @@ sis_3D_Clear( GLcontext * ctx, GLbitfield mask,
    float left, top, right, bottom, zClearVal;
    GLboolean bClrColor, bClrDepth, bClrStencil;
    GLint dwPrimitiveSet;
-   GLint dwEnable1 = 0, 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 = ((mask & DD_BACK_LEFT_BIT) != 0);
-   bClrDepth = ((mask & DD_DEPTH_BIT) != 0) && (ctx->Visual.depthBits != 0);
-   bClrStencil = ((mask & DD_STENCIL_BIT) != 0) && (ctx->Visual.stencilBits != 0);
+   bClrColor = (mask & (DD_BACK_LEFT_BIT | DD_FRONT_LEFT_BIT)) != 0;
+   bClrDepth = (mask & DD_DEPTH_BIT) != 0;
+   bClrStencil = (mask & DD_STENCIL_BIT) != 0;
 
    if (smesa->GlobalFlag & GFLAG_RENDER_STATES)
       sis_update_render_state( smesa );
 
-   if (!bClrColor)
-      dwEnable2 |= MASK_ColorMaskWriteEnable;
-
    if (bClrStencil) {
       dwSten1 = STENCIL_FORMAT_8 | SiS_STENCIL_ALWAYS |
          (ctx->Stencil.Clear << 8) | 0xff;
@@ -319,15 +314,19 @@ sis_3D_Clear( GLcontext * ctx, GLbitfield mask,
       MMIO(REG_3D_TSXb, *(GLint *) &right);
       MMIO(REG_3D_TSYb, *(GLint *) &bottom);
       MMIO(REG_3D_TSARGBb, smesa->clearColorPattern);
-    }
+   }
 
    mEndPrimitive();
 
+   /* 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 );
+
    smesa->GlobalFlag |= dirtyflags;
 
-   return (mask & ~(DD_BACK_LEFT_BIT | DD_DEPTH_BIT | DD_STENCIL_BIT));
+   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 )
@@ -348,7 +347,7 @@ sis_bitblt_clear_cmd( sisContextPtr smesa, ENGPACKET * pkt )
    }
 
    MMIO(REG_CMD0, *(GLint *) & pkt->stdwCmd);
-   MMIO(REG_QueueLen, -1);
+   MMIO(REG_CommandQueue, -1);
 }
 
 static void
@@ -358,7 +357,7 @@ sis_clear_color_buffer( GLcontext *ctx, GLenum mask, GLint x, GLint y,
    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;
@@ -437,11 +436,6 @@ sis_clear_z_stencil_buffer( GLcontext * ctx, GLbitfield mask,
 {
    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 109078e3a9cc6a936e1b5541ca997293a963dfc8..40ae451be589c6010886cfd3e59cba256e0a5688 100644 (file)
@@ -18,7 +18,7 @@ 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
+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.
@@ -46,7 +46,6 @@ extern void *sis_debug_malloc(int x);
 
 #ifdef GLX_DIRECT_RENDERING
 # include <stdio.h>
-# include <unistd.h>
 # include <stdlib.h>
 # include <string.h>
 typedef struct _Box
index a58cb2963bd5a15145d3c78c58ac17102674cb99..0830e5676f1957149f9df55a4388d4882d7f431b 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -59,6 +59,21 @@ int GlobalCurrentHwcx = -1;
 int GlobalHwcxCountBase = 1;
 int GlobalCmdQueueLen = 0;
 
+#include "xmlpool.h"
+
+const char __driConfigOptions[] =
+DRI_CONF_BEGIN
+       DRI_CONF_SECTION_DEBUG
+               DRI_CONF_OPT_BEGIN(agp_disable,bool,false)
+               DRI_CONF_DESC(en,"Disable AGP vertex dispatch")
+               DRI_CONF_OPT_END
+               DRI_CONF_OPT_BEGIN(fallback_force,bool,false)
+               DRI_CONF_DESC(en,"Force software fallback")
+               DRI_CONF_OPT_END
+       DRI_CONF_SECTION_END
+DRI_CONF_END;
+const GLuint __driNConfigOptions = 2;
+
 static const char * const card_extensions[] =
 {
    "GL_ARB_multitexture",
@@ -69,28 +84,21 @@ static const char * const card_extensions[] =
 void
 WaitEngIdle (sisContextPtr smesa)
 {
-   GLubyte *IOBase = GET_IOBase (smesa);
-   GLbyte cEngineState;
+   GLuint cEngineState;
 
-   cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   while (((cEngineState & 0x80) == 0) ||
-         ((cEngineState & 0x40) == 0) || ((cEngineState & 0x20) == 0))
-   {
-      cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   }
+   do {
+      cEngineState = MMIO_READ(REG_CommandQueue);
+   } while ((cEngineState & SiS_EngIdle) != SiS_EngIdle);
 }
 
 void
 Wait2DEngIdle (sisContextPtr smesa)
 {
-   GLubyte *IOBase = GET_IOBase (smesa);
-   GLbyte cEngineState;
+   GLuint cEngineState;
 
-   cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   while (!(cEngineState & 0x80))
-   {
-      cEngineState = *((GLbyte volatile *) (IOBase + 0x8243));
-   }
+   do {
+      cEngineState = MMIO_READ(REG_CommandQueue);
+   } while ((cEngineState & SiS_EngIdle2d) != SiS_EngIdle2d);
 }
 
 /* To be called from mWait3DCmdQueue.  Separate function for profiling
@@ -101,9 +109,9 @@ Wait2DEngIdle (sisContextPtr smesa)
 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;
    }
 }
 
@@ -184,6 +192,10 @@ sisCreateContext( const __GLcontextModes *glVisual,
       assert (0);
    }
 
+   /* Parse configuration files */
+   driParseConfigFiles (&smesa->optionCache, &sisScreen->optionCache,
+                       sisScreen->driScreen->myNum, "sis");
+
    /* TODO: index mode */
 
    smesa->CurrentQueueLenPtr = &(smesa->sarea->QueueLength);
@@ -195,16 +207,17 @@ sisCreateContext( const __GLcontextModes *glVisual,
    smesa->AGPAddr = sisScreen->agp.handle;
 
    /* set AGP command buffer */
-   smesa->AGPCmdModeEnabled = GL_FALSE;
-   if (smesa->AGPSize != 0 && getenv("SIS_NO_AGP") == NULL) {  
-      if (sisScreen->AGPCmdBufSize != 0) {
-         smesa->AGPCmdBufBase = smesa->AGPBase + sisScreen->AGPCmdBufOffset;
-         smesa->AGPCmdBufAddr = smesa->AGPAddr + sisScreen->AGPCmdBufOffset;
-         smesa->AGPCmdBufSize = sisScreen->AGPCmdBufSize;
-
-         smesa->pAGPCmdBufNext = (GLint *)&(smesa->sarea->AGPCmdBufNext);
-         smesa->AGPCmdModeEnabled = GL_TRUE;
-      }
+   if (smesa->AGPSize != 0 && sisScreen->AGPCmdBufSize != 0 &&
+      !driQueryOptionb(&smesa->optionCache, "agp_disable"))
+   {   
+      smesa->AGPCmdBufBase = smesa->AGPBase + sisScreen->AGPCmdBufOffset;
+      smesa->AGPCmdBufAddr = smesa->AGPAddr + sisScreen->AGPCmdBufOffset;
+      smesa->AGPCmdBufSize = sisScreen->AGPCmdBufSize;
+
+      smesa->pAGPCmdBufNext = (GLint *)&(smesa->sarea->AGPCmdBufNext);
+      smesa->AGPCmdModeEnabled = GL_TRUE;
+   } else {
+      smesa->AGPCmdModeEnabled = GL_FALSE;
    }
 
    smesa->GlobalFlag = 0L;
@@ -218,6 +231,9 @@ sisCreateContext( const __GLcontextModes *glVisual,
    _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 );
@@ -486,12 +502,12 @@ sis_update_texture_state (sisContextPtr smesa)
    /* 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);
    }
 
index c4248e5420bd90e49c831f0e6f5a029308351bd6..fb4191a6ef25ef4e86be7ca34f1e25a4a2cc0177 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -37,6 +37,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "context.h"
 #include "dri_util.h"
+#include "xmlconfig.h"
 
 #include "sis_screen.h"
 #include "sis_common2.h"
@@ -198,8 +199,8 @@ typedef struct __GLSiSHardwareRec
 
   GLint hwTexEnvColor;         /* Texture Blending Setting */
 
-  GLint hwTexBlendClr0;
-  GLint hwTexBlendClr1;
+  GLint hwTexBlendColor0;
+  GLint hwTexBlendColor1;
   GLint hwTexBlendAlpha0;
   GLint hwTexBlendAlpha1;
 
@@ -339,6 +340,7 @@ struct sis_context
   unsigned int backOffset;
   unsigned int backPitch;
   GLvoid *depthbuffer;
+  unsigned int depthOffset;
   unsigned int depthPitch;
   void *zbFree, *bbFree;               /* Cookies for freeing buffers */
   ENGPACKET zClearPacket, cbClearPacket;
@@ -361,25 +363,16 @@ struct sis_context
 
   sisScreenPtr sisScreen;              /* Screen private DRI data */
   SISSAREAPrivPtr sarea;               /* Private SAREA data */
+
+   /* Configuration cache */
+   driOptionCache optionCache;
 };
 
 #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 )                                     \
@@ -410,7 +403,7 @@ struct sis_context
 /* 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);                                   \
index 9dc3688b07fef7a528d9aadf7c5ae633f1b4cec0..aecc20e53db910612db813fc9866603706308035 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -151,8 +151,7 @@ sisUpdateBufferSize( sisContextPtr smesa )
 
    current->hwZ &= ~MASK_ZBufferPitch;
    current->hwZ |= smesa->width * z_depth >> 2;
-   current->hwOffsetZ = ( (GLint)smesa->depthbuffer -
-                         (GLint)GET_FbBase(smesa) ) >> 2;
+   current->hwOffsetZ = smesa->depthOffset >> 2;
 
    if ((current->hwOffsetZ != prev->hwOffsetZ) || (current->hwZ != prev->hwZ)) {
       prev->hwOffsetZ = current->hwOffsetZ;
index 00a94cee5645b4d2e1a67ee646a5a042ed13d8dc..9ff5f5b00d0029f9e8fc5c1cc0f7c26a1da4fccf 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index e950bcee015a08613ea561b7d63d9f716af91608..99cb09c255ef956e57cb8baa6460bce6efcea2f8 100644 (file)
@@ -18,7 +18,7 @@ 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
+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.
@@ -76,7 +76,6 @@ dump_agp (void *addr, int dword_count)
   }
 }
 
-#ifndef _SOLO
 void
 d2f_once (GLcontext * ctx)
 {
@@ -155,4 +154,3 @@ dvidmem (unsigned char *addr, int size)
       close (fh);
     }
 }
-#endif
index 6b7c79698e9c5f4df321d7a788f8345646b579aa..5e2b30912aca6c8653f19c6d17f0cf6c2a915b18 100644 (file)
@@ -18,7 +18,7 @@ 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
+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.
index 8daa9a0f5e3ea23fbd5b611fdfdf6bd20c9cfefd..e1230f6b403567f508079433c223de442275c6a1 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -35,6 +35,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "sis_context.h"
 #include "sis_state.h"
 #include "swrast/swrast.h"
+
 #include "macros.h"
 
 static GLint convertFtToFogFt( GLfloat dwInValue );
@@ -43,6 +44,7 @@ void
 sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
 {
    sisContextPtr smesa = SIS_CONTEXT(ctx);
+   __GLSiSHardware *prev = &smesa->prev;
    __GLSiSHardware *current = &smesa->current;
 
    float fArg;
@@ -56,29 +58,25 @@ sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
       {
       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:
@@ -91,6 +89,13 @@ sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
          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 */
@@ -101,6 +106,10 @@ sisDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
       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 1972ff4c16fa773f0baca28a395004459357ee86..5e6a0d468d89344bd8f2387b62b9eab45b7cc927 100644 (file)
@@ -18,10 +18,9 @@ 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
-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 1c43d8cc34c480dbfe87b5bc7a42d1554602eab8..fef99319638fbc613105d467ebb9df11fb33e2cb 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
index 41d7e74da8dc04a22f2c854c88c061a3ff9b8b7a..378692fc1d276404f6a265f3fc7404d7c4133bbf 100644 (file)
@@ -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,13 +16,13 @@ The above copyright notice and this permission notice (including the
 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.3 2000/09/26 15:56:48 tsi Exp $ */
@@ -39,7 +40,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  * 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 +218,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define REG_3D_TexturePalette                  0x8C00
 
 /*
- * REG_QueueLen -- (8240h-8243h)
+ * REG_CommandQueue -- (8240h-8243h)
  */
 #define MASK_QueueLen                          0x0000ffff
 #define SiS_EngIdle2d                          0x80000000
@@ -528,17 +529,17 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #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 +805,27 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  * REG_3D_TextureAlphaBlendSet0                (0x8B40 - 0x8B43)
  * REG_3D_TextureAlphaBlendSet1                (0x8B44 - 0x8B46)
  */
-
-#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 RGB_DECAL__RGB_STAGE1          0xe1485000
-#define RGB_DECAL__A_STAGE1            0xa3230000
-#define RGBA_DECAL__RGB_STAGE1         0xe5394001
-#define RGBA_DECAL__A_STAGE1           0xa3230000
-
-#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 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 STAGE0_A_AF                    0x63230000
+#define STAGE0_A_AS                    0xc3230000
+#define STAGE0_A_AFAS                  0x63c30000
+#define STAGE0_A_AFOMAS_ACAS           0x46c60001
+
+#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 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 1de992e18b5483f76b0b1fd388f9ebc1833c8c0b..a43f2be8c0ea2f76b1a02e1ea4497aeee6af809f 100644 (file)
@@ -18,10 +18,9 @@ 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
-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.
 
 **************************************************************************/
 
@@ -86,6 +85,9 @@ sisCreateScreen( __DRIscreenPrivate *sPriv )
 
    sisScreen->driScreen = sPriv;
 
+   /* parse information in __driConfigOptions */
+   driParseOptionInfo(&sisScreen->optionCache);
+
    return sisScreen;
 }
 
@@ -150,7 +152,7 @@ sis_bitblt_copy_cmd (sisContextPtr smesa, ENGPACKET * pkt)
       *lpdwDest++ = *lpdwSrc++;
 
    MMIO(REG_CMD0, *(GLint *)&pkt->stdwCmd);
-   MMIO(REG_QueueLen, -1);
+   MMIO(REG_CommandQueue, -1);
 }
 
 static void sisCopyBuffer( __DRIdrawablePrivate *dPriv )
@@ -266,7 +268,6 @@ static struct __DriverAPIRec sisAPI = {
  * The __driCreateScreen name is the symbol that libGL.so fetches.
  * Return:  pointer to a __DRIscreenPrivate.
  */
-#ifndef _SOLO
 void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc,
                         int numConfigs, __GLXvisualConfig *config)
 {
@@ -274,12 +275,3 @@ void *__driCreateScreen(Display *dpy, int scrn, __DRIscreen *psc,
    psp = __driUtilCreateScreen( dpy, scrn, psc, numConfigs, config, &sisAPI );
    return (void *)psp;
 }
-#else
-void *__driCreateScreen(struct DRIDriverRec *driver,
-                        struct DRIDriverContextRec *driverContext)
-{
-   __DRIscreenPrivate *psp;
-   psp = __driUtilCreateScreen(driver, driverContext, &sisAPI);
-   return (void *) psp;
-}
-#endif
index e2c67c16f2f6593c859be83644c17f7269f16fad..452278264f1890b719d122bf4d8e18d2fc1a3a85 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
@@ -55,6 +54,9 @@ typedef struct {
    __DRIscreenPrivate *driScreen;
    unsigned int sarea_priv_offset;
 
+   /* Configuration cache with default values for all contexts */
+   driOptionCache optionCache;
+
 } sisScreenRec, *sisScreenPtr;
 
 #endif
index 202454a06afaba7e65df57e37c8a844b9e352a19..05e1777891cc44813451fa201dca005f8bba2139 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
index cfc19606c72f01ec7108421fcd079e8dd19419f8..f0d64df19c442e6c32046eab0aa982ce5dd3511b 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 9d093595a1c344e48071e9a1a7e754a8a296f91e..8ff067f56d74922c0ecf602de0ffaf23b24b9187 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -366,10 +366,10 @@ static void sisDDColorMask( GLcontext *ctx,
       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 +542,6 @@ void sisDDDrawBuffer( GLcontext *ctx, GLenum mode )
    }
 }
 
-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
  */
@@ -713,27 +700,6 @@ sisUpdateHWState( GLcontext *ctx )
       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 );
 
@@ -808,11 +774,11 @@ void sisDDInitState( sisContextPtr smesa )
    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)
    {
@@ -892,7 +858,7 @@ void sisDDInitStateFuncs( GLcontext *ctx )
    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 49ecdfa1bae7e1c7802bb07d55b637c5228a316c..b7251157fbe5fb4b09a2d8a1e771decdc67d82e4 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 3d7a1d5e6aa0490cf6dd13fd31fa8b5808934923..a31d49ca270321b77aefc8fff9811db2e7e43455 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
index 01d4cb6ef27beda7d68f7554c3dca60a0bbfde5d..db6098ff0498f377bf31db170a0314a4be741e02 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 52080b7037e98b5a25e07a366affd133ca38f026..6056e9293cc19bde15bed187eed3205b7d0e6a09 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 188cce5a50fa48d606dcad2f003cb3472b0fdae3..b2f2ba0cbd65bab84fc080714c8b94de63d6d728 100644 (file)
@@ -17,10 +17,9 @@ 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
-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$ */
index 23f72589a7e2dd3e4f5754281777af5b3a3cac2a..001eb18a140a6f6c1ba02a7b5e91c6feb2f2ff94 100644 (file)
@@ -18,7 +18,7 @@ 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
-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.
@@ -60,11 +60,6 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj,
 
    sisTexObjPtr t = texObj->DriverData;
 
-   /*
-   current->hwTexBlendClr0 = RGB_STAGE1; 
-   current->hwTexBlendAlpha0 = A_STAGE1;
-   */
-
    switch (texture_unit->EnvMode)
    {
    case GL_REPLACE:
@@ -72,19 +67,19 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -94,19 +89,19 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -116,12 +111,12 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -137,34 +132,34 @@ sis_set_texture_env0( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
    }
@@ -184,11 +179,6 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj,
 
    sisTexObjPtr t = texObj->DriverData;
 
-   /*
-   current->hwTexBlendClr1 = RGB_STAGE1; current->hwTexBlendAlpha1 =
-   A_STAGE1;
-   */
-
    switch (texture_unit->EnvMode)
    {
    case GL_REPLACE:
@@ -196,19 +186,19 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -218,19 +208,19 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -240,12 +230,12 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -261,33 +251,33 @@ sis_set_texture_env1( GLcontext *ctx, struct gl_texture_object *texObj,
       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;
@@ -562,27 +552,27 @@ sis_reset_texture_env (GLcontext *ctx, int hw_unit)
 
    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;
index d76431f41d289eb02fcd94b01e5c3b1375b468b9..4877e346503370937f493afb3055e28ef31783b8 100644 (file)
@@ -19,7 +19,7 @@ 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
-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.
@@ -943,7 +943,7 @@ void sisInitTriFuncs( GLcontext *ctx )
    tnl->Driver.Render.BuildVertices = sisBuildVertices;
    tnl->Driver.Render.Multipass                = NULL;
 
-   if (getenv("SIS_FORCE_FALLBACK") != NULL)
+   if (driQueryOptionb(&smesa->optionCache, "fallback_force"))
       sisFallback(ctx, SIS_FALLBACK_FORCE, 1);
    else
       sisFallback(ctx, SIS_FALLBACK_FORCE, 0);
index 775c1072a772d384f92508acb490de69381de5c6..d0ca7c12c0e4e105dfc10071feb58cf6fe66aa38 100644 (file)
@@ -18,10 +18,9 @@ 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
-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 50564412a0a9b2ae19f756ff5c8db834e55aaa59..77596585430ccac83ecb5b4d4f059c159a7e3744 100644 (file)
@@ -18,10 +18,9 @@ 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
-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 5c17bd3801af7831ce6630ab85083d0d06176dd7..620c1d6f105e42f5b62a9f9bf272ae852db94646 100644 (file)
@@ -18,10 +18,9 @@ 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
-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 8efdcf26b6d0493f29213843481f9e6a5fdd4f26..68965298876bfdff652b7d76efb0db37960d0446 100644 (file)
@@ -18,10 +18,9 @@ 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
-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.
 
 **************************************************************************/