Chop out more dead code.
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 23 Dec 2004 18:16:22 +0000 (18:16 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 23 Dec 2004 18:16:22 +0000 (18:16 +0000)
Get the drawXoff adjustment working a bit better.
Seems to pass the glean orthoPos tests.

12 files changed:
src/mesa/drivers/dri/unichrome/via_common.h
src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_context.h
src/mesa/drivers/dri/unichrome/via_ioctl.c
src/mesa/drivers/dri/unichrome/via_ioctl.h
src/mesa/drivers/dri/unichrome/via_render.c
src/mesa/drivers/dri/unichrome/via_state.c
src/mesa/drivers/dri/unichrome/via_state.h
src/mesa/drivers/dri/unichrome/via_texmem.c
src/mesa/drivers/dri/unichrome/via_texstate.c
src/mesa/drivers/dri/unichrome/via_tris.c
src/mesa/drivers/dri/unichrome/via_vb.c

index 58eafc91032629003818e31fc5bc9dce51d309e0..52d25c786e8fcc58360eab4b5e53cbb7caad129a 100644 (file)
 #define VIA_LOG_MIN_TEX_REGION_SIZE 16
 #endif
 
-#define VIA_UPLOAD_TEX0IMAGE  0x1
-#define VIA_UPLOAD_TEX1IMAGE  0x2
-#define VIA_UPLOAD_CTX        0x4
-#define VIA_UPLOAD_BUFFERS    0x8
-#define VIA_UPLOAD_TEX0       0x10
-#define VIA_UPLOAD_TEX1       0x20
-#define VIA_UPLOAD_CLIPRECTS  0x40
-/*#define VIA_UPLOAD_ALL        0xff*/
 
 /* VIA specific ioctls */
 #define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(0x40, drm_via_mem_t)
index bb1dfdd6ca462385c6c45bce061601bf3a61ac9f..7c4cec8a2dca94b8398b8baa3a8ac91a3fca225b 100644 (file)
@@ -352,7 +352,6 @@ InitVertexBuffer(viaContextPtr vmesa)
     vmesa->dmaLow = DMA_OFFSET;
     vmesa->dmaHigh = VIA_DMA_BUFSIZ;
     vmesa->dmaAddr = (unsigned char *)vmesa->dma;
-    vmesa->dmaLastPrim = vmesa->dmaLow;
 }
 
 static void
