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,  | 
