diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/unichrome/server/via_dri.h | 47 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_common.h | 226 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_context.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_context.h | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_drmclient.h | 29 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_fb.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_ioctl.c | 23 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_ioctl.h | 10 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_screen.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_span.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/unichrome/via_tex.c | 4 |
11 files changed, 95 insertions, 256 deletions
diff --git a/src/mesa/drivers/dri/unichrome/server/via_dri.h b/src/mesa/drivers/dri/unichrome/server/via_dri.h index 188c685a76..b47397d572 100644 --- a/src/mesa/drivers/dri/unichrome/server/via_dri.h +++ b/src/mesa/drivers/dri/unichrome/server/via_dri.h @@ -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 index c145352095..0000000000 --- a/src/mesa/drivers/dri/unichrome/via_common.h +++ /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_ */ diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 4fae019247..3ff79c06cd 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -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) { diff --git a/src/mesa/drivers/dri/unichrome/via_context.h b/src/mesa/drivers/dri/unichrome/via_context.h index 4ee56515b9..59311eab36 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.h +++ b/src/mesa/drivers/dri/unichrome/via_context.h @@ -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 index 0000000000..7beff9a9d9 --- /dev/null +++ b/src/mesa/drivers/dri/unichrome/via_drmclient.h @@ -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_ */ diff --git a/src/mesa/drivers/dri/unichrome/via_fb.c b/src/mesa/drivers/dri/unichrome/via_fb.c index 9ac98d1445..5b6ed9bb30 100644 --- a/src/mesa/drivers/dri/unichrome/via_fb.c +++ b/src/mesa/drivers/dri/unichrome/via_fb.c @@ -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); diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.c b/src/mesa/drivers/dri/unichrome/via_ioctl.c index db178c134d..1daf49f151 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.c +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.c @@ -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) diff --git a/src/mesa/drivers/dri/unichrome/via_ioctl.h b/src/mesa/drivers/dri/unichrome/via_ioctl.h index 88bc52b7c4..a81b427d80 100644 --- a/src/mesa/drivers/dri/unichrome/via_ioctl.h +++ b/src/mesa/drivers/dri/unichrome/via_ioctl.h @@ -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 diff --git a/src/mesa/drivers/dri/unichrome/via_screen.c b/src/mesa/drivers/dri/unichrome/via_screen.c index 2f7f726a59..424a037a0a 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.c +++ b/src/mesa/drivers/dri/unichrome/via_screen.c @@ -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 }; diff --git a/src/mesa/drivers/dri/unichrome/via_span.c b/src/mesa/drivers/dri/unichrome/via_span.c index 112b902bd2..6ff95cc444 100644 --- a/src/mesa/drivers/dri/unichrome/via_span.c +++ b/src/mesa/drivers/dri/unichrome/via_span.c @@ -148,7 +148,7 @@ void viaSpanRenderStart( GLcontext *ctx ) { struct via_context *vmesa = VIA_CONTEXT(ctx); - viaWaitIdle(vmesa); + viaWaitIdle(vmesa, GL_FALSE); LOCK_HARDWARE(vmesa); } diff --git a/src/mesa/drivers/dri/unichrome/via_tex.c b/src/mesa/drivers/dri/unichrome/via_tex.c index 126a26c345..19b270955e 100644 --- a/src/mesa/drivers/dri/unichrome/via_tex.c +++ b/src/mesa/drivers/dri/unichrome/via_tex.c @@ -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, |