@@ -415,14 +414,14 @@ viaCreateContext(const __GLcontextModes *mesaVis,
        vmesa->hasDepth = GL_TRUE;
        vmesa->depthBits = mesaVis->depthBits;
        vmesa->have_hw_stencil = GL_FALSE;
-       vmesa->depth_scale = 1.0/0xffff;
+       vmesa->depth_max = (GLfloat)0xffff;
        vmesa->depth_clear_mask = 0xf << 28;
        vmesa->ClearDepth = 0xffff;
        break;
     case 24:
        vmesa->hasDepth = GL_TRUE;
        vmesa->depthBits = mesaVis->depthBits;
-       vmesa->depth_scale = 1.0/0xffffff;
+       vmesa->depth_max = (GLfloat) 0xffffff;
        vmesa->depth_clear_mask = 0xe << 28;
        vmesa->ClearDepth = 0xffffff00;
 
@@ -438,7 +437,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
        vmesa->depthBits = mesaVis->depthBits;
        assert(!mesaVis->haveStencilBuffer);
        vmesa->have_hw_stencil = GL_FALSE;
-       vmesa->depth_scale = 1.0/0xffffffff;
+       vmesa->depth_max = (GLfloat)0xffffffff;
        vmesa->depth_clear_mask = 0;
        vmesa->ClearDepth = 0xffffffff;
        vmesa->depth_clear_mask = 0xf << 28;
@@ -470,7 +469,7 @@ viaCreateContext(const __GLcontextModes *mesaVis,
 
     ctx = vmesa->glCtx;
     
-    ctx->Const.MaxTextureLevels = 11;    
+    ctx->Const.MaxTextureLevels = 10;    
     ctx->Const.MaxTextureUnits = 2;
     ctx->Const.MaxTextureImageUnits = ctx->Const.MaxTextureUnits;
     ctx->Const.MaxTextureCoordUnits = ctx->Const.MaxTextureUnits;
@@ -528,8 +527,6 @@ viaCreateContext(const __GLcontextModes *mesaVis,
     vmesa->texHeap = mmInit(0, viaScreen->textureSize);
     vmesa->stippleInHw = 1;
     vmesa->renderIndex = ~0;
-    vmesa->dirty = VIA_UPLOAD_ALL;
-    vmesa->uploadCliprects = GL_TRUE;
     vmesa->needUploadAllState = 1;
 
     make_empty_list(&vmesa->TexObjList);
@@ -665,8 +662,12 @@ void viaXMesaSetFrontClipRects(viaContextPtr vmesa)
     vmesa->drawW = dPriv->w;
     vmesa->drawH = dPriv->h;
 
-    viaEmitDrawingRectangle(vmesa);
-    vmesa->uploadCliprects = GL_TRUE;
+    {
+       GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3;
+       vmesa->drawXoff = (GLuint)(((vmesa->drawX * bytePerPixel) & 0x1f) / bytePerPixel);  
+    }
+
+    viaCalcViewport(vmesa->glCtx);
 }
 
 void viaXMesaSetBackClipRects(viaContextPtr vmesa)
@@ -683,14 +684,16 @@ void viaXMesaSetBackClipRects(viaContextPtr vmesa)
    vmesa->drawY = dPriv->y;
    vmesa->drawW = dPriv->w;
    vmesa->drawH = dPriv->h;
-   viaEmitDrawingRectangle(vmesa);
-   vmesa->uploadCliprects = GL_TRUE;
+
+
+   vmesa->drawXoff = 0; 
+
+    viaCalcViewport(vmesa->glCtx);
 }
 
 void viaXMesaWindowMoved(viaContextPtr vmesa)
 {
-    GLuint bytePerPixel = vmesa->viaScreen->bitsPerPixel >> 3;
-    
+
     switch (vmesa->glCtx->Color._DrawDestMask[0]) {
     case DD_FRONT_LEFT_BIT: 
         viaXMesaSetFrontClipRects(vmesa);
@@ -703,23 +706,6 @@ void viaXMesaWindowMoved(viaContextPtr vmesa)
         break;
     }
 
-    vmesa->viaScreen->fbOffset = 0;
-
-    {
-       GLuint pitch, offset;
-       pitch = vmesa->front.pitch;
-       offset = vmesa->viaScreen->fbOffset + (vmesa->drawY * pitch + vmesa->drawX * bytePerPixel);
-       assert(vmesa->viaScreen->fbOffset % bytePerPixel == 0);
-       assert(pitch % bytePerPixel == 0);
-
-       /* KW: I don't know what this was, but it was giving incorrect
-        * results for backbuffer rendering:
-        */
-/*     vmesa->drawXoff = (GLuint)(((vmesa->drawX * bytePerPixel) & 0x1f) / bytePerPixel);  */
-       vmesa->drawXoff = 0;
-    }
-    
-    viaCalcViewport(vmesa->glCtx);
 }
 
 GLboolean
@@ -796,7 +782,6 @@ void viaGetLock(viaContextPtr vmesa, GLuint flags)
     DRI_VALIDATE_DRAWABLE_INFO( sPriv, dPriv );
 
     if (sarea->ctxOwner != me) {
-        vmesa->uploadCliprects = GL_TRUE;
         sarea->ctxOwner = me;
        vmesa->needUploadAllState = 1;
     }
index 187b81154fedd71be15cdf5c79552c6d6948bc39..2e815685bcde257a789d5a1c14ff6aea46084879 100644 (file)
@@ -52,22 +52,6 @@ typedef struct via_texture_object_t *viaTextureObjectPtr;
 #define VIA_FALLBACK_BLEND_FUNC                0x400
 #define VIA_FALLBACK_USER_DISABLE              0x800
 
-#define VIA_UPLOAD_NONE                        0x0000
-#define VIA_UPLOAD_ALPHATEST           0x0001
-#define VIA_UPLOAD_BLEND               0x0002
-#define VIA_UPLOAD_FOG                         0x0004
-#define VIA_UPLOAD_MASK_ROP            0x0008
-#define VIA_UPLOAD_LINESTIPPLE         0x0010
-#define VIA_UPLOAD_POLYGONSTIPPLE      0x0020
-#define VIA_UPLOAD_DEPTH               0x0040
-#define VIA_UPLOAD_TEXTURE             0x0080
-#define VIA_UPLOAD_STENCIL             0x0100
-#define VIA_UPLOAD_CLIPPING            0x0200
-#define VIA_UPLOAD_DESTBUFFER          0x0400
-#define VIA_UPLOAD_DEPTHBUFFER         0x0800
-#define VIA_UPLOAD_ENABLE              0x0800
-#define VIA_UPLOAD_ALL                         0x1000
-               
 #define VIA_DMA_BUFSIZ                  500000
 
 /* Use the templated vertex formats:
@@ -119,7 +103,7 @@ struct via_context_t {
    GLuint ClearDepth;
    GLuint depth_clear_mask;
    GLuint stencil_clear_mask;
-   GLfloat depth_scale;
+   GLfloat depth_max;
 
     GLuint    *dma;
     viaRegion tex;
@@ -162,8 +146,6 @@ struct via_context_t {
     GLuint dmaLastPrim;
     GLboolean useAgp;
    
-    GLboolean uploadCliprects;
-
     GLuint needUploadAllState;
     GLuint primitiveRendered;
     
@@ -403,12 +385,6 @@ extern hash_element hash_table[HASH_TABLE_SIZE][HASH_TABLE_DEPTH];
            break;                                                              \
     } while (1)
        
-#define LOCK_HARDWARE_QUIESCENT(vmesa)          \
-    do {                                        \
-        LOCK_HARDWARE(vmesa);                   \
-        viaRegetLockQuiescent(vmesa);           \
-    } while (0)
-
 
 #ifdef DEBUG
 extern GLuint VIA_DEBUG;
@@ -422,7 +398,6 @@ extern void viaLock(viaContextPtr vmesa, GLuint flags);
 extern void viaUnLock(viaContextPtr vmesa, GLuint flags);
 extern void viaEmitHwStateLocked(viaContextPtr vmesa);
 extern void viaEmitScissorValues(viaContextPtr vmesa, int box_nr, int emit);
-extern void viaEmitDrawingRectangle(viaContextPtr vmesa);
 extern void viaXMesaSetBackClipRects(viaContextPtr vmesa);
 extern void viaXMesaSetFrontClipRects(viaContextPtr vmesa);
 extern void viaReAllocateBuffers(GLframebuffer *drawbuffer);
@@ -431,8 +406,8 @@ extern void viaXMesaWindowMoved(viaContextPtr vmesa);
 extern void viaTexCombineState(viaContextPtr vmesa,
     const struct gl_tex_env_combine_state * combine, unsigned unit );
 
-#define SUBPIXEL_X -.5
-#define SUBPIXEL_Y -.5
+#define SUBPIXEL_X 0
+#define SUBPIXEL_Y 0
 
 /* TODO XXX _SOLO temp defines to make code compilable */
 #ifndef GLX_PBUFFER_BIT
index fc1b0327d932bccd023d383d10c2e3f092d6fd88..aacd784ea52eea6a330b2a71aa968e2f846f4f66 100644 (file)
@@ -195,7 +195,6 @@ static void viaClear(GLcontext *ctx, GLbitfield mask, GLboolean all,
       }                
 
       UNLOCK_HARDWARE(vmesa);
-      vmesa->uploadCliprects = GL_TRUE;
    }
    
    if (mask)
@@ -251,7 +250,6 @@ void viaCopyBuffer(const __DRIdrawablePrivate *dPriv)
       }
    }
    UNLOCK_HARDWARE(vmesa);
-   vmesa->uploadCliprects = GL_TRUE;
 
    vmesa->swap_count++;
    (*vmesa->get_ust)( & ust );
@@ -349,7 +347,6 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
     }
     
     UNLOCK_HARDWARE(vmesa);
-    vmesa->uploadCliprects = GL_TRUE;
 
     vmesa->swap_count++;
     (void) (*vmesa->get_ust)( &vmesa->swap_ust );
@@ -380,22 +377,6 @@ void viaPageFlip(const __DRIdrawablePrivate *dPriv)
 
 }
 
-/* This waits for *everybody* to finish rendering -- overkill.
- */
-void viaDmaFinish(viaContextPtr vmesa)
-{
-    if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);        
-    VIA_FIREVERTICES(vmesa);
-    LOCK_HARDWARE(vmesa);
-    UNLOCK_HARDWARE(vmesa);
-    if (VIA_DEBUG) fprintf(stderr, "%s out\n", __FUNCTION__);    
-}
-
-void viaRegetLockQuiescent(viaContextPtr vmesa)
-{
-    drmUnlock(vmesa->driFd, vmesa->hHWContext);
-}
-
 static int intersect_rect(drm_clip_rect_t *out,
                           drm_clip_rect_t *a,
                           drm_clip_rect_t *b)
