Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver
This commit is contained in:
		
						commit
						ca2874b273
					
				|  | @ -237,7 +237,7 @@ GLboolean __glXFreeContext(__GLXcontext *cx) | |||
|      * __glXDispatch() or as a callback from the resource manager.  In | ||||
|      * the latter case we need to lift the DRI lock manually. */ | ||||
| 
 | ||||
|     if (glxBlockClients) { | ||||
|     if (!glxBlockClients) { | ||||
| 	__glXleaveServer(); | ||||
| 	cx->destroy(cx); | ||||
| 	__glXenterServer(); | ||||
|  |  | |||
|  | @ -49,8 +49,6 @@ dnl xwin-config.h covers the XWin DDX. | |||
| AC_CONFIG_HEADERS(include/xwin-config.h) | ||||
| dnl kdrive-config.h covers the kdrive DDX | ||||
| AC_CONFIG_HEADERS(include/kdrive-config.h) | ||||
| dnl libdrm now needs 64-bit file offsets | ||||
| AC_CONFIG_HEADERS(include/libdrm-config.h) | ||||
| 
 | ||||
| AC_PROG_CC | ||||
| AM_PROG_AS | ||||
|  | @ -284,6 +282,7 @@ case $host_os in | |||
|   *netbsd*) | ||||
| 	AC_DEFINE(CSRG_BASED, 1, [System is BSD-like]) | ||||
| 	AC_DEFINE(PCCONS_SUPPORT, 1, [System has PC console]) | ||||
| 	AC_DEFINE(PCVT_SUPPORT, 1, [System has PCVT console]) | ||||
| 	AC_DEFINE(WSCONS_SUPPORT, 1, [System has wscons console]) | ||||
| 	DRI=yes | ||||
| 	;; | ||||
|  | @ -464,7 +463,7 @@ AC_ARG_ENABLE(dmx,    	      AS_HELP_STRING([--enable-dmx], [Build DMX server (d | |||
| AC_ARG_ENABLE(xvfb,    	      AS_HELP_STRING([--enable-xvfb], [Build Xvfb server (default: yes)]), [XVFB=$enableval], [XVFB=yes]) | ||||
| AC_ARG_ENABLE(xnest,   	      AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) | ||||
| AC_ARG_ENABLE(xwin,    	      AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) | ||||
| AC_ARG_ENABLE(xprint,         AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: auto)]), [XPRINT=$enableval], [XPRINT=auto]) | ||||
| AC_ARG_ENABLE(xprint,         AS_HELP_STRING([--enable-xprint], [Build Xprint extension and server (default: no)]), [XPRINT=$enableval], [XPRINT=no]) | ||||
| AC_ARG_ENABLE(xgl,            AS_HELP_STRING([--enable-xgl], [Build Xgl server (default: no)]), [XGL=$enableval], [XGL=no]) | ||||
| AC_ARG_ENABLE(xglx,           AS_HELP_STRING([--enable-xglx], [Build Xglx xgl module (default: no)]), [XGLX=$enableval], [XGLX=no]) | ||||
| AC_ARG_ENABLE(xegl,           AS_HELP_STRING([--enable-xegl], [Build Xegl xgl module (default: no)]), [XEGL=$enableval], [XEGL=no]) | ||||
|  |  | |||
|  | @ -1307,7 +1307,7 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) | |||
|      * events, unless a 'void' section is found, in which case the user | ||||
|      * probably wants to run footless. | ||||
|      */ | ||||
|     for (i = servlayoutp->inputs; i->driver; i++) { | ||||
|     for (i = servlayoutp->inputs; i->identifier && i->driver; i++) { | ||||
| 	if (!strcmp(i->driver, "void") || !strcmp(i->driver, "mouse")) { | ||||
| 	    found = 1; break; | ||||
| 	} | ||||
|  |  | |||
|  | @ -84,6 +84,8 @@ static RESTYPE DRIDrawablePrivResType; | |||
| static RESTYPE DRIContextPrivResType; | ||||
| static void    DRIDestroyDummyContext(ScreenPtr pScreen, Bool hasCtxPriv); | ||||
| 
 | ||||
| drmServerInfo DRIDRMServerInfo; | ||||
| 
 | ||||
| 				/* Wrapper just like xf86DrvMsg, but
 | ||||
| 				   without the verbosity level checking. | ||||
| 				   This will make it easy to turn off some | ||||
|  | @ -589,7 +591,7 @@ static void dri_drm_get_perms(gid_t *group, mode_t *mode) | |||
|   *mode = xf86ConfigDRI.mode; | ||||
| } | ||||
| 
 | ||||
| static drmServerInfo DRIDRMServerInfo =  { | ||||
| drmServerInfo DRIDRMServerInfo =  { | ||||
|   dri_drm_debug_print, | ||||
|   xf86LoadKernelModule, | ||||
|   dri_drm_get_perms, | ||||
|  | @ -622,8 +624,6 @@ DRIExtensionInit(void) | |||
| 	    return FALSE; | ||||
|     } | ||||
| 
 | ||||
|     drmSetServerInfo(&DRIDRMServerInfo); | ||||
| 
 | ||||
|     RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL); | ||||
| 
 | ||||
|     return TRUE; | ||||
|  |  | |||
|  | @ -39,8 +39,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
| #include "xf86Module.h" | ||||
| #include "globals.h" | ||||
| 
 | ||||
| #include "xf86drm.h" | ||||
| static MODULESETUPPROTO(driSetup); | ||||
| 
 | ||||
| drmServerInfo DRIDRMServerInfo; | ||||
| 
 | ||||
| static XF86ModuleVersionInfo VersRec = | ||||
| { | ||||
|         "dri", | ||||
|  | @ -81,6 +84,9 @@ driSetup(pointer module, pointer opts, int *errmaj, int *errmin) | |||
|     } else { | ||||
| 	if (errmaj) *errmaj = LDR_ONCEONLY; | ||||
|     } | ||||
| 
 | ||||
|     drmSetServerInfo(&DRIDRMServerInfo); | ||||
| 
 | ||||
|     /* Need a non-NULL return value to indicate success */ | ||||
|     return 1; | ||||
| } | ||||
|  |  | |||
|  | @ -683,28 +683,28 @@ xf86MapDomainMemory(int ScreenNum, int Flags, PCITAG Tag, | |||
| 		    ADDRESS Base, unsigned long Size) | ||||
| { | ||||
|     int domain = xf86GetPciDomain(Tag); | ||||
|     int fd; | ||||
|     int fd = -1; | ||||
|     pointer addr; | ||||
| 
 | ||||
|     /*
 | ||||
|      * We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs | ||||
|      * legacy_mem interface is unavailable. | ||||
|      */ | ||||
|     if (Base > 1024*1024) | ||||
| 	return linuxMapPci(ScreenNum, Flags, Tag, Base, Size, | ||||
|     if (Base >= 1024*1024) | ||||
| 	addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size, | ||||
| 			   PCIIOC_MMAP_IS_MEM); | ||||
| 
 | ||||
|     if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0) | ||||
| 	return linuxMapPci(ScreenNum, Flags, Tag, Base, Size, | ||||
|     else if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0) | ||||
| 	addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size, | ||||
| 			   PCIIOC_MMAP_IS_MEM); | ||||
| 
 | ||||
|     else | ||||
| 	addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base); | ||||
|     if (addr == MAP_FAILED) { | ||||
| 
 | ||||
|     if (fd >= 0) | ||||
| 	close(fd); | ||||
|     if (addr == NULL || addr == MAP_FAILED) { | ||||
| 	perror("mmap failure"); | ||||
| 	FatalError("xf86MapDomainMem():  mmap() failure\n"); | ||||
|     } | ||||
|     close(fd); | ||||
|     return addr; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,258 +0,0 @@ | |||
| /* xf86drmCompat.h -- OS-independent header for old device specific DRM user-level
 | ||||
|  *                    library interface | ||||
|  * | ||||
|  * Copyright 2000 VA Linux Systems, Inc., Fremont, California. | ||||
|  * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. | ||||
|  * 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, sublicense, | ||||
|  * 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 NONINFRINGEMENT.  IN NO EVENT SHALL | ||||
|  * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||||
|  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||||
|  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
|  * DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * Authors: | ||||
|  *   Gareth Hughes <gareth@valinux.com> | ||||
|  *   Kevin E. Martin <martin@valinux.com> | ||||
|  *   Keith Whitwell <keith@tungstengraphics.com> | ||||
|  * | ||||
|  * Backwards compatability modules broken out by: | ||||
|  *   Jens Owen <jens@tungstengraphics.com> | ||||
|  * | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _XF86DRI_COMPAT_H_ | ||||
| #define _XF86DRI_COMPAT_H_ | ||||
| 
 | ||||
| /* WARNING: Do not change, or add, anything to this file.  It is only provided
 | ||||
|  * for binary backwards compatability with the old driver specific DRM  | ||||
|  * extensions used before XFree86 4.3. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef __user | ||||
| #define __user | ||||
| #endif | ||||
| 
 | ||||
| /* I810 */ | ||||
| 
 | ||||
| typedef struct { | ||||
|    unsigned int start;  | ||||
|    unsigned int end;  | ||||
|    unsigned int size; | ||||
|    unsigned int mmio_offset; | ||||
|    unsigned int buffers_offset; | ||||
|    int sarea_off; | ||||
| 
 | ||||
|    unsigned int front_offset; | ||||
|    unsigned int back_offset; | ||||
|    unsigned int depth_offset; | ||||
|    unsigned int overlay_offset; | ||||
|    unsigned int overlay_physical; | ||||
|    unsigned int w; | ||||
|    unsigned int h; | ||||
|    unsigned int pitch; | ||||
|    unsigned int pitch_bits; | ||||
| } drmCompatI810Init; | ||||
| 
 | ||||
| extern Bool drmI810CleanupDma(int driSubFD); | ||||
| extern Bool drmI810InitDma(int driSubFD, drmCompatI810Init *info ); | ||||
| 
 | ||||
| /* Mga */ | ||||
| 
 | ||||
| typedef struct { | ||||
|    unsigned long sarea_priv_offset; | ||||
|    int chipset; | ||||
|    int sgram; | ||||
|    unsigned int maccess; | ||||
|    unsigned int fb_cpp; | ||||
|    unsigned int front_offset, front_pitch; | ||||
|    unsigned int back_offset, back_pitch; | ||||
|    unsigned int depth_cpp; | ||||
|    unsigned int depth_offset, depth_pitch; | ||||
|    unsigned int texture_offset[2]; | ||||
|    unsigned int texture_size[2]; | ||||
|    unsigned long fb_offset; | ||||
|    unsigned long mmio_offset; | ||||
|    unsigned long status_offset; | ||||
|    unsigned long warp_offset; | ||||
|    unsigned long primary_offset; | ||||
|    unsigned long buffers_offset; | ||||
| } drmCompatMGAInit; | ||||
| 
 | ||||
| extern int drmMGAInitDMA( int fd, drmCompatMGAInit *info ); | ||||
| extern int drmMGACleanupDMA( int fd ); | ||||
| extern int drmMGAFlushDMA( int fd, drmLockFlags flags ); | ||||
| extern int drmMGAEngineReset( int fd ); | ||||
| extern int drmMGAFullScreen( int fd, int enable ); | ||||
| extern int drmMGASwapBuffers( int fd ); | ||||
| extern int drmMGAClear( int fd, unsigned int flags, | ||||
| 			unsigned int clear_color, unsigned int clear_depth, | ||||
| 			unsigned int color_mask, unsigned int depth_mask ); | ||||
| extern int drmMGAFlushVertexBuffer( int fd, int indx, int used, int discard ); | ||||
| extern int drmMGAFlushIndices( int fd, int indx, | ||||
| 			       int start, int end, int discard ); | ||||
| extern int drmMGATextureLoad( int fd, int indx, | ||||
| 			      unsigned int dstorg, unsigned int length ); | ||||
| extern int drmMGAAgpBlit( int fd, unsigned int planemask, | ||||
| 			  unsigned int src, int src_pitch, | ||||
| 			  unsigned int dst, int dst_pitch, | ||||
| 			  int delta_sx, int delta_sy, | ||||
| 			  int delta_dx, int delta_dy, | ||||
| 			  int height, int ydir ); | ||||
| 
 | ||||
| /* R128 */ | ||||
| 
 | ||||
| typedef struct { | ||||
|    unsigned long sarea_priv_offset; | ||||
|    int is_pci; | ||||
|    int cce_mode; | ||||
|    int cce_secure; | ||||
|    int ring_size; | ||||
|    int usec_timeout; | ||||
|    unsigned int fb_bpp; | ||||
|    unsigned int front_offset, front_pitch; | ||||
|    unsigned int back_offset, back_pitch; | ||||
|    unsigned int depth_bpp; | ||||
|    unsigned int depth_offset, depth_pitch; | ||||
|    unsigned int span_offset; | ||||
|    unsigned long fb_offset; | ||||
|    unsigned long mmio_offset; | ||||
|    unsigned long ring_offset; | ||||
|    unsigned long ring_rptr_offset; | ||||
|    unsigned long buffers_offset; | ||||
|    unsigned long agp_textures_offset; | ||||
| } drmCompatR128Init; | ||||
| 
 | ||||
| extern int drmR128InitCCE( int fd, drmCompatR128Init *info ); | ||||
| extern int drmR128CleanupCCE( int fd ); | ||||
| extern int drmR128StartCCE( int fd ); | ||||
| extern int drmR128StopCCE( int fd ); | ||||
| extern int drmR128ResetCCE( int fd ); | ||||
| extern int drmR128WaitForIdleCCE( int fd ); | ||||
| extern int drmR128EngineReset( int fd ); | ||||
| extern int drmR128FullScreen( int fd, int enable ); | ||||
| extern int drmR128SwapBuffers( int fd ); | ||||
| extern int drmR128Clear( int fd, unsigned int flags, | ||||
| 			 unsigned int clear_color, unsigned int clear_depth, | ||||
| 			 unsigned int color_mask, unsigned int depth_mask ); | ||||
| extern int drmR128FlushVertexBuffer( int fd, int prim, int indx, | ||||
| 				     int count, int discard ); | ||||
| extern int drmR128FlushIndices( int fd, int prim, int indx, | ||||
| 				int start, int end, int discard ); | ||||
| extern int drmR128TextureBlit( int fd, int indx, | ||||
| 			       int offset, int pitch, int format, | ||||
| 			       int x, int y, int width, int height ); | ||||
| extern int drmR128WriteDepthSpan( int fd, int n, int x, int y, | ||||
| 				  const unsigned int depth[], | ||||
| 				  const unsigned char mask[] ); | ||||
| extern int drmR128WriteDepthPixels( int fd, int n, | ||||
| 				    const int x[], const int y[], | ||||
| 				    const unsigned int depth[], | ||||
| 				    const unsigned char mask[] ); | ||||
| extern int drmR128ReadDepthSpan( int fd, int n, int x, int y ); | ||||
| extern int drmR128ReadDepthPixels( int fd, int n, | ||||
| 				   const int x[], const int y[] ); | ||||
| extern int drmR128PolygonStipple( int fd, unsigned int *mask ); | ||||
| extern int drmR128FlushIndirectBuffer( int fd, int indx, | ||||
| 				       int start, int end, int discard ); | ||||
| 
 | ||||
| /* Radeon */ | ||||
| 
 | ||||
| typedef struct { | ||||
|    unsigned long sarea_priv_offset; | ||||
|    int is_pci; | ||||
|    int cp_mode; | ||||
|    int agp_size; | ||||
|    int ring_size; | ||||
|    int usec_timeout; | ||||
| 
 | ||||
|    unsigned int fb_bpp; | ||||
|    unsigned int front_offset, front_pitch; | ||||
|    unsigned int back_offset, back_pitch; | ||||
|    unsigned int depth_bpp; | ||||
|    unsigned int depth_offset, depth_pitch; | ||||
| 
 | ||||
|    unsigned long fb_offset; | ||||
|    unsigned long mmio_offset; | ||||
|    unsigned long ring_offset; | ||||
|    unsigned long ring_rptr_offset; | ||||
|    unsigned long buffers_offset; | ||||
|    unsigned long agp_textures_offset; | ||||
| } drmCompatRadeonInit; | ||||
| 
 | ||||
| typedef struct { | ||||
|    unsigned int x; | ||||
|    unsigned int y; | ||||
|    unsigned int width; | ||||
|    unsigned int height; | ||||
|    void *data; | ||||
| } drmCompatRadeonTexImage; | ||||
| 
 | ||||
| extern int drmRadeonInitCP( int fd, drmCompatRadeonInit *info ); | ||||
| extern int drmRadeonCleanupCP( int fd ); | ||||
| extern int drmRadeonStartCP( int fd ); | ||||
| extern int drmRadeonStopCP( int fd ); | ||||
| extern int drmRadeonResetCP( int fd ); | ||||
| extern int drmRadeonWaitForIdleCP( int fd ); | ||||
| extern int drmRadeonEngineReset( int fd ); | ||||
| extern int drmRadeonFullScreen( int fd, int enable ); | ||||
| extern int drmRadeonSwapBuffers( int fd ); | ||||
| extern int drmRadeonClear( int fd, unsigned int flags, | ||||
| 			   unsigned int clear_color, unsigned int clear_depth, | ||||
| 			   unsigned int color_mask, unsigned int stencil, | ||||
| 			   void *boxes, int nbox ); | ||||
| extern int drmRadeonFlushVertexBuffer( int fd, int prim, int indx, | ||||
| 				       int count, int discard ); | ||||
| extern int drmRadeonFlushIndices( int fd, int prim, int indx, | ||||
| 				  int start, int end, int discard ); | ||||
| extern int drmRadeonLoadTexture( int fd, int offset, int pitch, int format, | ||||
| 				 int width, int height, | ||||
| 				 drmCompatRadeonTexImage *image ); | ||||
| extern int drmRadeonPolygonStipple( int fd, unsigned int *mask ); | ||||
| extern int drmRadeonFlushIndirectBuffer( int fd, int indx, | ||||
| 					 int start, int end, int discard ); | ||||
| 
 | ||||
| /* SiS */ | ||||
| extern Bool drmSiSAgpInit(int driSubFD, int offset, int size); | ||||
| 
 | ||||
| /* I830 */ | ||||
| typedef struct { | ||||
|    unsigned int start; | ||||
|    unsigned int end; | ||||
|    unsigned int size; | ||||
|    unsigned int mmio_offset; | ||||
|    unsigned int buffers_offset; | ||||
|    int sarea_off; | ||||
|    unsigned int front_offset; | ||||
|    unsigned int back_offset; | ||||
|    unsigned int depth_offset; | ||||
|    unsigned int w; | ||||
|    unsigned int h; | ||||
|    unsigned int pitch; | ||||
|    unsigned int pitch_bits; | ||||
|    unsigned int cpp; | ||||
| } drmCompatI830Init; | ||||
| 
 | ||||
| extern Bool drmI830CleanupDma(int driSubFD); | ||||
| extern Bool drmI830InitDma(int driSubFD, drmCompatI830Init *info ); | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| /* WARNING: Do not change, or add, anything to this file.  It is only provided
 | ||||
|  * for binary backwards compatability with the old driver specific DRM  | ||||
|  * extensions used before XFree86 4.3. | ||||
|  */ | ||||
|  | @ -1,210 +0,0 @@ | |||
| /**************************************************************************
 | ||||
|  *  | ||||
|  * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND. USA. | ||||
|  * 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,  | ||||
|  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR  | ||||
|  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE  | ||||
|  * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the | ||||
|  * next paragraph) shall be included in all copies or substantial portions | ||||
|  * of the Software. | ||||
|  *  | ||||
|  *  | ||||
|  **************************************************************************/ | ||||
| 
 | ||||
| #ifndef _XF86MM_H_ | ||||
| #define _XF86MM_H_ | ||||
| #include <stddef.h> | ||||
| #include "drm.h" | ||||
| 
 | ||||
| /*
 | ||||
|  * Note on multithreaded applications using this interface. | ||||
|  * Libdrm is not threadsafe, so common buffer, TTM, and fence objects need to | ||||
|  * be protected using an external mutex. | ||||
|  * | ||||
|  * Note: Don't protect the following functions, as it may lead to deadlocks: | ||||
|  * drmBOUnmap(), drmFenceBuffers(). | ||||
|  * The kernel is synchronizing and refcounting buffer maps.  | ||||
|  * User space only needs to refcount object usage within the same application. | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * List macros heavily inspired by the Linux kernel | ||||
|  * list handling. No list looping yet. | ||||
|  */ | ||||
| 
 | ||||
| typedef struct _drmMMListHead | ||||
| { | ||||
|     struct _drmMMListHead *prev; | ||||
|     struct _drmMMListHead *next; | ||||
| } drmMMListHead; | ||||
| 
 | ||||
| #define DRMINITLISTHEAD(__item)		       \ | ||||
|   do{					       \ | ||||
|     (__item)->prev = (__item);		       \ | ||||
|     (__item)->next = (__item);		       \ | ||||
|   } while (0) | ||||
| 
 | ||||
| #define DRMLISTADD(__item, __list)			\ | ||||
|   do {						\ | ||||
|     (__item)->prev = (__list);			\ | ||||
|     (__item)->next = (__list)->next;		\ | ||||
|     (__list)->next->prev = (__item);		\ | ||||
|     (__list)->next = (__item);			\ | ||||
|   } while (0) | ||||
| 
 | ||||
| #define DRMLISTADDTAIL(__item, __list)		\ | ||||
|   do {						\ | ||||
|     (__item)->next = (__list);			\ | ||||
|     (__item)->prev = (__list)->prev;		\ | ||||
|     (__list)->prev->next = (__item);		\ | ||||
|     (__list)->prev = (__item);			\ | ||||
|   } while(0) | ||||
| 
 | ||||
| #define DRMLISTDEL(__item)			\ | ||||
|   do {						\ | ||||
|     (__item)->prev->next = (__item)->next;	\ | ||||
|     (__item)->next->prev = (__item)->prev;	\ | ||||
|   } while(0) | ||||
| 
 | ||||
| #define DRMLISTDELINIT(__item)			\ | ||||
|   do {						\ | ||||
|     (__item)->prev->next = (__item)->next;	\ | ||||
|     (__item)->next->prev = (__item)->prev;	\ | ||||
|     (__item)->next = (__item);			\ | ||||
|     (__item)->prev = (__item);			\ | ||||
|   } while(0) | ||||
| 
 | ||||
| #define DRMLISTENTRY(__type, __item, __field)   \ | ||||
|     ((__type *)(((char *) (__item)) - offsetof(__type, __field))) | ||||
| 
 | ||||
| typedef struct _drmFence{ | ||||
|         unsigned handle; | ||||
|         int class; | ||||
|         unsigned type;  | ||||
|         unsigned flags; | ||||
|         unsigned signaled; | ||||
|         unsigned pad[4]; /* for future expansion */ | ||||
| } drmFence; | ||||
| 
 | ||||
| typedef struct _drmBO{ | ||||
|     drm_bo_type_t type; | ||||
|     unsigned handle; | ||||
|     drm_u64_t mapHandle; | ||||
|     unsigned flags; | ||||
|     unsigned mask; | ||||
|     unsigned mapFlags; | ||||
|     unsigned long size; | ||||
|     unsigned long offset; | ||||
|     unsigned long start; | ||||
|     unsigned replyFlags; | ||||
|     unsigned fenceFlags; | ||||
|     unsigned pageAlignment; | ||||
|     void *virtual; | ||||
|     void *mapVirtual; | ||||
|     int mapCount; | ||||
|     unsigned pad[8];     /* for future expansion */ | ||||
| } drmBO; | ||||
| 
 | ||||
| 
 | ||||
| typedef struct _drmBONode { | ||||
|     drmMMListHead head; | ||||
|     drmBO *buf; | ||||
|     drm_bo_arg_t bo_arg; | ||||
|     unsigned long arg0; | ||||
|     unsigned long arg1; | ||||
| } drmBONode; | ||||
| 
 | ||||
| typedef struct _drmBOList { | ||||
|     unsigned numTarget; | ||||
|     unsigned numCurrent; | ||||
|     unsigned numOnList; | ||||
|     drmMMListHead list; | ||||
|     drmMMListHead free; | ||||
| } drmBOList; | ||||
| 
 | ||||
| /* Fencing */ | ||||
| 
 | ||||
| extern int drmFenceCreate(int fd, unsigned flags, int class, | ||||
| 			  unsigned type,  | ||||
| 			  drmFence *fence); | ||||
| extern int drmFenceDestroy(int fd, const drmFence *fence); | ||||
| extern int drmFenceReference(int fd, unsigned handle, drmFence *fence); | ||||
| extern int drmFenceUnreference(int fd, const drmFence *fence); | ||||
| extern int drmFenceFlush(int fd, drmFence *fence, unsigned flush_type); | ||||
| extern int drmFenceSignaled(int fd, drmFence *fence,  | ||||
| 			    unsigned fenceType, int *signaled); | ||||
| extern int drmFenceWait(int fd, unsigned flags, drmFence *fence,  | ||||
| 			unsigned flush_type); | ||||
| extern int drmFenceEmit(int fd, unsigned flags, drmFence *fence,  | ||||
| 			unsigned emit_type); | ||||
| extern int drmFenceBuffers(int fd, unsigned flags, drmFence *fence); | ||||
| extern int drmFenceUpdate(int fd, drmFence *fence); | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Buffer object list functions. | ||||
|  */ | ||||
| 
 | ||||
| extern void drmBOFreeList(drmBOList *list); | ||||
| extern int drmBOResetList(drmBOList *list); | ||||
| extern void *drmBOListIterator(drmBOList *list); | ||||
| extern void *drmBOListNext(drmBOList *list, void *iterator); | ||||
| extern drmBO *drmBOListBuf(void *iterator); | ||||
| extern int drmBOCreateList(int numTarget, drmBOList *list); | ||||
| 
 | ||||
| /*
 | ||||
|  * Buffer object functions. | ||||
|  */ | ||||
| 
 | ||||
| extern int drmBOCreate(int fd, unsigned long start, unsigned long size, | ||||
| 		       unsigned pageAlignment,void *user_buffer,  | ||||
| 		       drm_bo_type_t type, unsigned mask, | ||||
| 		       unsigned hint, drmBO *buf); | ||||
| extern int drmBODestroy(int fd, drmBO *buf); | ||||
| extern int drmBOReference(int fd, unsigned handle, drmBO *buf); | ||||
| extern int drmBOUnReference(int fd, drmBO *buf); | ||||
| extern int drmBOMap(int fd, drmBO *buf, unsigned mapFlags, unsigned mapHint, | ||||
| 		    void **address); | ||||
| extern int drmBOUnmap(int fd, drmBO *buf); | ||||
| extern int drmBOValidate(int fd, drmBO *buf, unsigned flags, unsigned mask,  | ||||
| 			 unsigned hint); | ||||
| extern int drmBOFence(int fd, drmBO *buf, unsigned flags, unsigned fenceHandle); | ||||
| extern int drmBOInfo(int fd, drmBO *buf); | ||||
| extern int drmBOBusy(int fd, drmBO *buf, int *busy); | ||||
| 
 | ||||
| 
 | ||||
| extern int drmAddValidateItem(drmBOList *list, drmBO *buf, unsigned flags,  | ||||
| 		       unsigned mask, | ||||
| 		       int *newItem); | ||||
| extern int drmBOValidateList(int fd, drmBOList *list); | ||||
| extern int drmBOFenceList(int fd, drmBOList *list, unsigned fenceHandle); | ||||
| extern int drmBOWaitIdle(int fd, drmBO *buf, unsigned hint); | ||||
| 
 | ||||
| /*
 | ||||
|  * Initialization functions. | ||||
|  */ | ||||
| 
 | ||||
| extern int drmMMInit(int fd, unsigned long pOffset, unsigned long pSize, | ||||
| 		     unsigned memType); | ||||
| extern int drmMMTakedown(int fd, unsigned memType); | ||||
| extern int drmMMLock(int fd, unsigned memType); | ||||
| extern int drmMMUnlock(int fd, unsigned memType); | ||||
| 
 | ||||
| 
 | ||||
| #endif | ||||
|  | @ -547,7 +547,7 @@ MouseConfig(void) | |||
|     if (str == NULL) | ||||
| #ifdef WSCONS_SUPPORT | ||||
| 	str = "/dev/wsmouse"; | ||||
| #elif defined(__FreeBSD__) | ||||
| #elif defined(__FreeBSD__) || defined(__DragonFly__) | ||||
| 	str = "/dev/sysmouse"; | ||||
| #elif defined(__UNIXOS2__) | ||||
| 	str = "mouse$"; | ||||
|  |  | |||
|  | @ -490,7 +490,7 @@ struct { | |||
| 
 | ||||
| #ifdef WSCONS_SUPPORT | ||||
| # define DEF_MOUSEDEV "/dev/wsmouse"; | ||||
| #elif defined(__FreeBSD__) | ||||
| #elif defined(__FreeBSD__) || defined(__DragonFly__) | ||||
| # define DEF_MOUSEDEV "/dev/sysmouse"; | ||||
| #elif defined(__linux__) | ||||
| # define DEF_MOUSEDEV "/dev/input/mice"; | ||||
|  |  | |||
|  | @ -1,10 +0,0 @@ | |||
| /* 
 | ||||
|  * libdrm-config.h.in: not at all generated. | ||||
|  */ | ||||
| 
 | ||||
| /* Number of bits in a file offset, on hosts where this is settable. */ | ||||
| #undef _FILE_OFFSET_BITS | ||||
| 
 | ||||
| /* Define for large files, on AIX-style hosts. */ | ||||
| #undef _LARGE_FILES | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue