Bring in last minute 6_4 branch changes to the unichrome driver
authorThomas Hellström <thomas@tungstengraphics.com>
Wed, 16 Nov 2005 17:24:26 +0000 (17:24 +0000)
committerThomas Hellström <thomas@tungstengraphics.com>
Wed, 16 Nov 2005 17:24:26 +0000 (17:24 +0000)
to the trunk.

src/mesa/drivers/dri/unichrome/server/via_dri.h
src/mesa/drivers/dri/unichrome/via_common.h [deleted file]
src/mesa/drivers/dri/unichrome/via_context.c
src/mesa/drivers/dri/unichrome/via_context.h
src/mesa/drivers/dri/unichrome/via_drmclient.h [new file with mode: 0644]
src/mesa/drivers/dri/unichrome/via_fb.c
src/mesa/drivers/dri/unichrome/via_ioctl.c
src/mesa/drivers/dri/unichrome/via_ioctl.h
src/mesa/drivers/dri/unichrome/via_screen.c
src/mesa/drivers/dri/unichrome/via_span.c
src/mesa/drivers/dri/unichrome/via_tex.c

index 188c685a767938ff6baf9c582cdd63660ecf2e32..b47397d5728e510ff0a65afc0dc7b28b5a309848 100644 (file)
@@ -1,20 +1,49 @@
-#ifndef _VIA_DRI_
-#define _VIA_DRI_
-
-#include "xf86drm.h"
+/*
+ * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
+ * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sub license,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * 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
+ * THE AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+/*
+ * Keep this file in perfect sync between the ddx and dri drivers.
+ * At least bump the VIA_DRIDDX_VERSION defines appropriately.
+ *
+ */
+#ifndef _VIA_DRI_H_
+#define _VIA_DRI_H_ 1
 
 #define VIA_MAX_DRAWABLES 256
 
-#define VIA_VERSION_MAJOR              4
-#define VIA_VERSION_MINOR              1
+#define VIA_DRIDDX_VERSION_MAJOR  5
+#define VIA_DRIDDX_VERSION_MINOR  0
+#define VIA_DRIDDX_VERSION_PATCH  0
+
+#ifndef XFree86Server
+typedef int Bool;
+#endif
 
 typedef struct {
     drm_handle_t handle;
     drmSize size;
 } viaRegion, *viaRegionPtr;
 