@@ -479,15 +460,11 @@ void viaFlushPrimsLocked(viaContextPtr vmesa)
       sysCmd.size = 0;
    }
    else if (nbox > VIA_NR_SAREA_CLIPRECTS) {
-      vmesa->uploadCliprects = GL_TRUE;
+      /* XXX: not handled ? */
    }
 
-   if (!nbox || !vmesa->uploadCliprects) {
-      if (nbox == 1)
-        sarea->nbox = 0;
-      else
-        sarea->nbox = nbox;
-
+   if (!nbox) {
+      sarea->nbox = 0;
       sysCmd.discard = 1;
       flush_sys(vmesa, &sysCmd);
    }
@@ -546,7 +523,6 @@ void viaFlushPrimsLocked(viaContextPtr vmesa)
    vmesa->dmaLow = DMA_OFFSET;
    vmesa->dmaAddr = (unsigned char *)vmesa->dma;
    vmesa->dmaHigh = VIA_DMA_BUFSIZ;
-   vmesa->dmaLastPrim = DMA_OFFSET;
 }
 
 void viaFlushPrims(viaContextPtr vmesa)
@@ -763,7 +739,11 @@ void viaFillDepthBuffer(viaContextPtr vmesa, GLuint pixel, GLuint mask)
        fprintf(stderr, "Fill Depth offset = %08x, pixel %x, mask %x\n", offset, pixel, mask);
     nDestBase = offset;
     nDestPitch = vmesa->depth.pitch;
-    offsetX = vmesa->drawXoff;
+    
+    /* KW: bogus offset? */
+/*     offsetX = vmesa->drawXoff; */
+    offsetX = 0;
+
     nDestWidth = (vmesa->depth.pitch / vmesa->depth.bpp * 8) - offsetX;
     nDestHeight = vmesa->driDrawable->h;
 
@@ -906,7 +886,9 @@ int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf)
        }
        else {
            *vb++ = ((HC_SubA_HClipTB << 24) | (0x0 << 12) | vmesa->driDrawable->h);
-           *vb++ = ((HC_SubA_HClipLR << 24) | (vmesa->drawXoff << 12) | (vmesa->driDrawable->w + vmesa->drawXoff));
+           /* KW: drawXoff known zero */
+/*         *vb++ = ((HC_SubA_HClipLR << 24) | (vmesa->drawXoff << 12) | (vmesa->driDrawable->w + vmesa->drawXoff)); */
+           *vb++ = ((HC_SubA_HClipLR << 24) | vmesa->driDrawable->w); 
        }
        
        /*=* John Sheng [2003.6.16] fix pci path *=*/
index fec13c9362de9fa163fd46f3de7fe3f7b7a298aa..627d8ad8f2b994186d81782690f20932b1d4a913 100644 (file)
@@ -32,8 +32,6 @@ void viaEmitPrim(viaContextPtr vmesa);
 void viaFlushPrims(viaContextPtr vmesa);
 void viaFlushPrimsLocked(viaContextPtr vmesa);
 
-void viaDmaFinish(viaContextPtr vmesa);
-void viaRegetLockQuiescent(viaContextPtr vmesa);
 void viaInitIoctlFuncs(GLcontext *ctx);
 void viaCopyBuffer(const __DRIdrawablePrivate *dpriv);
 void viaPageFlip(const __DRIdrawablePrivate *dpriv);
@@ -48,17 +46,9 @@ void viaDoSwapPBuffers(viaContextPtr vmesa);
 int flush_agp(viaContextPtr vmesa, drm_via_flush_agp_t* agpCmd); 
 int flush_sys(viaContextPtr vmesa, drm_via_flush_sys_t* buf); 
 
-#define VIA_STATECHANGE(vmesa, flag)                            \
-    do {                                                        \
-        if (vmesa->dmaLow != vmesa->dmaLastPrim)                \
-            viaFlushPrims(vmesa);                               \
-        vmesa->dirty |= flag;                                   \
-    } while (0)                                                 \
-
-
 #define VIA_FIREVERTICES(vmesa)                                 \
     do {                                                        \
-        if (vmesa->dmaLow) {                                    \
+        if (vmesa->dmaLow != DMA_OFFSET) {                      \
             viaFlushPrims(vmesa);                               \
         }                                                       \
     } while (0)
index 1ea5a53cc5d3f0429d96f9836aaef8650f3d573b..9c97d1981c16e3cff50aaf692df1a97f6649a618 100644 (file)
@@ -96,7 +96,7 @@ static void VERT_FALLBACK(GLcontext *ctx,
 /*
 #define INIT(prim)                                                          \
     do {                                                                    \
-        VIA_STATECHANGE(vmesa, 0);                                          \
+        VIA_FIREVERTICES(vmesa);                                          \
         viaRasterPrimitive(ctx, reducedPrim[prim], prim);                   \
     } while (0)
 */
@@ -104,7 +104,7 @@ static void VERT_FALLBACK(GLcontext *ctx,
     do {                                                                    \
         viaRasterPrimitive(ctx, reducedPrim[prim], prim);                   \
     } while (0)
-#define NEW_PRIMITIVE()  VIA_STATECHANGE(vmesa, 0)
+#define NEW_PRIMITIVE()  VIA_FIREVERTICES(vmesa)
 #define NEW_BUFFER()  VIA_FIREVERTICES(vmesa)
 #define GET_CURRENT_VB_MAX_VERTS() \
     (((int)vmesa->dmaHigh - (int)vmesa->dmaLow) / (vmesa->vertexSize * 4))
@@ -445,16 +445,7 @@ static GLboolean via_run_render(GLcontext *ctx,
     }
     while (tnl->Driver.Render.Multipass && tnl->Driver.Render.Multipass(ctx, ++pass));
     tnl->Driver.Render.Finish(ctx);
-    
-    /*=* DBG - flush : if hw idel *=*/
-    /*{
-        GLuint volatile *pnEnginStatus = vmesa->regEngineStatus;
-       GLuint nStatus;
-        nStatus = *pnEnginStatus;
-       if ((nStatus & 0xFFFEFFFF) == 0x00020000)
-           viaFlushPrims(vmesa);
-    }*/
-    
+        
     /*=* DBG viewperf7.0 : fix command buffer overflow *=*/
     if (vmesa->dmaLow > (VIA_DMA_BUFSIZ / 2))
        viaFlushPrims(vmesa);
index bb06b327bb3dc73eab000c144a17f48e14cb5062..aef23ff6911bca92fd7ebfec50d3f8cb451625de 100644 (file)
@@ -82,12 +82,6 @@ static __inline__ GLuint viaPackColor(GLuint format,
    }
 }
 
-static void viaAlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;
-}
-
 static void viaBlendEquationSeparate(GLcontext *ctx, GLenum rgbMode, GLenum aMode)
 {
     if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
@@ -112,16 +106,9 @@ static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor)
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     GLboolean fallback = GL_FALSE;
     if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
+
     switch (ctx->Color.BlendSrcRGB) {
-    case GL_ZERO:                break;
-    case GL_SRC_ALPHA:           break;
-    case GL_ONE:                 break;
-    case GL_DST_COLOR:           break;
-    case GL_ONE_MINUS_DST_COLOR: break;
-    case GL_ONE_MINUS_SRC_ALPHA: break;
-    case GL_DST_ALPHA:           break;
-    case GL_ONE_MINUS_DST_ALPHA: break;
-    case GL_SRC_ALPHA_SATURATE:  /*a |= SDM_SRC_SRC_ALPHA; break;*/
+    case GL_SRC_ALPHA_SATURATE:  
     case GL_CONSTANT_COLOR:
     case GL_ONE_MINUS_CONSTANT_COLOR:
     case GL_CONSTANT_ALPHA:
@@ -129,18 +116,10 @@ static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor)
         fallback = GL_TRUE;
         break;
     default:
-        return;
+        break;
     }
 
     switch (ctx->Color.BlendDstRGB) {
-    case GL_SRC_ALPHA:           break;
-    case GL_ONE_MINUS_SRC_ALPHA: break;
-    case GL_ZERO:                break;
-    case GL_ONE:                 break;
-    case GL_SRC_COLOR:           break;
-    case GL_ONE_MINUS_SRC_COLOR: break;
-    case GL_DST_ALPHA:           break;
-    case GL_ONE_MINUS_DST_ALPHA: break;
     case GL_CONSTANT_COLOR:
     case GL_ONE_MINUS_CONSTANT_COLOR:
     case GL_CONSTANT_ALPHA:
@@ -148,7 +127,7 @@ static void viaBlendFunc(GLcontext *ctx, GLenum sfactor, GLenum dfactor)
         fallback = GL_TRUE;
         break;
     default:
-        return;
+        break;
     }
 
     FALLBACK(vmesa, VIA_FALLBACK_BLEND_FUNC, fallback);
