DRI: call drmSetServerInfo() before drmOpen().
Also, remove some libdrm remnants.
This commit is contained in:
parent
acb5ff4c73
commit
5bfe7f4dfc
|
@ -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
|
||||
|
|
|
@ -84,6 +84,8 @@ static RESTYPE DRIDrawablePrivResType;
|
|||
static RESTYPE DRIContextPrivResType;
|
||||
static void DRIDestroyDummyContext(ScreenPtr pScreen, Bool hasCtxPriv);
|
||||
|
||||
static drmServerInfo DRIDRMServerInfo;
|
||||
|
||||
/* Wrapper just like xf86DrvMsg, but
|
||||
without the verbosity level checking.
|
||||
This will make it easy to turn off some
|
||||
|
@ -174,6 +176,8 @@ DRIScreenInit(ScreenPtr pScreen, DRIInfoPtr pDRIInfo, int *pDRMFD)
|
|||
else
|
||||
openbusid = NULL;
|
||||
|
||||
drmSetServerInfo(&DRIDRMServerInfo);
|
||||
|
||||
/* Note that drmOpen will try to load the kernel module, if needed. */
|
||||
fd = drmOpen(pDRIInfo->drmDriverName, openbusid);
|
||||
if (fd < 0) {
|
||||
|
@ -622,8 +626,6 @@ DRIExtensionInit(void)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
drmSetServerInfo(&DRIDRMServerInfo);
|
||||
|
||||
RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -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
|
|
@ -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