-typedef int Bool;
-
 typedef struct {
     viaRegion regs, agp;
     int deviceID;
@@ -46,4 +75,4 @@ typedef struct {
     int dummy;
 } VIADRIContextRec, *VIADRIContextPtr;
 
-#endif
+#endif /* _VIA_DRI_H_ */
diff --git a/src/mesa/drivers/dri/unichrome/via_common.h b/src/mesa/drivers/dri/unichrome/via_common.h
deleted file mode 100644 (file)
index c145352..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
- * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * 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
- * VIA, S3 GRAPHICS, 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.
- */
-#ifndef _VIA_DRM_H_
-#define _VIA_DRM_H_
-
-/* WARNING: These defines must be the same as what the Xserver uses.
- * if you change them, you must change the defines in the Xserver.
- */
-
-#ifndef _VIA_DEFINES_
-#define _VIA_DEFINES_
-
-#define VIA_DMA_BUF_ORDER              12
-#define VIA_DMA_BUF_SZ                         (1 << VIA_DMA_BUF_ORDER)
-#define VIA_DMA_BUF_NR                         256
-#define VIA_NR_SAREA_CLIPRECTS                 8
-#define VIA_NR_XVMC_PORTS               10
-#define VIA_NR_XVMC_LOCKS               5
-#define VIA_MAX_CACHELINE_SIZE          64
-#define XVMCLOCKPTR(saPriv,lockNo)                                     \
-        ((volatile int *)(((((unsigned long) (saPriv)->XvMCLockArea) + \
-                            (VIA_MAX_CACHELINE_SIZE - 1)) &             \
-                           ~(VIA_MAX_CACHELINE_SIZE - 1)) +             \
-                          VIA_MAX_CACHELINE_SIZE*(lockNo)))
-
-/* Each region is a minimum of 64k, and there are at most 64 of them.
- */
-#define VIA_NR_TEX_REGIONS 64
-#define VIA_LOG_MIN_TEX_REGION_SIZE 16
-#endif
-
-#define VIA_UPLOAD_TEX0IMAGE  0x1      /* handled clientside */
-#define VIA_UPLOAD_TEX1IMAGE  0x2      /* handled clientside */
-#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_VIA_ALLOCMEM       0x00
-#define DRM_VIA_FREEMEM                0x01
-#define DRM_VIA_AGP_INIT       0x02
-#define DRM_VIA_FB_INIT                0x03
-#define DRM_VIA_MAP_INIT       0x04
-#define DRM_VIA_DEC_FUTEX       0x05
-#define NOT_USED
-#define DRM_VIA_DMA_INIT       0x07
-#define DRM_VIA_CMDBUFFER      0x08
-#define DRM_VIA_FLUSH          0x09
-#define DRM_VIA_PCICMD         0x0a
-#define DRM_VIA_CMDBUF_SIZE    0x0b
-
-#define DRM_IOCTL_VIA_ALLOCMEM   DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t)
-#define DRM_IOCTL_VIA_FREEMEM    DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t)
-#define DRM_IOCTL_VIA_AGP_INIT   DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
-#define DRM_IOCTL_VIA_FB_INIT    DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
-#define DRM_IOCTL_VIA_MAP_INIT   DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
-#define DRM_IOCTL_VIA_DEC_FUTEX   DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
-#define DRM_IOCTL_VIA_DMA_INIT   DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
-#define DRM_IOCTL_VIA_CMDBUFFER          DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
-#define DRM_IOCTL_VIA_FLUSH      DRM_IO(  DRM_COMMAND_BASE + DRM_VIA_FLUSH)
-#define DRM_IOCTL_VIA_PCICMD     DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t)
-#define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, \
-                                           drm_via_cmdbuf_size_t)
-
-/* Indices into buf.Setup where various bits of state are mirrored per
- * context and per buffer.  These can be fired at the card as a unit,
- * or in a piecewise fashion as required.
- */
-
-#define VIA_TEX_SETUP_SIZE 8
-
-/* Flags for clear ioctl
- */
-#define VIA_FRONT   0x1
-#define VIA_BACK    0x2
-#define VIA_DEPTH   0x4
-#define VIA_STENCIL 0x8
-
-#define VIA_MEM_VIDEO   0      /* matches drm constant */
-#define VIA_MEM_AGP     1      /* matches drm constant */
-#define VIA_MEM_SYSTEM  2              
-#define VIA_MEM_MIXED   3
-#define VIA_MEM_UNKNOWN 4
-
-typedef struct {
-       u_int32_t offset;
-       u_int32_t size;
-} drm_via_agp_t;
-
-typedef struct {
-       u_int32_t offset;
-       u_int32_t size;
-} drm_via_fb_t;
-
-typedef struct {
-       u_int32_t context;
-       u_int32_t type;
-       u_int32_t size;
-       unsigned long index;
-       unsigned long offset;
-} drm_via_mem_t;
-
-typedef struct _drm_via_init {
-       enum {
-               VIA_INIT_MAP = 0x01,
-               VIA_CLEANUP_MAP = 0x02
-       } func;
-
-       unsigned long sarea_priv_offset;
-       unsigned long fb_offset;
-       unsigned long mmio_offset;
-       unsigned long agpAddr;
-} drm_via_init_t;
-
-typedef struct _drm_via_futex {
-       enum {
-               VIA_FUTEX_WAIT = 0x00,
-               VIA_FUTEX_WAKE = 0X01
-       } func;
-       u_int32_t ms;
-       u_int32_t lock;
-       u_int32_t val;
-} drm_via_futex_t;
-
-typedef struct _drm_via_dma_init {
-       enum {
-               VIA_INIT_DMA = 0x01,
-               VIA_CLEANUP_DMA = 0x02,
-                VIA_DMA_INITIALIZED = 0x03
-       } func;
-
-       unsigned long offset;
-       unsigned long size;
-       unsigned long reg_pause_addr;
-} drm_via_dma_init_t;
-
-typedef struct _drm_via_cmdbuffer {
-       char *buf;
-       unsigned long size;
-} drm_via_cmdbuffer_t;
-
-/* Warning: If you change the SAREA structure you must change the Xserver
- * structure as well */
-
-typedef struct _drm_via_tex_region {
-       unsigned char next, prev;       /* indices to form a circular LRU  */
-       unsigned char inUse;    /* owned by a client, or free? */
-       int age;                /* tracked by clients to update local LRU's */
-} drm_via_tex_region_t;
-
-typedef struct _drm_via_sarea {
-       unsigned int dirty;
-       unsigned int nbox;
-       drm_clip_rect_t boxes[VIA_NR_SAREA_CLIPRECTS];
-       drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1];
-       int ctxOwner;           /* last context to upload state */
-       int vertexPrim;
-
-       /*
-        * Below is for XvMC.
-        * We want the lock integers alone on, and aligned to, a cache line.
-        * Therefore this somewhat strange construct.
-        */
-
-       char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
-
-       unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
-       unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
-       unsigned int XvMCCtxNoGrabbed;  /* Last context to hold decoder */
-
-       /* Used by the 3d driver only at this point, for pageflipping:
-        */
-       unsigned int pfCurrentOffset;
-
-} drm_via_sarea_t;
-
-typedef struct _drm_via_cmdbuf_size {
-       enum {
-               VIA_CMDBUF_SPACE = 0x01,
-               VIA_CMDBUF_LAG = 0x02
-       } func;
-       int wait;
-       u_int32_t size;
-} drm_via_cmdbuf_size_t;
-
-
-#ifdef __KERNEL__
-
-int via_fb_init(DRM_IOCTL_ARGS);
-int via_mem_alloc(DRM_IOCTL_ARGS);
-int via_mem_free(DRM_IOCTL_ARGS);
-int via_agp_init(DRM_IOCTL_ARGS);
-int via_map_init(DRM_IOCTL_ARGS);
-int via_decoder_futex(DRM_IOCTL_ARGS);
-int via_dma_init(DRM_IOCTL_ARGS);
-int via_cmdbuffer(DRM_IOCTL_ARGS);
-int via_flush_ioctl(DRM_IOCTL_ARGS);
-int via_pci_cmdbuffer(DRM_IOCTL_ARGS);
-int via_cmdbuf_size(DRM_IOCTL_ARGS);
-
-#endif
-#endif                         /* _VIA_DRM_H_ */
index 4fae01924740b64a2325e84c6481254bf812d2df..3ff79c06cd6329063b3211dfc997130ee98f212e 100644 (file)
@@ -701,7 +701,7 @@ viaDestroyContext(__DRIcontextPrivate *driContextPriv)
     }
 
     if (vmesa) {
-        viaWaitIdle(vmesa);
+        viaWaitIdle(vmesa, GL_FALSE);
        if (vmesa->doPageFlip) {
           LOCK_HARDWARE(vmesa);
           if (vmesa->pfCurrentOffset != 0) {
index 4ee56515b9cdcc1b89efedce1b2e9ab8ac9d23ff..59311eab362204a02d40cc81774db5e00baf1838 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "via_screen.h"
 #include "via_tex.h"
-#include "via_common.h"
+#include "via_drm.h"
 
 struct via_context;
 
diff --git a/src/mesa/drivers/dri/unichrome/via_drmclient.h b/src/mesa/drivers/dri/unichrome/via_drmclient.h
new file mode 100644 (file)
index 0000000..7beff9a
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sub license,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * 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
+ * THE AUTHOR(S) AND/OR THE COPYRIGHT HOLDER(S) 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.
+ */
+#ifndef _VIA_DRMCLIENT_H_
+#define _VIA_DRMCLIENT_H_
+
+#define VIA_DMA_BUF_ORDER              12
+#define VIA_DMA_BUF_SZ                         (1 << VIA_DMA_BUF_ORDER)
+#define VIA_DMA_BUF_NR                  256
+
+#endif                         /* _VIA_DRMCLIENT_H_ */
index 9ac98d1445c99a79dbb88a62381761cef6517588..5b6ed9bb302cfb0e0e9445a13b59607f3ef57cb7 100644 (file)
@@ -206,7 +206,7 @@ via_release_pending_textures( struct via_context *vmesa )
    struct via_tex_buffer *s, *tmp;
    
    foreach_s( s, tmp, &vmesa->freed_tex_buffers ) {
-      if (s->lastUsed < vmesa->lastBreadcrumbRead) {
+      if (!VIA_GEQ_WRAP(s->lastUsed, vmesa->lastBreadcrumbRead)) {
         if (VIA_DEBUG & DEBUG_TEXTURE)
            fprintf(stderr, "%s: release tex sz %d lastUsed %x\n",
                    __FUNCTION__, s->size, s->lastUsed); 
index db178c134d0dcc84a24b9480494d840c74ac776d..1daf49f151fb42b10983dfc83e6e4dc3cfa4e958 100644 (file)
@@ -412,9 +412,9 @@ GLboolean viaCheckBreadcrumb( struct via_context *vmesa, GLuint value )
    if (VIA_DEBUG & DEBUG_IOCTL) 
       fprintf(stderr, "%s %d < %d: %d\n", __FUNCTION__, value, 
              vmesa->lastBreadcrumbRead,
-             value < vmesa->lastBreadcrumbRead);
+             !VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbRead));
 
-   return value < vmesa->lastBreadcrumbRead;
+   return !VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbRead);
 }
 
 static void viaWaitBreadcrumb( struct via_context *vmesa, GLuint value )
@@ -422,7 +422,7 @@ static void viaWaitBreadcrumb( struct via_context *vmesa, GLuint value )
    if (VIA_DEBUG & DEBUG_IOCTL) 
       fprintf(stderr, "%s %d\n", __FUNCTION__, value);
 
-   assert(value < vmesa->lastBreadcrumbWrite);
+   assert(!VIA_GEQ_WRAP(value, vmesa->lastBreadcrumbWrite));
 
    while (!viaCheckBreadcrumb( vmesa, value )) {
       viaSwapOutWork( vmesa );
@@ -431,7 +431,7 @@ static void viaWaitBreadcrumb( struct via_context *vmesa, GLuint value )
 }
 
 
-void viaWaitIdle( struct via_context *vmesa )
+void viaWaitIdle( struct via_context *vmesa, GLboolean light )
 {
    VIA_FLUSH_DMA(vmesa);
 
@@ -449,17 +449,20 @@ void viaWaitIdle( struct via_context *vmesa )
 
    /* Need to wait?
     */
-   if (vmesa->lastDma >= vmesa->lastBreadcrumbRead
+   if (VIA_GEQ_WRAP(vmesa->lastDma, vmesa->lastBreadcrumbRead)
       viaWaitBreadcrumb( vmesa, vmesa->lastDma );
 
+   if (light) return;
+
+   LOCK_HARDWARE(vmesa);
    while(!viaCheckIdle(vmesa))
       ;
-
+   UNLOCK_HARDWARE(vmesa);
    via_release_pending_textures(vmesa);
 }
 
 
-void viaWaitIdleLocked( struct via_context *vmesa )
+void viaWaitIdleLocked( struct via_context *vmesa, GLboolean light )
 {
    if (vmesa->dmaLow) 
       viaFlushDmaLocked(vmesa, 0);
@@ -479,6 +482,8 @@ void viaWaitIdleLocked( struct via_context *vmesa )
    if (vmesa->lastDma >= vmesa->lastBreadcrumbRead) 
       viaWaitBreadcrumb( vmesa, vmesa->lastDma );
 
+   if (light) return;
+
    while(!viaCheckIdle(vmesa))
       ;
 
@@ -702,7 +707,7 @@ static int fire_buffer(struct via_context *vmesa)
 
       /* Fall through to PCI handling?!?
        */
-      viaWaitIdleLocked(vmesa);
+      viaWaitIdleLocked(vmesa, GL_FALSE);
    }
            
    ret = drmCommandWrite(vmesa->driFd, DRM_VIA_PCICMD, &bufI, sizeof(bufI));
@@ -946,7 +951,7 @@ static void viaFinish(GLcontext *ctx)
 {
     struct via_context *vmesa = VIA_CONTEXT(ctx);
     VIA_FLUSH_DMA(vmesa);
-    viaWaitIdle(vmesa);
+    viaWaitIdle(vmesa, GL_FALSE);
 }
 
 static void viaClearStencil(GLcontext *ctx,  int s)
index 88bc52b7c40fb253db0b646bddbea280701f5275..a81b427d807ea44445e4dacdf4a4a63a4c3d01c6 100644 (file)
@@ -37,8 +37,8 @@ void viaCopyBuffer(const __DRIdrawablePrivate *dpriv);
 void viaPageFlip(const __DRIdrawablePrivate *dpriv);
 void viaCheckDma(struct via_context *vmesa, GLuint bytes);
 void viaResetPageFlippingLocked(struct via_context *vmesa);
-void viaWaitIdle(struct via_context *vmesa);
-void viaWaitIdleLocked(struct via_context *vmesa);
+void viaWaitIdle(struct via_context *vmesa, GLboolean light);
+void viaWaitIdleLocked(struct via_context *vmesa, GLboolean light);
 
 GLboolean viaCheckBreadcrumb( struct via_context *vmesa, GLuint value );
 void viaEmitBreadcrumb( struct via_context *vmesa );
@@ -127,7 +127,7 @@ static GLuint __inline__ *viaExtendPrimitive(struct via_context *vmesa, int byte
    }                                           \
 } while (0)
 
-
-
-
+#define VIA_GEQ_WRAP(left, right) \
+    (((left) - (right)) < ( 1 << 23))
+      
 #endif
index 2f7f726a598a4efd0084541193a2c356bbd2d1ce..424a037a0ab0311f15be76cf3cf74d62a7b79ca3 100644 (file)
@@ -429,7 +429,9 @@ void * __driCreateNewScreen_20050727( __DRInativeDisplay *dpy, int scrn,
                             
 {
    __DRIscreenPrivate *psp;
-   static const __DRIversion ddx_expected = { 4, 0, 0 };
+   static const __DRIversion ddx_expected = { VIA_DRIDDX_VERSION_MAJOR,
+                                              VIA_DRIDDX_VERSION_MINOR,
+                                              VIA_DRIDDX_VERSION_PATCH };
    static const __DRIversion dri_expected = { 4, 0, 0 };
    static const __DRIversion drm_expected = { 2, 3, 0 };
 
index 112b902bd299cd0f7b0b6c9df1c25c9e0593a773..6ff95cc444cd5e3b855ee3503d0cae57dff7299f 100644 (file)
 void viaSpanRenderStart( GLcontext *ctx )
 {
    struct via_context *vmesa = VIA_CONTEXT(ctx);     
-   viaWaitIdle(vmesa);
+   viaWaitIdle(vmesa, GL_FALSE);
    LOCK_HARDWARE(vmesa);
 }
 
index 126a26c345151806b6ab152f77eaccccc4abe2b7..19b270955ebd276ee9d4b84a7ca9c195c06151cc 100644 (file)
@@ -839,7 +839,7 @@ static void viaTexSubImage2D(GLcontext *ctx,
 {
    struct via_context *vmesa = VIA_CONTEXT(ctx);
   
-   VIA_FLUSH_DMA(vmesa);
+   viaWaitIdle(vmesa, GL_TRUE);
    vmesa->clearTexCache = 1;
 
    _mesa_store_texsubimage2d(ctx, target, level, xoffset, yoffset, width,
@@ -875,7 +875,7 @@ static void viaTexSubImage1D(GLcontext *ctx,
 {
    struct via_context *vmesa = VIA_CONTEXT(ctx);
 
-   VIA_FLUSH_DMA(vmesa);
+   viaWaitIdle(vmesa, GL_TRUE); 
    vmesa->clearTexCache = 1;
 
    _mesa_store_texsubimage1d(ctx, target, level, xoffset, width,