@@ -169,23 +148,6 @@ static void viaBlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB,
 }
 
 
-static void viaDepthFunc(GLcontext *ctx, GLenum func)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;
-}
-
-static void viaDepthMask(GLcontext *ctx, GLboolean flag)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-static void viaPolygonStipple(GLcontext *ctx, const GLubyte *mask)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
 
 
 /* =============================================================
@@ -203,7 +165,6 @@ static void viaScissor(GLcontext *ctx, GLint x, GLint y,
 
     if (ctx->Scissor.Enabled) {
         VIA_FIREVERTICES(vmesa); /* don't pipeline cliprect changes */
-        vmesa->uploadCliprects = GL_TRUE;
     }
 
     vmesa->scissorRect.x1 = x;
@@ -214,21 +175,12 @@ static void viaScissor(GLcontext *ctx, GLint x, GLint y,
 }
 
 
-static void viaLogicOp(GLcontext *ctx, GLenum opcode)
-{
-    if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
-    if (VIA_DEBUG) fprintf(stderr, "opcode = %x\n", opcode);
-    if (VIA_DEBUG) fprintf(stderr, "%s out\n", __FUNCTION__);
-}
 
 /* Fallback to swrast for select and feedback.
  */
 static void viaRenderMode(GLcontext *ctx, GLenum mode)
 {
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
-    FALLBACK(vmesa, VIA_FALLBACK_RENDERMODE, (mode != GL_RENDER));
-    if (VIA_DEBUG) fprintf(stderr, "%s out\n", __FUNCTION__);
+    FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_RENDERMODE, (mode != GL_RENDER));
 }
 
 
@@ -238,7 +190,6 @@ static void viaDrawBuffer(GLcontext *ctx, GLenum mode)
     if (VIA_DEBUG) fprintf(stderr, "%s in\n", __FUNCTION__);
     if (mode == GL_FRONT) {
         VIA_FIREVERTICES(vmesa);
-        VIA_STATECHANGE(vmesa, VIA_UPLOAD_BUFFERS);
         vmesa->drawMap = (char *)vmesa->driScreen->pFB;
         vmesa->readMap = (char *)vmesa->driScreen->pFB;
        vmesa->drawPitch = vmesa->front.pitch;
@@ -249,7 +200,6 @@ static void viaDrawBuffer(GLcontext *ctx, GLenum mode)
     }
     else if (mode == GL_BACK) {
         VIA_FIREVERTICES(vmesa);
-        VIA_STATECHANGE(vmesa, VIA_UPLOAD_BUFFERS);
         vmesa->drawMap = vmesa->back.map;
         vmesa->readMap = vmesa->back.map;
        vmesa->drawPitch = vmesa->back.pitch;
@@ -276,119 +226,19 @@ static void viaClearColor(GLcontext *ctx, const GLfloat color[4])
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     GLubyte pcolor[4];
-    pcolor[0] = (GLubyte) (255 * color[0]);
-    pcolor[1] = (GLubyte) (255 * color[1]);
-    pcolor[2] = (GLubyte) (255 * color[2]);
-    pcolor[3] = (GLubyte) (255 * color[3]);
+    CLAMPED_FLOAT_TO_UBYTE(pcolor[0], color[0]);
+    CLAMPED_FLOAT_TO_UBYTE(pcolor[1], color[1]);
+    CLAMPED_FLOAT_TO_UBYTE(pcolor[2], color[2]);
+    CLAMPED_FLOAT_TO_UBYTE(pcolor[3], color[3]);
     vmesa->ClearColor = viaPackColor(vmesa->viaScreen->bitsPerPixel,
                                      pcolor[0], pcolor[1],
                                      pcolor[2], pcolor[3]);
        
 }
 
-/* =============================================================
- * Culling - the via isn't quite as clean here as the rest of
- *           its interfaces, but it's not bad.
- */
-static void viaCullFaceFrontFace(GLcontext *ctx, GLenum unused)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-static void viaLineWidth(GLcontext *ctx, GLfloat widthf)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-static void viaPointSize(GLcontext *ctx, GLfloat sz)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
 
 /* =============================================================
- * Color masks
  */
-static void viaColorMask(GLcontext *ctx,
-                         GLboolean r, GLboolean g,
-                         GLboolean b, GLboolean a)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-/* Seperate specular not fully implemented on the via.
- */
-static void viaLightModelfv(GLcontext *ctx, GLenum pname,
-                            const GLfloat *param)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-
-/* In Mesa 3.5 we can reliably do native flatshading.
- */
-static void viaShadeModel(GLcontext *ctx, GLenum mode)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-/* =============================================================
- * Fog
- */
-static void viaFogfv(GLcontext *ctx, GLenum pname, const GLfloat *param)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-/* =============================================================
- */
-static void viaEnable(GLcontext *ctx, GLenum cap, GLboolean state)
-{
-    viaContextPtr vmesa = VIA_CONTEXT(ctx);
-    vmesa = vmesa;    
-}
-
-/* =============================================================
- */
-void viaEmitDrawingRectangle(viaContextPtr vmesa)
-{
-    __DRIdrawablePrivate *dPriv = vmesa->driDrawable;
-    viaScreenPrivate *viaScreen = vmesa->viaScreen;
-    int x0 = vmesa->drawX;
-    int y0 = vmesa->drawY;
-    int x1 = x0 + dPriv->w;
-    int y1 = y0 + dPriv->h;
-/*    GLuint dr2, dr3, dr4;
-*/
-
-    /* Coordinate origin of the window - may be offscreen.
-     */
-/*   dr4 = vmesa->BufferSetup[VIA_DESTREG_DR4] = ((y0 << 16) |
-                                                  (((unsigned)x0) & 0xFFFF));
-*/                                
-
-    /* Clip to screen.
-     */
-    if (x0 < 0) x0 = 0;
-    if (y0 < 0) y0 = 0;
-    if (x1 > viaScreen->width - 1) x1 = viaScreen->width - 1;
-    if (y1 > viaScreen->height - 1) y1 = viaScreen->height - 1;
-
-    /* Onscreen drawing rectangle.
-     */
-/*   dr2 = vmesa->BufferSetup[VIA_DESTREG_DR2] = ((y0 << 16) | x0);
-    dr3 = vmesa->BufferSetup[VIA_DESTREG_DR3] = (((y1 + 1) << 16) | (x1 + 1));
-*/  
-
-    vmesa->dirty |= VIA_UPLOAD_BUFFERS;
-}
 
 
 void viaCalcViewport(GLcontext *ctx)
@@ -397,15 +247,14 @@ void viaCalcViewport(GLcontext *ctx)
     const GLfloat *v = ctx->Viewport._WindowMap.m;
     GLfloat *m = vmesa->ViewportMatrix.m;
     
-    /* See also via_translate_vertex.  SUBPIXEL adjustments can be done
-     * via state vars, too.
+    /* See also via_translate_vertex.
      */
-    m[MAT_SX] =  v[MAT_SX];
-    m[MAT_TX] =  v[MAT_TX] + vmesa->drawXoff;
+    m[MAT_SX] =   v[MAT_SX];
+    m[MAT_TX] =   v[MAT_TX] + SUBPIXEL_X + vmesa->drawXoff;
     m[MAT_SY] = - v[MAT_SY];
-    m[MAT_TY] = - v[MAT_TY] + vmesa->driDrawable->h;
-    m[MAT_SZ] =  v[MAT_SZ] * vmesa->depth_scale;
-    m[MAT_TZ] =  v[MAT_TZ] * vmesa->depth_scale;
+    m[MAT_TY] = - v[MAT_TY] + vmesa->driDrawable->h + SUBPIXEL_Y;
+    m[MAT_SZ] =   v[MAT_SZ] * (1.0 / vmesa->depth_max);
+    m[MAT_TZ] =   v[MAT_TZ] * (1.0 / vmesa->depth_max);
 }
 
 static void viaViewport(GLcontext *ctx,
@@ -423,19 +272,6 @@ static void viaDepthRange(GLcontext *ctx,
     viaCalcViewport(ctx);
 }
 
-void viaPrintDirty(const char *msg, GLuint state)
-{
-    if (VIA_DEBUG)
-       fprintf(stderr, "%s (0x%x): %s%s%s%s\n",
-            msg,
-            (unsigned int) state,
-            (state & VIA_UPLOAD_TEX0)   ? "upload-tex0, " : "",
-            (state & VIA_UPLOAD_TEX1)   ? "upload-tex1, " : "",
-            (state & VIA_UPLOAD_CTX)    ? "upload-ctx, " : "",
-            (state & VIA_UPLOAD_BUFFERS)    ? "upload-bufs, " : ""
-            );
-}
-
 
 void viaInitState(GLcontext *ctx)
 {
@@ -447,12 +283,6 @@ void viaInitState(GLcontext *ctx)
 
    /* Mesa should do this for us:
     */
-   ctx->Driver.AlphaFunc( ctx, 
-                         ctx->Color.AlphaFunc,
-                         ctx->Color.AlphaRef);
-
-/*    ctx->Driver.BlendColor( ctx, */
-/*                        ctx->Color.BlendColor ); */
 
    ctx->Driver.BlendEquationSeparate( ctx, 
                                      ctx->Color.BlendEquationRGB,
@@ -464,65 +294,8 @@ void viaInitState(GLcontext *ctx)
                                  ctx->Color.BlendSrcA,
                                  ctx->Color.BlendDstA);
 
-   ctx->Driver.ColorMask( ctx, 
-                         ctx->Color.ColorMask[RCOMP],
-                         ctx->Color.ColorMask[GCOMP],
-                         ctx->Color.ColorMask[BCOMP],
-                         ctx->Color.ColorMask[ACOMP]);
-
-   ctx->Driver.CullFace( ctx, ctx->Polygon.CullFaceMode );
-   ctx->Driver.DepthFunc( ctx, ctx->Depth.Func );
-   ctx->Driver.DepthMask( ctx, ctx->Depth.Mask );
-
-   ctx->Driver.Enable( ctx, GL_ALPHA_TEST, ctx->Color.AlphaEnabled );
-   ctx->Driver.Enable( ctx, GL_BLEND, ctx->Color.BlendEnabled );
-   ctx->Driver.Enable( ctx, GL_COLOR_LOGIC_OP, ctx->Color.ColorLogicOpEnabled );
-   ctx->Driver.Enable( ctx, GL_COLOR_SUM, ctx->Fog.ColorSumEnabled );
-   ctx->Driver.Enable( ctx, GL_CULL_FACE, ctx->Polygon.CullFlag );
-   ctx->Driver.Enable( ctx, GL_DEPTH_TEST, ctx->Depth.Test );
-   ctx->Driver.Enable( ctx, GL_DITHER, ctx->Color.DitherFlag );
-   ctx->Driver.Enable( ctx, GL_FOG, ctx->Fog.Enabled );
-   ctx->Driver.Enable( ctx, GL_LIGHTING, ctx->Light.Enabled );
-   ctx->Driver.Enable( ctx, GL_LINE_SMOOTH, ctx->Line.SmoothFlag );
-   ctx->Driver.Enable( ctx, GL_POLYGON_STIPPLE, ctx->Polygon.StippleFlag );
-   ctx->Driver.Enable( ctx, GL_SCISSOR_TEST, ctx->Scissor.Enabled );
-   ctx->Driver.Enable( ctx, GL_STENCIL_TEST, ctx->Stencil.Enabled );
-   ctx->Driver.Enable( ctx, GL_TEXTURE_1D, GL_FALSE );
-   ctx->Driver.Enable( ctx, GL_TEXTURE_2D, GL_FALSE );
-   ctx->Driver.Enable( ctx, GL_TEXTURE_RECTANGLE_NV, GL_FALSE );
-   ctx->Driver.Enable( ctx, GL_TEXTURE_3D, GL_FALSE );
-   ctx->Driver.Enable( ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE );
-
-   ctx->Driver.Fogfv( ctx, GL_FOG_COLOR, ctx->Fog.Color );
-   ctx->Driver.Fogfv( ctx, GL_FOG_MODE, 0 );
-   ctx->Driver.Fogfv( ctx, GL_FOG_DENSITY, &ctx->Fog.Density );
-   ctx->Driver.Fogfv( ctx, GL_FOG_START, &ctx->Fog.Start );
-   ctx->Driver.Fogfv( ctx, GL_FOG_END, &ctx->Fog.End );
-
-   ctx->Driver.FrontFace( ctx, ctx->Polygon.FrontFace );
-
-   {
-      GLfloat f = (GLfloat)ctx->Light.Model.ColorControl;
-      ctx->Driver.LightModelfv( ctx, GL_LIGHT_MODEL_COLOR_CONTROL, &f );
-   }
-
-   ctx->Driver.LineWidth( ctx, ctx->Line.Width );
-   ctx->Driver.LogicOpcode( ctx, ctx->Color.LogicOp );
-   ctx->Driver.PointSize( ctx, ctx->Point.Size );
-   ctx->Driver.PolygonStipple( ctx, (const GLubyte *)ctx->PolygonStipple );
    ctx->Driver.Scissor( ctx, ctx->Scissor.X, ctx->Scissor.Y,
                        ctx->Scissor.Width, ctx->Scissor.Height );
-   ctx->Driver.ShadeModel( ctx, ctx->Light.ShadeModel );
-/*    ctx->Driver.StencilFunc( ctx,  */
-/*                         ctx->Stencil.Function[0], */
-/*                         ctx->Stencil.Ref[0], */
-/*                         ctx->Stencil.ValueMask[0] ); */
-/*    ctx->Driver.StencilMask( ctx, ctx->Stencil.WriteMask[0] ); */
-/*    ctx->Driver.StencilOp( ctx,  */
-/*                       ctx->Stencil.FailFunc[0], */
-/*                       ctx->Stencil.ZFailFunc[0], */
-/*                       ctx->Stencil.ZPassFunc[0]); */
-
 
    ctx->Driver.DrawBuffer( ctx, ctx->Color.DrawBuffer[0] );
 }
@@ -566,7 +339,7 @@ get_wrap_mode( GLenum sWrap, GLenum tWrap )
 }
 
 
-void viaChooseTextureState(GLcontext *ctx) 
+static void viaChooseTextureState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     struct gl_texture_unit *texUnit0 = &ctx->Texture.Unit[0];
@@ -719,7 +492,6 @@ void viaChooseTextureState(GLcontext *ctx)
 
            viaTexCombineState( vmesa, texUnit1->_CurrentCombine, 1 );
         }
-        vmesa->dirty |= VIA_UPLOAD_TEXTURE;
        
        if (VIA_DEBUG) {
            fprintf( stderr, "Csat_0 / Cop_0 = 0x%08x / 0x%08x\n",
@@ -740,13 +512,12 @@ void viaChooseTextureState(GLcontext *ctx)
        else        
            vmesa->regCmdB &= (~(HC_HVPMSK_S | HC_HVPMSK_T | HC_HVPMSK_W));
         vmesa->regEnable &= (~(HC_HenTXMP_MASK | HC_HenTXCH_MASK | HC_HenTXPP_MASK));
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
     
 }
 
-void viaChooseColorState(GLcontext *ctx) 
+static void viaChooseColorState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     GLenum s = ctx->Color.BlendSrcRGB;
@@ -998,22 +769,18 @@ void viaChooseColorState(GLcontext *ctx)
         if (vmesa->viaScreen->bitsPerPixel <= 16)
             vmesa->regEnable &= ~HC_HenDT_MASK;
 
-        vmesa->dirty |= (VIA_UPLOAD_BLEND | VIA_UPLOAD_ENABLE);
     }
     else {
         vmesa->regEnable &= (~HC_HenABL_MASK);
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
 
     if (ctx->Color.AlphaEnabled) {
         vmesa->regEnable |= HC_HenAT_MASK;
         vmesa->regHATMD = (((GLchan)ctx->Color.AlphaRef) & 0xFF) |
             ((ctx->Color.AlphaFunc - GL_NEVER) << 8);
-        vmesa->dirty |= (VIA_UPLOAD_ALPHATEST | VIA_UPLOAD_ENABLE);
     }
     else {
         vmesa->regEnable &= (~HC_HenAT_MASK);
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
 
     if (ctx->Color.DitherFlag && (vmesa->viaScreen->bitsPerPixel < 32)) {
@@ -1023,7 +790,6 @@ void viaChooseColorState(GLcontext *ctx)
         else {
             vmesa->regEnable |= HC_HenDT_MASK;
         }
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
 
     if (ctx->Color.ColorLogicOpEnabled) 
@@ -1033,17 +799,15 @@ void viaChooseColorState(GLcontext *ctx)
 
     vmesa->regHFBBMSKL = (*(GLuint *)&ctx->Color.ColorMask[0]) & 0xFFFFFF;
     vmesa->regHROP |= ((*(GLuint *)&ctx->Color.ColorMask[0]) >> 24) & 0xFF;
-    vmesa->dirty |= VIA_UPLOAD_MASK_ROP;
 
     if ((GLuint)((GLuint *)&ctx->Color.ColorMask[0]) & 0xFF000000)
         vmesa->regEnable |= HC_HenAW_MASK;
     else
         vmesa->regEnable &= (~HC_HenAW_MASK);
-    vmesa->dirty |= VIA_UPLOAD_ENABLE;  
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
 }
 
-void viaChooseFogState(GLcontext *ctx) 
+static void viaChooseFogState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
 
@@ -1063,7 +827,6 @@ void viaChooseFogState(GLcontext *ctx)
         a = (GLubyte)(ctx->Fog.Color[3] * 255.0F);
         vmesa->regHFogCL = (r << 16) | (g << 8) | b;
         vmesa->regHFogCH = a;
-        vmesa->dirty |= (VIA_UPLOAD_FOG | VIA_UPLOAD_ENABLE);
     }
     else {
         if (!ctx->Texture._EnabledUnits) {
@@ -1071,11 +834,10 @@ void viaChooseFogState(GLcontext *ctx)
            vmesa->regCmdB &= ~ HC_HVPMSK_Cs;
        }           
         vmesa->regEnable &= ~HC_HenFOG_MASK;
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
 }
 
-void viaChooseDepthState(GLcontext *ctx) 
+static void viaChooseDepthState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     if (ctx->Depth.Test) {
@@ -1086,7 +848,6 @@ void viaChooseDepthState(GLcontext *ctx)
         else
             vmesa->regEnable &= (~HC_HenZW_MASK);
        vmesa->regHZWTMD = (ctx->Depth.Func - GL_NEVER) << 16;
-        vmesa->dirty |= (VIA_UPLOAD_DEPTH | VIA_UPLOAD_ENABLE);
        
     }
     else {
@@ -1102,12 +863,10 @@ void viaChooseDepthState(GLcontext *ctx)
         else
             vmesa->regEnable &= (~HC_HenZW_MASK);*/
        vmesa->regEnable &= (~HC_HenZW_MASK);
-
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;                  
     }
 }
 
-void viaChooseLightState(GLcontext *ctx) 
+static void viaChooseLightState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
 
@@ -1121,7 +880,7 @@ void viaChooseLightState(GLcontext *ctx)
     }
 }
 
-void viaChooseLineState(GLcontext *ctx) 
+static void viaChooseLineState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
 
@@ -1138,15 +897,13 @@ void viaChooseLineState(GLcontext *ctx)
         vmesa->regEnable |= HC_HenLP_MASK;
         vmesa->regHLP = ctx->Line.StipplePattern;
         vmesa->regHLPRF = ctx->Line.StippleFactor;
-        vmesa->dirty |= VIA_UPLOAD_LINESTIPPLE;
     }
     else {
         vmesa->regEnable &= ~HC_HenLP_MASK;
     }
-    vmesa->dirty |= VIA_UPLOAD_ENABLE;
 }
 
-void viaChoosePolygonState(GLcontext *ctx) 
+static void viaChoosePolygonState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
 
@@ -1161,7 +918,6 @@ void viaChoosePolygonState(GLcontext *ctx)
 
     if (ctx->Polygon.StippleFlag) {
         vmesa->regEnable |= HC_HenSP_MASK;
-        vmesa->dirty |= VIA_UPLOAD_POLYGONSTIPPLE;
     }
     else {
         vmesa->regEnable &= ~HC_HenSP_MASK;
@@ -1173,10 +929,9 @@ void viaChoosePolygonState(GLcontext *ctx)
     else {
         vmesa->regEnable &= ~HC_HenFBCull_MASK;
     }
-    vmesa->dirty |= VIA_UPLOAD_ENABLE;
 }
 
-void viaChooseStencilState(GLcontext *ctx) 
+static void viaChooseStencilState(GLcontext *ctx) 
 {
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     if (VIA_DEBUG) fprintf(stderr, "%s - in\n", __FUNCTION__);    
@@ -1255,27 +1010,16 @@ void viaChooseStencilState(GLcontext *ctx)
             break;
         }
         vmesa->regHSTMD = temp;
-
-        vmesa->dirty |= (VIA_UPLOAD_STENCIL | VIA_UPLOAD_STENCIL);
     }
     else {
         vmesa->regEnable &= ~HC_HenST_MASK;
-        vmesa->dirty |= VIA_UPLOAD_ENABLE;
     }
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);    
 }
 
-void viaChoosePoint(GLcontext *ctx) 
-{
-    ctx = ctx;
-}
 
-void viaChooseLine(GLcontext *ctx) 
-{
-    ctx = ctx;
-}
 
-void viaChooseTriangle(GLcontext *ctx) 
+static void viaChooseTriangle(GLcontext *ctx) 
 {       
     viaContextPtr vmesa = VIA_CONTEXT(ctx);
     if (VIA_DEBUG) {
@@ -1327,8 +1071,7 @@ static void viaChooseState(GLcontext *ctx, GLuint newState)
                       _NEW_STENCIL)))
         return;
 
-    vmesa->dirty = 0;
-    vmesa->newState = newState;
+    vmesa->newState |= newState;
 
     if (texUnit0->_ReallyEnabled || texUnit1->_ReallyEnabled || ctx->Fog.Enabled) {
        vmesa->regCmdB |= HC_HVPMSK_Cs;
@@ -1383,28 +1126,14 @@ void viaInitStateFuncs(GLcontext *ctx)
 
     /* API callbacks
      */
-    ctx->Driver.AlphaFunc = viaAlphaFunc;
     ctx->Driver.BlendEquationSeparate = viaBlendEquationSeparate;
     ctx->Driver.BlendFuncSeparate = viaBlendFuncSeparate;
     ctx->Driver.ClearColor = viaClearColor;
-    ctx->Driver.ColorMask = viaColorMask;
-    ctx->Driver.CullFace = viaCullFaceFrontFace;
-    ctx->Driver.DepthFunc = viaDepthFunc;
-    ctx->Driver.DepthMask = viaDepthMask;
     ctx->Driver.DrawBuffer = viaDrawBuffer;
-    ctx->Driver.Enable = viaEnable;
-    ctx->Driver.Fogfv = viaFogfv;
-    ctx->Driver.FrontFace = viaCullFaceFrontFace;
-    ctx->Driver.LineWidth = viaLineWidth;
-    ctx->Driver.LogicOpcode = viaLogicOp;
-    ctx->Driver.PolygonStipple = viaPolygonStipple;
     ctx->Driver.RenderMode = viaRenderMode;
     ctx->Driver.Scissor = viaScissor;
-    ctx->Driver.ShadeModel = viaShadeModel;
     ctx->Driver.DepthRange = viaDepthRange;
     ctx->Driver.Viewport = viaViewport;
-    ctx->Driver.PointSize = viaPointSize;
-    ctx->Driver.LightModelfv = viaLightModelfv;
 
     /* Pixel path fallbacks.
      */
index 08f8a49af3b768540fae64691782d113b6d68c99..b93c46bb2e866c839a41c90e4d107364569d52a7 100644 (file)
 extern void viaInitState(GLcontext *ctx);
 extern void viaInitStateFuncs(GLcontext *ctx);
 extern void viaCalcViewport(GLcontext *ctx);
-extern void viaPrintDirty(const char *msg, GLuint state);
-extern void viaChooseTextureState(GLcontext *ctx);
-extern void viaChooseColorState(GLcontext *ctx);
-extern void viaChooseDepthState(GLcontext *ctx);
-extern void viaChoosePolygonState(GLcontext *ctx);
-extern void viaChoosePoint(GLcontext *ctx);
-extern void viaChooseLine(GLcontext *ctx);
-extern void viaChooseTriangle(GLcontext *ctx);
-extern void viaChooseFogState(GLcontext *ctx);
-extern void viaChooseStencilState(GLcontext *ctx);
-extern void viaChooseLightState(GLcontext *ctx);
-extern void viaChooseLineState(GLcontext *ctx);
 
 extern void viaFallback(viaContextPtr vmesa, GLuint bit, GLboolean mode);
 #define FALLBACK(vmesa, bit, mode) viaFallback(vmesa, bit, mode)
index 6f4edde64e1ebc82304ff6469286fe3a730ea79a..167b79db00997a5e56f0d8a5b494c26294b61819 100644 (file)
@@ -63,12 +63,10 @@ void viaDestroyTexObj(viaContextPtr vmesa, viaTextureObjectPtr t)
     if (vmesa) {
         if (vmesa->CurrentTexObj[0] == t) {
             vmesa->CurrentTexObj[0] = 0;
-            vmesa->dirty &= ~VIA_UPLOAD_TEX0;
         }
 
         if (vmesa->CurrentTexObj[1] == t) {
             vmesa->CurrentTexObj[1] = 0;
-            vmesa->dirty &= ~VIA_UPLOAD_TEX1;
         }
     }
 
@@ -431,10 +429,10 @@ void viaUploadTexImages(viaContextPtr vmesa, viaTextureObjectPtr t)
         /*t->bufAddr = (char *)((GLuint)vmesa->driScreen->pFB + t->texMem.offset);*/
 
         if (t == vmesa->CurrentTexObj[0])
-            VIA_STATECHANGE(vmesa, VIA_UPLOAD_TEX0);
+            VIA_FIREVERTICES(vmesa);
 
         if (t == vmesa->CurrentTexObj[1])
-            VIA_STATECHANGE(vmesa, VIA_UPLOAD_TEX1);
+            VIA_FIREVERTICES(vmesa);
 
         viaUpdateTexLRU(vmesa, t);
        
index f1db81eaf36b38ea88cdb9cfaa232eeb99bdb69e..2255ecfba4a8b646880b90d368ede5c654fa9af0 100644 (file)
@@ -233,12 +233,6 @@ static void viaSetTexImages(viaContextPtr vmesa,
 
     numLevels = lastLevel - firstLevel + 1;
     
-    /*=* [DBG] fgfs : fix mipmap level 11 over hw limitations and result in segmentation fault *=*/
-    if(numLevels > 10) {
-       numLevels = 10;
-       t->lastLevel = firstLevel + 9;
-    }
-
     log2Width = tObj->Image[0][firstLevel]->WidthLog2;
     log2Height = tObj->Image[0][firstLevel]->HeightLog2;
     log2Pitch = logbase2(tObj->Image[0][firstLevel]->Width * baseImage->TexFormat->TexelBytes);
@@ -270,7 +264,8 @@ static void viaSetTexImages(viaContextPtr vmesa,
     t->totalSize = (*texSize)[log2Height][log2Width];
     t->texMem.size = t->totalSize;
     t->maxLevel = i - 1;
-    t->dirty = VIA_UPLOAD_TEX0 | VIA_UPLOAD_TEX1;
+/*     t->dirty = VIA_UPLOAD_TEX0 | VIA_UPLOAD_TEX1; */
+
     if (VIA_DEBUG) {
        fprintf(stderr, "log2Width = %d\n", log2Width);  
        fprintf(stderr, "log2Height = %d\n", log2Height);    
@@ -672,7 +667,7 @@ static void viaUpdateTexUnit(GLcontext *ctx, GLuint unit)
          * time.
          */
         if (vmesa->CurrentTexObj[unit] != t) {
-            VIA_STATECHANGE(vmesa, (VIA_UPLOAD_TEX0 << unit));
+            VIA_FIREVERTICES(vmesa);
             vmesa->CurrentTexObj[unit] = t;
             viaUpdateTexLRU(vmesa, t); /* done too often */
         }
@@ -688,8 +683,7 @@ static void viaUpdateTexUnit(GLcontext *ctx, GLuint unit)
     else {
         vmesa->CurrentTexObj[unit] = 0;
         vmesa->TexEnvImageFmt[unit] = 0;
-        vmesa->dirty &= ~(VIA_UPLOAD_TEX0 << unit);
-        VIA_STATECHANGE(vmesa, VIA_UPLOAD_CTX);
+        VIA_FIREVERTICES(vmesa);
     }
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
 }
index 60b835d04004b7718ff7c5080daead275a5024d8..0190d7a7d4ab85953872a0d1df485b45894044c4 100644 (file)
@@ -1194,7 +1194,6 @@ static void emit_all_state(viaContextPtr vmesa)
     
     vmesa->dmaLow += (i << 2);
 
-    vmesa->dirty = 0;
     if (VIA_DEBUG) fprintf(stderr, "%s - out\n", __FUNCTION__);
 }
 
index 5ce2f521e0d7943f6333f1929ec88ba875bd359d..f989d8d0fdf25181b9dcf3347c1a8abae10d7514 100644 (file)
@@ -90,10 +90,11 @@ static struct {
 #define HAVE_TEX3_VERTICES  0
 #define HAVE_PTEX_VERTICES  0
 
-#define UNVIEWPORT_VARS  GLfloat h = VIA_CONTEXT(ctx)->driDrawable->h
+#define UNVIEWPORT_VARS  GLfloat h = VIA_CONTEXT(ctx)->driDrawable->h, \
+                                 depth_max = VIA_CONTEXT(ctx)->depth_max;
 #define UNVIEWPORT_X(x)  x - SUBPIXEL_X
 #define UNVIEWPORT_Y(y)  - y + h + SUBPIXEL_Y
-#define UNVIEWPORT_Z(z)  z * (float)0xffffffff
+#define UNVIEWPORT_Z(z)  z * (float)depth_max
 
 #define PTEX_FALLBACK() FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_TEXTURE, 1)