[Intel-gfx] [PATCH] XvMC: enable XvMC on DRI2

David Amiel david at lesamiel.fr
Tue May 5 12:00:16 CEST 2009


Hello,

what is the difference/relation between your patch and the xvmc-vld branch ?

regards,

David


Le Lun 4 mai 2009 09:15, Xiang, Haihao a écrit :
> ---
>  configure.ac          |   14 +-
>  src/i830_driver.c     |    5 +-
>  src/i830_hwmc.c       |   32 ++-
>  src/i830_hwmc.h       |    1 -
>  src/i915_hwmc.c       |    6 +-
>  src/i915_hwmc.h       |    1 -
>  src/i915_video.c      |   23 ++-
>  src/i965_hwmc.c       |    2 -
>  src/xvmc/Makefile.am  |    5 +-
>  src/xvmc/dri2.c       |  301 ++++++++++++++++++++++++++
>  src/xvmc/dri2.h       |   70 ++++++
>  src/xvmc/i915_xvmc.c  |   17 +--
>  src/xvmc/i915_xvmc.h  |    2 -
>  src/xvmc/intel_xvmc.c |  148 +++++--------
>  src/xvmc/intel_xvmc.h |   10 -
>  src/xvmc/xf86dri.c    |  565
> -------------------------------------------------
>  src/xvmc/xf86dri.h    |  117 ----------
>  src/xvmc/xf86dristr.h |  389 ----------------------------------
>  18 files changed, 482 insertions(+), 1226 deletions(-)
>  create mode 100644 src/xvmc/dri2.c
>  create mode 100644 src/xvmc/dri2.h
>  delete mode 100644 src/xvmc/xf86dri.c
>  delete mode 100644 src/xvmc/xf86dri.h
>  delete mode 100644 src/xvmc/xf86dristr.h
>
> diff --git a/configure.ac b/configure.ac
> index 12fec79..e17d8ea 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -70,10 +70,10 @@ AC_ARG_ENABLE(video-debug,
> AC_HELP_STRING([--enable-video-debug],
>                [VIDEO_DEBUG="$enableval"],
>                [VIDEO_DEBUG=no])
>
> -dnl AC_ARG_ENABLE(xvmc, AC_HELP_STRING([--disable-xvmc],
> -dnl                                   [Disable XvMC support
> [[default=auto]]]),
> -dnl               [XVMC="$enableval"],
> -dnl               [XVMC=auto])
> +AC_ARG_ENABLE(xvmc, AC_HELP_STRING([--disable-xvmc],
> +                                  [Disable XvMC support
> [[default=yes]]]),
> +              [XVMC="$enableval"],
> +              [XVMC=yes])
>
>  # Checks for extensions
>  XORG_DRIVER_CHECK_EXT(XINERAMA, xineramaproto)
> @@ -142,12 +142,6 @@ if test "$VIDEO_DEBUG" = yes; then
>  	AC_DEFINE(VIDEO_DEBUG,1,[Enable debug support])
>  fi
>
> -if test "$XVMC" = auto; then
> -	XVMC="$DRI"
> -fi
> -if test "$XVMC" = yes && test "$DRI" = no; then
> -	AC_MSG_ERROR([XvMC can't be enabled without DRI])
> -fi
>  if test "$XVMC" = yes; then
>  	PKG_CHECK_MODULES(XVMCLIB, [xvmc], [XVMC=yes], [XVMC=no])
>  	PKG_CHECK_MODULES(XEXT, [xext])
> diff --git a/src/i830_driver.c b/src/i830_driver.c
> index 1887a51..a4f8716 100644
> --- a/src/i830_driver.c
> +++ b/src/i830_driver.c
> @@ -2756,8 +2756,9 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int
> argc, char **argv)
>
>  #ifdef INTEL_XVMC
>      pI830->XvMCEnabled = FALSE;
> -    from =  xf86GetOptValBool(pI830->Options, OPTION_XVMC,
> -			      &pI830->XvMCEnabled) ? X_CONFIG : X_DEFAULT;
> +    from = ((pI830->directRenderingType == DRI_DRI2) &&
> +            xf86GetOptValBool(pI830->Options, OPTION_XVMC,
> +                              &pI830->XvMCEnabled) ? X_CONFIG :
> X_DEFAULT);
>      xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n",
>  	       pI830->XvMCEnabled ? "en" : "dis");
>  #endif
> diff --git a/src/i830_hwmc.c b/src/i830_hwmc.c
> index ecefb5b..10e3318 100644
> --- a/src/i830_hwmc.c
> +++ b/src/i830_hwmc.c
> @@ -52,12 +52,6 @@ Bool intel_xvmc_probe(ScrnInfoPtr pScrn)
>      I830Ptr pI830 = I830PTR(pScrn);
>      Bool ret = FALSE;
>
> -    /* Disable XvMC on DRI2 for now */
> -    if (pI830->directRenderingType == DRI_DRI2) {
> -	pI830->XvMCEnabled = FALSE;
> -	return FALSE;
> -    }
> -
>      if (!pI830->XvMCEnabled)
>  	return FALSE;
>
> @@ -83,6 +77,9 @@ void intel_xvmc_finish(ScrnInfoPtr pScrn)
>  Bool intel_xvmc_driver_init(ScreenPtr pScreen, XF86VideoAdaptorPtr
> xv_adaptor)
>  {
>      ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
> +    I830Ptr pI830 = I830PTR(pScrn);
> +    struct drm_i915_setparam sp;
> +    int ret;
>
>      if (!xvmc_driver) {
>  	ErrorF("Failed to probe XvMC driver.\n");
> @@ -93,14 +90,23 @@ Bool intel_xvmc_driver_init(ScreenPtr pScreen,
> XF86VideoAdaptorPtr xv_adaptor)
>  	ErrorF("XvMC driver initialize failed.\n");
>  	return FALSE;
>      }
> -    return TRUE;
> +
> +    /* Currently XvMC uses batchbuffer */
> +    sp.param = I915_SETPARAM_ALLOW_BATCHBUFFER;
> +    sp.value = 1;
> +    ret = drmCommandWrite(pI830->drmSubFD, DRM_I915_SETPARAM,
> +                          &sp, sizeof(sp));
> +    if (ret == 0)
> +        return TRUE;
> +
> +    return FALSE;
>  }
>
>  Bool intel_xvmc_screen_init(ScreenPtr pScreen)
>  {
>      ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
>      I830Ptr pI830 = I830PTR(pScrn);
> -    DRIInfoPtr pDRIInfo = pI830->pDRIInfo;
> +    char buf[64];
>
>      if (!xvmc_driver)
>  	return FALSE;
> @@ -117,9 +123,15 @@ Bool intel_xvmc_screen_init(ScreenPtr pScreen)
>  	return FALSE;
>      }
>
> +    sprintf(buf, "pci:%04x:%02x:%02x.%d",
> +            pI830->PciInfo->domain,
> +            pI830->PciInfo->bus,
> +            pI830->PciInfo->dev,
> +            pI830->PciInfo->func);
> +
>      xf86XvMCRegisterDRInfo(pScreen, INTEL_XVMC_LIBNAME,
> -		    pDRIInfo->busIdString,
> -		    INTEL_XVMC_MAJOR, INTEL_XVMC_MINOR, INTEL_XVMC_PATCHLEVEL);
> +                           buf,
> +                           INTEL_XVMC_MAJOR, INTEL_XVMC_MINOR,
> INTEL_XVMC_PATCHLEVEL);
>      return TRUE;
>  }
>
> diff --git a/src/i830_hwmc.h b/src/i830_hwmc.h
> index 41f6441..2564151 100644
> --- a/src/i830_hwmc.h
> +++ b/src/i830_hwmc.h
> @@ -65,7 +65,6 @@ struct hwmc_buffer
>
>  struct _intel_xvmc_common {
>      unsigned int type;
> -    unsigned int sarea_size;
>      struct hwmc_buffer batchbuffer;
>  };
>
> diff --git a/src/i915_hwmc.c b/src/i915_hwmc.c
> index 659638e..0723c80 100644
> --- a/src/i915_hwmc.c
> +++ b/src/i915_hwmc.c
> @@ -416,8 +416,6 @@ static int i915_xvmc_create_context (ScrnInfoPtr
> pScrn, XvMCContextPtr pContext,
>                                    int *num_priv, long **priv )
>  {
>      I830Ptr pI830 = I830PTR(pScrn);
> -    DRIInfoPtr pDRIInfo = pI830->pDRIInfo;
> -    I830DRIPtr pI830DRI = pDRIInfo->devPrivate;
>      I915XvMCCreateContextRec *contextRec = NULL;
>      I915XvMCPtr pXvMC = (I915XvMCPtr)xvmc_driver->devPrivate;
>      I915XvMCContextPriv *ctxpriv = NULL;
> @@ -490,7 +488,6 @@ static int i915_xvmc_create_context (ScrnInfoPtr
> pScrn, XvMCContextPtr pContext,
>
>      /* common context items */
>      contextRec->comm.type = xvmc_driver->flag;
> -    contextRec->comm.sarea_size = pDRIInfo->SAREASize;
>      contextRec->comm.batchbuffer.offset = xvmc_driver->batch->offset;
>      contextRec->comm.batchbuffer.size = xvmc_driver->batch->size;
>      contextRec->comm.batchbuffer.handle = xvmc_driver->batch_handle;
> @@ -515,8 +512,7 @@ static int i915_xvmc_create_context (ScrnInfoPtr
> pScrn, XvMCContextPtr pContext,
>      contextRec->corrdata.handle = ctxpriv->corrdata_handle;
>      contextRec->corrdata.offset = ctxpriv->mcCorrdata->offset;
>      contextRec->corrdata.size = ctxpriv->mcCorrdata->size;
> -    contextRec->sarea_priv_offset = sizeof(XF86DRISAREARec);
> -    contextRec->deviceID = pI830DRI->deviceID;
> +    contextRec->deviceID = DEVICE_ID(pI830->PciInfo);
>
>      if (IS_I915G(pI830) || IS_I915GM(pI830)) {
>  	contextRec->sis.bus_addr = ctxpriv->mcStaticIndirectState->bus_addr;
> diff --git a/src/i915_hwmc.h b/src/i915_hwmc.h
> index 8f6557d..abd3171 100644
> --- a/src/i915_hwmc.h
> +++ b/src/i915_hwmc.h
> @@ -49,7 +49,6 @@ typedef struct
>      struct hwmc_buffer psp;
>      struct hwmc_buffer psc;
>      struct hwmc_buffer corrdata;/* Correction Data Buffer */
> -    unsigned int sarea_priv_offset;
>      int deviceID;
>  } I915XvMCCreateContextRec;
>
> diff --git a/src/i915_video.c b/src/i915_video.c
> index 150cf04..1ef58ac 100644
> --- a/src/i915_video.c
> +++ b/src/i915_video.c
> @@ -172,7 +172,10 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn,
> I830PortPrivPtr pPriv, int id,
>
>        OUT_BATCH(_3DSTATE_MAP_STATE | 3);
>        OUT_BATCH(0x00000001);	/* texture map #1 */
> -      OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->YBuf0offset);
> +      if (pPriv->buf)
> +          OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->YBuf0offset);
> +      else
> +          OUT_BATCH(pPriv->YBuf0offset);
>
>        ms3 = MAPSURF_422 | MS3_USE_FENCE_REGS;
>        switch (id) {
> @@ -281,7 +284,11 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn,
> I830PortPrivPtr pPriv, int id,
>        OUT_BATCH(_3DSTATE_MAP_STATE | 9);
>        OUT_BATCH(0x00000007);
>
> -      OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->YBuf0offset);
> +      if (pPriv->buf)
> +          OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->YBuf0offset);
> +      else
> +          OUT_BATCH(pPriv->YBuf0offset);
> +
>        ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS;
>        ms3 |= (height - 1) << MS3_HEIGHT_SHIFT;
>        ms3 |= (width - 1) << MS3_WIDTH_SHIFT;
> @@ -294,14 +301,22 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn,
> I830PortPrivPtr pPriv, int id,
>        else
>  	  OUT_BATCH(((video_pitch * 2 / 4) - 1) << MS4_PITCH_SHIFT);
>
> -      OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->UBuf0offset);
> +      if (pPriv->buf)
> +          OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->UBuf0offset);
> +      else
> +          OUT_BATCH(pPriv->UBuf0offset);
> +
>        ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS;
>        ms3 |= (height / 2 - 1) << MS3_HEIGHT_SHIFT;
>        ms3 |= (width / 2 - 1) << MS3_WIDTH_SHIFT;
>        OUT_BATCH(ms3);
>        OUT_BATCH(((video_pitch / 4) - 1) << MS4_PITCH_SHIFT);
>
> -      OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->VBuf0offset);
> +      if (pPriv->buf)
> +          OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0,
> pPriv->VBuf0offset);
> +      else
> +          OUT_BATCH(pPriv->VBuf0offset);
> +
>        ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS;
>        ms3 |= (height / 2 - 1) << MS3_HEIGHT_SHIFT;
>        ms3 |= (width / 2 - 1) << MS3_WIDTH_SHIFT;
> diff --git a/src/i965_hwmc.c b/src/i965_hwmc.c
> index d9b4f0d..b60b056 100644
> --- a/src/i965_hwmc.c
> +++ b/src/i965_hwmc.c
> @@ -111,7 +111,6 @@ static int create_context(ScrnInfoPtr pScrn,
>  {
>          struct i965_xvmc_context *private_context, *context_dup;
>  	I830Ptr I830 = I830PTR(pScrn);
> -    	DRIInfoPtr driinfo = I830->pDRIInfo;
>
>  	unsigned int blocknum =
>  		(((context->width + 15)/16)*((context->height+15)/16));
> @@ -130,7 +129,6 @@ static int create_context(ScrnInfoPtr pScrn,
>  	private_context->is_g4x = IS_G4X(I830);
>  	private_context->is_965_q = IS_965_Q(I830);
>  	private_context->comm.type = xvmc_driver->flag;
> -	private_context->comm.sarea_size = driinfo->SAREASize;
>  	private_context->comm.batchbuffer.offset = xvmc_driver->batch->offset;
>  	private_context->comm.batchbuffer.size = xvmc_driver->batch->size;
>  	private_context->comm.batchbuffer.handle = xvmc_driver->batch_handle;
> diff --git a/src/xvmc/Makefile.am b/src/xvmc/Makefile.am
> index a376eb7..3d0b506 100644
> --- a/src/xvmc/Makefile.am
> +++ b/src/xvmc/Makefile.am
> @@ -21,9 +21,8 @@ libIntelXvMC_la_SOURCES = intel_xvmc.c \
>          i965_xvmc.h                    \
>          intel_batchbuffer.c            \
>          intel_batchbuffer.h            \
> -        xf86dri.c                      \
> -        xf86dri.h                      \
> -        xf86dristr.h
> +        dri2.c                         \
> +        dri2.h
>
>  libIntelXvMC_la_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \
>  	@XVMCLIB_CFLAGS@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0
> diff --git a/src/xvmc/dri2.c b/src/xvmc/dri2.c
> new file mode 100644
> index 0000000..f967432
> --- /dev/null
> +++ b/src/xvmc/dri2.c
> @@ -0,0 +1,301 @@
> +/*
> + * Copyright ?? 2008 Red Hat, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining
> a
> + * copy of this software and associated documentation files (the "Soft-
> + * ware"), to deal in the Software without restriction, including without
> + * limitation the rights to use, copy, modify, merge, publish,
> distribute,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, provided that the above copyright
> + * notice(s) and this permission notice appear in all copies of the Soft-
> + * ware and that both the above copyright notice(s) and this permission
> + * notice appear in supporting documentation.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABIL-
> + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
> PARTY
> + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
> + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
> + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
> USE,
> + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
> + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
> PERFOR-
> + * MANCE OF THIS SOFTWARE.
> + *
> + * Except as contained in this notice, the name of a copyright holder
> shall
> + * not be used in advertising or otherwise to promote the sale, use or
> + * other dealings in this Software without prior written authorization of
> + * the copyright holder.
> + *
> + * Authors:
> + *   Kristian H??gsberg (krh at redhat.com)
> + */
> +
> +
> +#define NEED_REPLIES
> +#include <X11/Xlibint.h>
> +#include <X11/extensions/Xext.h>
> +#include <X11/extensions/extutil.h>
> +#include <X11/extensions/dri2proto.h>
> +#include "xf86drm.h"
> +#include "dri2.h"
> +
> +static char dri2ExtensionName[] = DRI2_NAME;
> +static XExtensionInfo *dri2Info;
> +static XEXT_GENERATE_CLOSE_DISPLAY (DRI2CloseDisplay, dri2Info)
> +static /* const */ XExtensionHooks dri2ExtensionHooks = {
> +    NULL,				/* create_gc */
> +    NULL,				/* copy_gc */
> +    NULL,				/* flush_gc */
> +    NULL,				/* free_gc */
> +    NULL,				/* create_font */
> +    NULL,				/* free_font */
> +    DRI2CloseDisplay,			/* close_display */
> +    NULL,				/* wire_to_event */
> +    NULL,				/* event_to_wire */
> +    NULL,				/* error */
> +    NULL,				/* error_string */
> +};
> +
> +static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay, dri2Info,
> +				   dri2ExtensionName,
> +				   &dri2ExtensionHooks,
> +				   0, NULL)
> +
> +Bool DRI2QueryExtension(Display *dpy, int *eventBase, int *errorBase)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +
> +    if (XextHasExtension(info)) {
> +	*eventBase = info->codes->first_event;
> +	*errorBase = info->codes->first_error;
> +	return True;
> +    }
> +
> +    return False;
> +}
> +
> +Bool DRI2QueryVersion(Display *dpy, int *major, int *minor)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay (dpy);
> +    xDRI2QueryVersionReply rep;
> +    xDRI2QueryVersionReq *req;
> +
> +    XextCheckExtension (dpy, info, dri2ExtensionName, False);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2QueryVersion, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2QueryVersion;
> +    req->majorVersion = DRI2_MAJOR;
> +    req->minorVersion = DRI2_MINOR;
> +    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +    *major = rep.majorVersion;
> +    *minor = rep.minorVersion;
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +
> +    return True;
> +}
> +
> +Bool DRI2Connect(Display *dpy, XID window,
> +		 char **driverName, char **deviceName)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2ConnectReply rep;
> +    xDRI2ConnectReq *req;
> +
> +    XextCheckExtension (dpy, info, dri2ExtensionName, False);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2Connect, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2Connect;
> +    req->window = window;
> +    req->driverType = DRI2DriverDRI;
> +    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +
> +    if (rep.driverNameLength == 0 && rep.deviceNameLength == 0) {
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +
> +    *driverName = Xmalloc(rep.driverNameLength + 1);
> +    if (*driverName == NULL) {
> +	_XEatData(dpy,
> +		  ((rep.driverNameLength + 3) & ~3) +
> +		  ((rep.deviceNameLength + 3) & ~3));
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +    _XReadPad(dpy, *driverName, rep.driverNameLength);
> +    (*driverName)[rep.driverNameLength] = '\0';
> +
> +    *deviceName = Xmalloc(rep.deviceNameLength + 1);
> +    if (*deviceName == NULL) {
> +	Xfree(*driverName);
> +	_XEatData(dpy, ((rep.deviceNameLength + 3) & ~3));
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +    _XReadPad(dpy, *deviceName, rep.deviceNameLength);
> +    (*deviceName)[rep.deviceNameLength] = '\0';
> +
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +
> +    return True;
> +}
> +
> +Bool DRI2Authenticate(Display *dpy, XID window, drm_magic_t magic)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2AuthenticateReq *req;
> +    xDRI2AuthenticateReply rep;
> +
> +    XextCheckExtension (dpy, info, dri2ExtensionName, False);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2Authenticate, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2Authenticate;
> +    req->window = window;
> +    req->magic = magic;
> +
> +    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return False;
> +    }
> +
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +
> +    return rep.authenticated;
> +}
> +
> +void DRI2CreateDrawable(Display *dpy, XID drawable)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2CreateDrawableReq *req;
> +
> +    XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2CreateDrawable, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2CreateDrawable;
> +    req->drawable = drawable;
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +}
> +
> +void DRI2DestroyDrawable(Display *dpy, XID drawable)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2DestroyDrawableReq *req;
> +
> +    XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
> +
> +    XSync(dpy, False);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2DestroyDrawable, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2DestroyDrawable;
> +    req->drawable = drawable;
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +}
> +
> +DRI2Buffer *DRI2GetBuffers(Display *dpy, XID drawable,
> +			   int *width, int *height,
> +			   unsigned int *attachments, int count,
> +			   int *outCount)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2GetBuffersReply rep;
> +    xDRI2GetBuffersReq *req;
> +    DRI2Buffer *buffers;
> +    xDRI2Buffer repBuffer;
> +    CARD32 *p;
> +    int i;
> +
> +    XextCheckExtension (dpy, info, dri2ExtensionName, False);
> +
> +    LockDisplay(dpy);
> +    GetReqExtra(DRI2GetBuffers, count * 4, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2GetBuffers;
> +    req->drawable = drawable;
> +    req->count = count;
> +    p = (CARD32 *) &req[1];
> +    for (i = 0; i < count; i++)
> +	p[i] = attachments[i];
> +
> +    if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return NULL;
> +    }
> +
> +    *width = rep.width;
> +    *height = rep.height;
> +    *outCount = rep.count;
> +
> +    buffers = Xmalloc(rep.count * sizeof buffers[0]);
> +    if (buffers == NULL) {
> +	_XEatData(dpy, rep.count * sizeof repBuffer);
> +	UnlockDisplay(dpy);
> +	SyncHandle();
> +	return NULL;
> +    }
> +
> +    for (i = 0; i < rep.count; i++) {
> +	_XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer);
> +	buffers[i].attachment = repBuffer.attachment;
> +	buffers[i].name = repBuffer.name;
> +	buffers[i].pitch = repBuffer.pitch;
> +	buffers[i].cpp = repBuffer.cpp;
> +	buffers[i].flags = repBuffer.flags;
> +    }
> +
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +
> +    return buffers;
> +}
> +
> +void DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region,
> +		    CARD32 dest, CARD32 src)
> +{
> +    XExtDisplayInfo *info = DRI2FindDisplay(dpy);
> +    xDRI2CopyRegionReq *req;
> +    xDRI2CopyRegionReply rep;
> +
> +    XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
> +
> +    LockDisplay(dpy);
> +    GetReq(DRI2CopyRegion, req);
> +    req->reqType = info->codes->major_opcode;
> +    req->dri2ReqType = X_DRI2CopyRegion;
> +    req->drawable = drawable;
> +    req->region = region;
> +    req->dest = dest;
> +    req->src = src;
> +
> +    _XReply(dpy, (xReply *)&rep, 0, xFalse);
> +
> +    UnlockDisplay(dpy);
> +    SyncHandle();
> +}
> diff --git a/src/xvmc/dri2.h b/src/xvmc/dri2.h
> new file mode 100644
> index 0000000..356c6bc
> --- /dev/null
> +++ b/src/xvmc/dri2.h
> @@ -0,0 +1,70 @@
> +/*
> + * Copyright ?? 2007,2008 Red Hat, Inc.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining
> a
> + * copy of this software and associated documentation files (the "Soft-
> + * ware"), to deal in the Software without restriction, including without
> + * limitation the rights to use, copy, modify, merge, publish,
> distribute,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, provided that the above copyright
> + * notice(s) and this permission notice appear in all copies of the Soft-
> + * ware and that both the above copyright notice(s) and this permission
> + * notice appear in supporting documentation.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS
> + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABIL-
> + * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
> PARTY
> + * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
> + * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
> + * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
> USE,
> + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
> + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
> PERFOR-
> + * MANCE OF THIS SOFTWARE.
> + *
> + * Except as contained in this notice, the name of a copyright holder
> shall
> + * not be used in advertising or otherwise to promote the sale, use or
> + * other dealings in this Software without prior written authorization of
> + * the copyright holder.
> + *
> + * Authors:
> + *   Kristian H??gsberg (krh at redhat.com)
> + */
> +
> +#ifndef _DRI2_H_
> +#define _DRI2_H_
> +
> +#include <X11/extensions/Xfixes.h>
> +#include <X11/extensions/dri2tokens.h>
> +
> +typedef struct {
> +    unsigned int attachment;
> +    unsigned int name;
> +    unsigned int pitch;
> +    unsigned int cpp;
> +    unsigned int flags;
> +} DRI2Buffer;
> +
> +extern Bool
> +DRI2QueryExtension(Display *display, int *eventBase, int *errorBase);
> +extern Bool
> +DRI2QueryVersion(Display *display, int *major, int *minor);
> +extern Bool
> +DRI2Connect(Display *display, XID window,
> +	    char **driverName, char **deviceName);
> +extern Bool
> +DRI2Authenticate(Display *display, XID window, drm_magic_t magic);
> +extern void
> +DRI2CreateDrawable(Display *display, XID drawable);
> +extern void
> +DRI2DestroyDrawable(Display *display, XID handle);
> +extern DRI2Buffer *
> +DRI2GetBuffers(Display *dpy, XID drawable,
> +	       int *width, int *height,
> +	       unsigned int *attachments, int count,
> +	       int *outCount);
> +
> +extern void
> +DRI2CopyRegion(Display *dpy, XID drawable, XserverRegion region,
> +	       CARD32 dest, CARD32 src);
> +
> +#endif
> diff --git a/src/xvmc/i915_xvmc.c b/src/xvmc/i915_xvmc.c
> index c32073a..d6f7f01 100644
> --- a/src/xvmc/i915_xvmc.c
> +++ b/src/xvmc/i915_xvmc.c
> @@ -1560,7 +1560,6 @@ static Status i915_xvmc_mc_create_context(Display
> *display, XvMCContext *context
>  {
>      i915XvMCContext *pI915XvMC = NULL;
>      I915XvMCCreateContextRec *tmpComm = NULL;
> -    drm_sarea_t *pSAREA;
>
>      XVMC_DBG("%s\n", __FUNCTION__);
>
> @@ -1612,15 +1611,11 @@ static Status i915_xvmc_mc_create_context(Display
> *display, XvMCContext *context
>      pI915XvMC->corrdata.handle = tmpComm->corrdata.handle;
>      pI915XvMC->corrdata.offset = tmpComm->corrdata.offset;
>      pI915XvMC->corrdata.size = tmpComm->corrdata.size;
> -    pI915XvMC->sarea_priv_offset = tmpComm->sarea_priv_offset;
>
>      /* Must free the private data we were passed from X */
>      XFree(priv_data);
>      priv_data = NULL;
>
> -    pSAREA = (drm_sarea_t *)xvmc_driver->sarea_address;
> -    pI915XvMC->sarea = (drmI830Sarea*)((char*)pSAREA +
> pI915XvMC->sarea_priv_offset);
> -
>      if (i915_xvmc_map_buffers(pI915XvMC)) {
>          i915_xvmc_unmap_buffers(pI915XvMC);
>          free(pI915XvMC);
> @@ -2042,11 +2037,6 @@ static int i915_xvmc_mc_get_surface_status(Display
> *display,
>          }
>      }
>
> -    if (pI915Surface->last_render &&
> -        (pI915Surface->last_render > pI915XvMC->sarea->last_dispatch)) {
> -        *stat |= XVMC_RENDERING;
> -    }
> -
>      PPTHREAD_MUTEX_UNLOCK();
>      return 0;
>  }
> @@ -2457,12 +2447,7 @@ Status i915_xvmc_get_subpict_status(Display
> *display, XvMCSubpicture *subpicture
>          return XvMCBadSubpicture;
>
>      PPTHREAD_MUTEX_LOCK();
> -    /* FIXME: */
> -    if (pI915Subpicture->last_render &&
> -        (pI915Subpicture->last_render > pI915XvMC->sarea->last_dispatch))
> {
> -        *stat |= XVMC_RENDERING;
> -    }
> -
> +
>      PPTHREAD_MUTEX_UNLOCK();
>      return Success;
>  }
> diff --git a/src/xvmc/i915_xvmc.h b/src/xvmc/i915_xvmc.h
> index af0a77d..de9eb78 100644
> --- a/src/xvmc/i915_xvmc.h
> +++ b/src/xvmc/i915_xvmc.h
> @@ -55,8 +55,6 @@ typedef struct _i915XvMCContext {
>      unsigned int yStride;
>      unsigned int uvStride;
>      unsigned short ref;
> -    volatile drmI830Sarea *sarea;
> -    unsigned int sarea_priv_offset;	        /* Offset in sarea to private
> part */
>      unsigned int depth;
>      XvPortID port;		       /* Xv Port ID when displaying */
>      int haveXv;                        /* Have I initialized the Xv
> diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c
> index 4b73caa..7910555 100644
> --- a/src/xvmc/intel_xvmc.c
> +++ b/src/xvmc/intel_xvmc.c
> @@ -100,21 +100,12 @@ unsigned int mb_bytes_420[] = {
>
>  int DEBUG;
>
> -static int error_base;
> -static int event_base;
> -
>  static void intel_xvmc_debug_init(void)
>  {
>      if (getenv("INTEL_XVMC_DEBUG"))
>  	DEBUG = 1;
>  }
>
> -/* locking */
> -static void intel_xvmc_try_heavy_lock(drm_context_t ctx)
> -{
> -    drmGetLock(xvmc_driver->fd, ctx, 0);
> -}
> -
>  void LOCK_HARDWARE(drm_context_t ctx)
>  {
>      char __ret = 0;
> @@ -122,19 +113,13 @@ void LOCK_HARDWARE(drm_context_t ctx)
>      PPTHREAD_MUTEX_LOCK();
>      assert(!xvmc_driver->locked);
>
> -    DRM_CAS(xvmc_driver->driHwLock, ctx,
> -            (DRM_LOCK_HELD | ctx), __ret);
> -
> -    if (__ret)
> -	intel_xvmc_try_heavy_lock(ctx);
> -
>      xvmc_driver->locked = 1;
>  }
>
>  void UNLOCK_HARDWARE(drm_context_t ctx)
>  {
>      xvmc_driver->locked = 0;
> -    DRM_UNLOCK(xvmc_driver->fd, xvmc_driver->driHwLock, ctx);
> +
>      PPTHREAD_MUTEX_UNLOCK();
>  }
>
> @@ -269,17 +254,18 @@ _X_EXPORT Status XvMCCreateContext(Display *display,
> XvPortID port,
>                           int flags, XvMCContext *context)
>  {
>      Status ret;
> -    drm_sarea_t *pSAREA;
> -    char *curBusID;
>      CARD32 *priv_data = NULL;
>      struct _intel_xvmc_common *comm;
>      drm_magic_t magic;
>      int major, minor;
> +    int error_base;
> +    int event_base;
>      int priv_count;
>      int isCapable;
>      int screen = DefaultScreen(display);
>      intel_xvmc_context_ptr intel_ctx;
>      int fd;
> +    char *driverName = NULL, *deviceName = NULL;
>
>      /* Verify Obvious things first */
>      if (!display || !context)
> @@ -354,7 +340,6 @@ _X_EXPORT Status XvMCCreateContext(Display *display,
> XvPortID port,
>
>      XVMC_INFO("decoder type is %s",
> intel_xvmc_decoder_string(comm->type));
>
> -    xvmc_driver->sarea_size = comm->sarea_size;
>      xvmc_driver->batchbuffer.handle = comm->batchbuffer.handle;
>      xvmc_driver->batchbuffer.offset = comm->batchbuffer.offset;
>      xvmc_driver->batchbuffer.size = comm->batchbuffer.size;
> @@ -367,70 +352,60 @@ _X_EXPORT Status XvMCCreateContext(Display *display,
> XvPortID port,
>      }
>      intel_ctx->context = context;
>
> -    ret = uniDRIQueryDirectRenderingCapable(display, screen,
> -                                            &isCapable);
> -    if (!ret || !isCapable) {
> -	XVMC_ERR("Direct Rendering is not available on this system!");
> -	XFree(priv_data);
> -        return BadValue;
> -    }
> +    /* check DRI2 */
> +    ret = Success;
> +    xvmc_driver->fd = -1;
>
> -    if (!uniDRIOpenConnection(display, screen,
> -                              &xvmc_driver->hsarea, &curBusID)) {
> -        XVMC_ERR("Could not open DRI connection to X server!");
> -	XFree(priv_data);
> -        return BadValue;
> -    }
> +    do {
> +        if (!DRI2QueryExtension(display, &event_base, &error_base)) {
> +            ret = BadValue;
> +            break;
> +        }
> +
> +        if (!DRI2QueryVersion(display, &major, &minor)) {
> +            ret = BadValue;
> +            break;
> +        }
> +
> +        if (!DRI2Connect(display, RootWindow(display, screen),
> +                         &driverName, &deviceName)) {
> +            ret = BadValue;
> +            break;
> +        }
> +
> +        xvmc_driver->fd = open(deviceName, O_RDWR);
> +
> +        if (xvmc_driver->fd < 0) {
> +            XVMC_ERR("Failed to open drm device: %s\n", strerror(errno));
> +            ret = BadValue;
> +            break;
> +        }
> +
> +        if (drmGetMagic(xvmc_driver->fd, &magic)) {
> +            XVMC_ERR("Failed to get magic\n");
> +            ret = BadValue;
> +            break;
> +        }
> +
> +        if (!DRI2Authenticate(display, RootWindow(display, screen),
> magic)) {
> +            XVMC_ERR("Failed to authenticate magic %d\n", magic);
> +            ret = BadValue;
> +            break;
> +        }
> +    } while (0);
> +
> +    XFree(driverName);
> +    XFree(deviceName);
>
> -    /* Open DRI Device */
> -    if((fd = drmOpen("i915", curBusID)) < 0) {
> -        XVMC_ERR("DRM Device could not be opened.");
> +    if (ret != Success) {
>          XFree(priv_data);
> -        XFree(curBusID);
> -        return BadValue;
> -    }
> -
> -    xvmc_driver->fd = fd;
> -
> -    strncpy(xvmc_driver->busID, curBusID, 20);
> -    xvmc_driver->busID[20] = '\0';
> -    XFree(curBusID);
> -
> -    /* Get magic number */
> -    drmGetMagic(xvmc_driver->fd, &magic);
> -    // context->flags = (unsigned long)magic;
> -
> -    if (!uniDRIAuthConnection(display, screen, magic)) {
> -	XVMC_ERR("[XvMC]: X server did not allow DRI. Check permissions.");
> -	xvmc_driver = NULL;
> -	XFree(priv_data);
> -        return BadAlloc;
> -    }
> +        context->privData = NULL;
>
> -    /*
> -     * Map DRI Sarea. we always want it right?
> -     */
> -    if (drmMap(xvmc_driver->fd, xvmc_driver->hsarea,
> -               xvmc_driver->sarea_size, &xvmc_driver->sarea_address) < 0)
> {
> -        XVMC_ERR("Unable to map DRI SAREA.\n");
> -	xvmc_driver = NULL;
> -	XFree(priv_data);
> -        return BadAlloc;
> -    }
> -    pSAREA = (drm_sarea_t *)xvmc_driver->sarea_address;
> -    xvmc_driver->driHwLock = (drmLock *)&pSAREA->lock;
> -    pthread_mutex_init(&xvmc_driver->ctxmutex, NULL);
> +        if (xvmc_driver->fd >= 0)
> +            close(xvmc_driver->fd);
>
> -    /* context_id is alloc in _xvmc_create_context */
> -    if (!uniDRICreateContext(display, screen, DefaultVisual(display,
> screen),
> -			     context->context_id,
> -                             &intel_ctx->hw_context)) {
> -        XVMC_ERR("Could not create DRI context for xvmc ctx %d.",
> -		 (int)context->context_id);
> -	XFree(priv_data);
> -        context->privData = NULL;
> -        drmUnmap(xvmc_driver->sarea_address, xvmc_driver->sarea_size);
> -        return BadAlloc;
> +        xvmc_driver = NULL;
> +        return ret;
>      }
>
>      /* call driver hook.
> @@ -439,12 +414,13 @@ _X_EXPORT Status XvMCCreateContext(Display *display,
> XvPortID port,
>      if (ret) {
>  	XVMC_ERR("driver create context failed\n");
>  	XFree(priv_data);
> -	drmUnmap(xvmc_driver->sarea_address, xvmc_driver->sarea_size);
> +	context->privData = NULL;
> +	xvmc_driver = NULL;
>  	return ret;
>      }
>
> +    pthread_mutex_init(&xvmc_driver->ctxmutex, NULL);
>      intelInitBatchBuffer();
> -
>      intel_xvmc_dump_open();
>
>      return Success;
> @@ -473,7 +449,6 @@ _X_EXPORT Status XvMCDestroyContext(Display *display,
> XvMCContext *context)
>  	return ret;
>      }
>
> -    uniDRIDestroyContext(display, screen, context->context_id);
>      intel_xvmc_free_context(context->context_id);
>
>      ret = _xvmc_destroy_context(display, context);
> @@ -483,18 +458,13 @@ _X_EXPORT Status XvMCDestroyContext(Display
> *display, XvMCContext *context)
>      }
>
>      if (xvmc_driver->num_ctx == 0) {
> -	uniDRICloseConnection(display, screen);
> -
>  	pthread_mutex_destroy(&xvmc_driver->ctxmutex);
>
> -	drmUnmap(xvmc_driver->sarea_address, xvmc_driver->sarea_size);
> -
>  	if (xvmc_driver->fd >= 0)
> -	    drmClose(xvmc_driver->fd);
> +       close(xvmc_driver->fd);
> +
>  	xvmc_driver->fd = -1;
> -
>  	intelFiniBatchBuffer();
> -
>  	intel_xvmc_dump_close();
>      }
>      return Success;
> diff --git a/src/xvmc/intel_xvmc.h b/src/xvmc/intel_xvmc.h
> index 9ef2121..a21bf70 100644
> --- a/src/xvmc/intel_xvmc.h
> +++ b/src/xvmc/intel_xvmc.h
> @@ -51,9 +51,6 @@
>  #include <X11/extensions/Xvlib.h>
>  #include <X11/extensions/XvMC.h>
>  #include <X11/extensions/XvMClib.h>
> -#include <drm_sarea.h>
> -
> -#include "xf86dri.h"
>
>  #include "intel_batchbuffer.h"
>
> @@ -129,11 +126,6 @@ typedef struct _intel_xvmc_driver {
>      int screen;			/* current screen num*/
>
>      int fd;			/* drm file handler */
> -    drm_handle_t hsarea;	/* DRI open connect */
> -    char busID[32];
> -
> -    unsigned int sarea_size;
> -    drmAddress sarea_address;
>
>      struct {
>  	unsigned int start_offset;
> @@ -155,9 +147,7 @@ typedef struct _intel_xvmc_driver {
>
>      sigset_t sa_mask;
>      pthread_mutex_t ctxmutex;
> -    int lock;   /* Lightweight lock to avoid locking twice */
>      int locked;
> -    drmLock *driHwLock;
>
>      int num_ctx;
>      intel_xvmc_context_ptr ctx_list;
> diff --git a/src/xvmc/xf86dri.c b/src/xvmc/xf86dri.c
> deleted file mode 100644
> index 9ea919a..0000000
> --- a/src/xvmc/xf86dri.c
> +++ /dev/null
> @@ -1,565 +0,0 @@
> -/**************************************************************************
> -
> -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
> -Copyright 2000 VA Linux Systems, 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 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:
> - *   Kevin E. Martin <martin at valinux.com>
> - *   Jens Owen <jens at tungstengraphics.com>
> - *   Rickard E. (Rik) Faith <faith at valinux.com>
> - *
> - */
> -
> -/* THIS IS NOT AN X CONSORTIUM STANDARD */
> -
> -#define NEED_REPLIES
> -#include <X11/Xlibint.h>
> -#include <X11/extensions/Xext.h>
> -#include <X11/extensions/extutil.h>
> -#include "xf86dristr.h"
> -
> -static XExtensionInfo _xf86dri_info_data;
> -static XExtensionInfo *xf86dri_info = &_xf86dri_info_data;
> -static char xf86dri_extension_name[] = XF86DRINAME;
> -
> -#define uniDRICheckExtension(dpy,i,val) \
> -  XextCheckExtension (dpy, i, xf86dri_extension_name, val)
> -
> -/*****************************************************************************
> - *
>    *
> - *			   private utility routines                          *
> - *
>    *
> -
> *****************************************************************************/
> -
> -static int close_display(Display * dpy, XExtCodes * extCodes);
> -static /* const */ XExtensionHooks xf86dri_extension_hooks = {
> -    NULL,			       /* create_gc */
> -    NULL,			       /* copy_gc */
> -    NULL,			       /* flush_gc */
> -    NULL,			       /* free_gc */
> -    NULL,			       /* create_font */
> -    NULL,			       /* free_font */
> -    close_display,		       /* close_display */
> -    NULL,			       /* wire_to_event */
> -    NULL,			       /* event_to_wire */
> -    NULL,			       /* error */
> -    NULL,			       /* error_string */
> -};
> -
> -static
> -XEXT_GENERATE_FIND_DISPLAY(find_display, xf86dri_info,
> -    xf86dri_extension_name, &xf86dri_extension_hooks, 0, NULL)
> -
> -    static XEXT_GENERATE_CLOSE_DISPLAY(close_display, xf86dri_info)
> -
> -/*****************************************************************************
> - *
>    *
> - *		    public XFree86-DRI Extension routines                    *
> - *
>    *
> -
> *****************************************************************************/
> -#if 0
> -#include <stdio.h>
> -#define TRACE(msg, arg...)  fprintf(stderr,"uniDRI" msg "\n", ##arg);
> -#else
> -#define TRACE(msg, arg...)
> -#endif
> -Bool
> -uniDRIQueryExtension(Display *dpy, int *event_basep, int *error_basep)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -
> -    TRACE("QueryExtension...");
> -    if (XextHasExtension(info)) {
> -	*event_basep = info->codes->first_event;
> -	*error_basep = info->codes->first_error;
> -	TRACE("QueryExtension... return True");
> -	return True;
> -    } else {
> -	TRACE("QueryExtension... return False");
> -	return False;
> -    }
> -}
> -
> -Bool
> -uniDRIQueryVersion(Display *dpy, int *majorVersion, int *minorVersion,
> -		   int *patchVersion)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIQueryVersionReply rep;
> -    xXF86DRIQueryVersionReq *req;
> -
> -    TRACE("QueryVersion...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIQueryVersion, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIQueryVersion;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("QueryVersion... return False");
> -	return False;
> -    }
> -    *majorVersion = rep.majorVersion;
> -    *minorVersion = rep.minorVersion;
> -    *patchVersion = rep.patchVersion;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("QueryVersion... %d.%d.%d return True", rep.majorVersion,
> -		    rep.minorVersion, rep.patchVersion);
> -    return True;
> -}
> -
> -Bool
> -uniDRIQueryDirectRenderingCapable(Display *dpy, int screen, Bool
> *isCapable)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIQueryDirectRenderingCapableReply rep;
> -    xXF86DRIQueryDirectRenderingCapableReq *req;
> -
> -    TRACE("QueryDirectRenderingCapable...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIQueryDirectRenderingCapable, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIQueryDirectRenderingCapable;
> -    req->screen = screen;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("QueryDirectRenderingCapable... return False");
> -	return False;
> -    }
> -    *isCapable = rep.isCapable;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("QueryDirectRenderingCapable... %s return True",
> -		    rep.isCapable ? "true" : "false");
> -    return True;
> -}
> -
> -Bool
> -uniDRIOpenConnection(Display *dpy, int screen,
> -		     drm_handle_t *hSAREA, char **busIdString)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIOpenConnectionReply rep;
> -    xXF86DRIOpenConnectionReq *req;
> -
> -    TRACE("OpenConnection...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIOpenConnection, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIOpenConnection;
> -    req->screen = screen;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("OpenConnection... return False");
> -	return False;
> -    }
> -
> -    *hSAREA = rep.hSAREALow;
> -#ifdef LONG64
> -    if (sizeof(drm_handle_t) == 8) {
> -	*hSAREA |= ((unsigned long)rep.hSAREAHigh) << 32;
> -    }
> -#endif
> -    if (rep.length) {
> -	if (!(*busIdString = (char *)Xcalloc(rep.busIdStringLength + 1, 1))) {
> -	    _XEatData(dpy, ((rep.busIdStringLength + 3) & ~3));
> -	    UnlockDisplay(dpy);
> -	    SyncHandle();
> -	    TRACE("OpenConnection... return False");
> -	    return False;
> -	}
> -	_XReadPad(dpy, *busIdString, rep.busIdStringLength);
> -    } else {
> -	*busIdString = NULL;
> -    }
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("OpenConnection... busid %s return True",
> -		   *busIdString ? *busIdString : "null");
> -    return True;
> -}
> -
> -Bool
> -uniDRIAuthConnection(Display *dpy, int screen, drm_magic_t magic)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIAuthConnectionReq *req;
> -    xXF86DRIAuthConnectionReply rep;
> -
> -    TRACE("AuthConnection...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIAuthConnection, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIAuthConnection;
> -    req->screen = screen;
> -    req->magic = magic;
> -    rep.authenticated = 0;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated)
> {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("AuthConnection... return False");
> -	return False;
> -    }
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("AuthConnection... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRICloseConnection(Display *dpy, int screen)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRICloseConnectionReq *req;
> -
> -    TRACE("CloseConnection...");
> -
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRICloseConnection, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRICloseConnection;
> -    req->screen = screen;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("CloseConnection... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRIGetClientDriverName(Display *dpy, int screen, int
> *ddxDriverMajorVersion,
> -			  int *ddxDriverMinorVersion, int *ddxDriverPatchVersion,
> -			  char **clientDriverName)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIGetClientDriverNameReply rep;
> -    xXF86DRIGetClientDriverNameReq *req;
> -
> -    TRACE("GetClientDriverName...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIGetClientDriverName, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIGetClientDriverName;
> -    req->screen = screen;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("GetClientDriverName... return False");
> -	return False;
> -    }
> -
> -    *ddxDriverMajorVersion = rep.ddxDriverMajorVersion;
> -    *ddxDriverMinorVersion = rep.ddxDriverMinorVersion;
> -    *ddxDriverPatchVersion = rep.ddxDriverPatchVersion;
> -
> -    if (rep.length) {
> -	if (!(*clientDriverName =
> -		(char *)Xcalloc(rep.clientDriverNameLength + 1, 1))) {
> -	    _XEatData(dpy, ((rep.clientDriverNameLength + 3) & ~3));
> -	    UnlockDisplay(dpy);
> -	    SyncHandle();
> -	    TRACE("GetClientDriverName... return False");
> -	    return False;
> -	}
> -	_XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength);
> -    } else {
> -	*clientDriverName = NULL;
> -    }
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("GetClientDriverName... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRICreateContextWithConfig(Display *dpy, int screen, int configID,
> -			      XID context, drm_context_t *hHWContext)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRICreateContextReply rep;
> -    xXF86DRICreateContextReq *req;
> -
> -    TRACE("CreateContext... id %d", context);
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRICreateContext, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRICreateContext;
> -    req->visual = configID;
> -    req->screen = screen;
> -    req->context = context;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("CreateContext... return False");
> -	return False;
> -    }
> -    *hHWContext = rep.hHWContext;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("CreateContext... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRICreateContext(Display *dpy, int screen, Visual *visual,
> -		    XID context, drm_context_t *hHWContext)
> -{
> -    return uniDRICreateContextWithConfig(dpy, screen,
> -	   visual->visualid, context, hHWContext);
> -}
> -
> -Bool
> -uniDRIDestroyContext(Display * ndpy, int screen, XID context)
> -{
> -    Display *const dpy = (Display *) ndpy;
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIDestroyContextReq *req;
> -
> -    TRACE("DestroyContext... id %d", context);
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIDestroyContext, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIDestroyContext;
> -    req->screen = screen;
> -    req->context = context;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("DestroyContext... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRICreateDrawable(Display * ndpy, int screen,
> -    Drawable drawable, drm_drawable_t * hHWDrawable)
> -{
> -    Display *const dpy = (Display *) ndpy;
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRICreateDrawableReply rep;
> -    xXF86DRICreateDrawableReq *req;
> -
> -    TRACE("CreateDrawable...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRICreateDrawable, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRICreateDrawable;
> -    req->screen = screen;
> -    req->drawable = drawable;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("CreateDrawable... return False");
> -	return False;
> -    }
> -    *hHWDrawable = rep.hHWDrawable;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("CreateDrawable... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRIDestroyDrawable(Display * ndpy, int screen, Drawable drawable)
> -{
> -    Display *const dpy = (Display *) ndpy;
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIDestroyDrawableReq *req;
> -
> -    TRACE("DestroyDrawable...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIDestroyDrawable, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIDestroyDrawable;
> -    req->screen = screen;
> -    req->drawable = drawable;
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("DestroyDrawable... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable,
> -    unsigned int *index, unsigned int *stamp,
> -    int *X, int *Y, int *W, int *H,
> -    int *numClipRects, drm_clip_rect_t ** pClipRects,
> -    int *backX, int *backY,
> -    int *numBackClipRects, drm_clip_rect_t ** pBackClipRects)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIGetDrawableInfoReply rep;
> -    xXF86DRIGetDrawableInfoReq *req;
> -    int total_rects;
> -
> -    TRACE("GetDrawableInfo...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIGetDrawableInfo, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIGetDrawableInfo;
> -    req->screen = screen;
> -    req->drawable = drawable;
> -
> -    if (!_XReply(dpy, (xReply *) & rep, 1, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("GetDrawableInfo... return False");
> -	return False;
> -    }
> -    *index = rep.drawableTableIndex;
> -    *stamp = rep.drawableTableStamp;
> -    *X = (int)rep.drawableX;
> -    *Y = (int)rep.drawableY;
> -    *W = (int)rep.drawableWidth;
> -    *H = (int)rep.drawableHeight;
> -    *numClipRects = rep.numClipRects;
> -    total_rects = *numClipRects;
> -
> -    *backX = rep.backX;
> -    *backY = rep.backY;
> -    *numBackClipRects = rep.numBackClipRects;
> -    total_rects += *numBackClipRects;
> -
> -#if 0
> -    /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks
> -     * backwards compatibility (Because of the >> 2 shift) but the fix
> -     * enables multi-threaded apps to work.
> -     */
> -    if (rep.length != ((((SIZEOF(xXF86DRIGetDrawableInfoReply) -
> -			SIZEOF(xGenericReply) +
> -			total_rects * sizeof(drm_clip_rect_t)) +
> -		    3) & ~3) >> 2)) {
> -	_XEatData(dpy, rep.length);
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("GetDrawableInfo... return False");
> -	return False;
> -    }
> -#endif
> -
> -    if (*numClipRects) {
> -	int len = sizeof(drm_clip_rect_t) * (*numClipRects);
> -
> -	*pClipRects = (drm_clip_rect_t *) Xcalloc(len, 1);
> -	if (*pClipRects)
> -	    _XRead(dpy, (char *)*pClipRects, len);
> -    } else {
> -	*pClipRects = NULL;
> -    }
> -
> -    if (*numBackClipRects) {
> -	int len = sizeof(drm_clip_rect_t) * (*numBackClipRects);
> -
> -	*pBackClipRects = (drm_clip_rect_t *) Xcalloc(len, 1);
> -	if (*pBackClipRects)
> -	    _XRead(dpy, (char *)*pBackClipRects, len);
> -    } else {
> -	*pBackClipRects = NULL;
> -    }
> -
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("GetDrawableInfo... return True");
> -    return True;
> -}
> -
> -Bool
> -uniDRIGetDeviceInfo(Display *dpy, int screen, drm_handle_t *hFrameBuffer,
> -		    int *fbOrigin, int *fbSize, int *fbStride,
> -		    int *devPrivateSize, void **pDevPrivate)
> -{
> -    XExtDisplayInfo *info = find_display(dpy);
> -    xXF86DRIGetDeviceInfoReply rep;
> -    xXF86DRIGetDeviceInfoReq *req;
> -
> -    TRACE("GetDeviceInfo...");
> -    uniDRICheckExtension(dpy, info, False);
> -
> -    LockDisplay(dpy);
> -    GetReq(XF86DRIGetDeviceInfo, req);
> -    req->reqType = info->codes->major_opcode;
> -    req->driReqType = X_XF86DRIGetDeviceInfo;
> -    req->screen = screen;
> -    if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
> -	UnlockDisplay(dpy);
> -	SyncHandle();
> -	TRACE("GetDeviceInfo... return False");
> -	return False;
> -    }
> -
> -    *hFrameBuffer = rep.hFrameBufferLow;
> -#ifdef LONG64
> -    if (sizeof(drm_handle_t) == 8) {
> -	*hFrameBuffer |= ((unsigned long)rep.hFrameBufferHigh) << 32;
> -    }
> -#endif
> -
> -    *fbOrigin = rep.framebufferOrigin;
> -    *fbSize = rep.framebufferSize;
> -    *fbStride = rep.framebufferStride;
> -    *devPrivateSize = rep.devPrivateSize;
> -
> -    if (rep.length) {
> -	if (!(*pDevPrivate = (void *)Xcalloc(rep.devPrivateSize, 1))) {
> -	    _XEatData(dpy, ((rep.devPrivateSize + 3) & ~3));
> -	    UnlockDisplay(dpy);
> -	    SyncHandle();
> -	    TRACE("GetDeviceInfo... return False");
> -	    return False;
> -	}
> -	_XRead(dpy, (char *)*pDevPrivate, rep.devPrivateSize);
> -    } else {
> -	*pDevPrivate = NULL;
> -    }
> -
> -    UnlockDisplay(dpy);
> -    SyncHandle();
> -    TRACE("GetDeviceInfo... return True");
> -    return True;
> -}
> diff --git a/src/xvmc/xf86dri.h b/src/xvmc/xf86dri.h
> deleted file mode 100644
> index 5b8655d..0000000
> --- a/src/xvmc/xf86dri.h
> +++ /dev/null
> @@ -1,117 +0,0 @@
> -/**************************************************************************
> -
> -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
> -Copyright 2000 VA Linux Systems, 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 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.
> -
> -**************************************************************************/
> -
> -/**
> - * \file xf86dri.h
> - * Protocol numbers and function prototypes for DRI X protocol.
> - *
> - * \author Kevin E. Martin <martin at valinux.com>
> - * \author Jens Owen <jens at tungstengraphics.com>
> - * \author Rickard E. (Rik) Faith <faith at valinux.com>
> - */
> -
> -#ifndef _XF86DRI_H_
> -#define _XF86DRI_H_
> -
> -#include <X11/Xfuncproto.h>
> -#include <xf86drm.h>
> -
> -#define X_XF86DRIQueryVersion			0
> -#define X_XF86DRIQueryDirectRenderingCapable	1
> -#define X_XF86DRIOpenConnection			2
> -#define X_XF86DRICloseConnection		3
> -#define X_XF86DRIGetClientDriverName		4
> -#define X_XF86DRICreateContext			5
> -#define X_XF86DRIDestroyContext			6
> -#define X_XF86DRICreateDrawable			7
> -#define X_XF86DRIDestroyDrawable		8
> -#define X_XF86DRIGetDrawableInfo		9
> -#define X_XF86DRIGetDeviceInfo			10
> -#define X_XF86DRIAuthConnection                 11
> -#define X_XF86DRIOpenFullScreen                 12	/* Deprecated */
> -#define X_XF86DRICloseFullScreen                13	/* Deprecated */
> -
> -#define XF86DRINumberEvents		0
> -
> -#define XF86DRIClientNotLocal		0
> -#define XF86DRIOperationNotSupported	1
> -#define XF86DRINumberErrors		(XF86DRIOperationNotSupported + 1)
> -
> -#ifndef _XF86DRI_SERVER_
> -
> -_XFUNCPROTOBEGIN
> -extern Bool uniDRIQueryExtension(Display * dpy, int *event_base,
> -    int *error_base);
> -
> -extern Bool uniDRIQueryVersion(Display * dpy, int *majorVersion,
> -    int *minorVersion, int *patchVersion);
> -
> -extern Bool uniDRIQueryDirectRenderingCapable(Display * dpy, int screen,
> -    Bool * isCapable);
> -
> -extern Bool uniDRIOpenConnection(Display * dpy, int screen, drm_handle_t
> * hSAREA,
> -    char **busIDString);
> -
> -extern Bool uniDRIAuthConnection(Display * dpy, int screen, drm_magic_t
> magic);
> -
> -extern Bool uniDRICloseConnection(Display * dpy, int screen);
> -
> -extern Bool uniDRIGetClientDriverName(Display * dpy, int screen,
> -    int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
> -    int *ddxDriverPatchVersion, char **clientDriverName);
> -
> -/* XvMC context XID is alloced in _xvmc_create_context, so
> - * don't recreate here */
> -extern Bool uniDRICreateContext(Display * dpy, int screen, Visual *
> visual,
> -    XID context_id, drm_context_t * hHWContext);
> -
> -extern Bool uniDRICreateContextWithConfig(Display * dpy, int screen,
> -    int configID, XID context_id, drm_context_t * hHWContext);
> -
> -extern Bool uniDRIDestroyContext(Display * dpy, int screen, XID
> context_id);
> -
> -extern Bool uniDRICreateDrawable(Display * dpy, int screen,
> -    Drawable drawable, drm_drawable_t * hHWDrawable);
> -
> -extern Bool uniDRIDestroyDrawable(Display * dpy, int screen,
> -    Drawable drawable);
> -
> -extern Bool uniDRIGetDeviceInfo(Display * dpy, int screen,
> -    drm_handle_t * hFrameBuffer, int *fbOrigin, int *fbSize,
> -    int *fbStride, int *devPrivateSize, void **pDevPrivate);
> -
> -extern Bool uniDRIGetDrawableInfo(Display * dpy, int screen,
> -    Drawable drawable, unsigned int *index, unsigned int *stamp,
> -    int *X, int *Y, int *W, int *H,
> -    int *numClipRects, drm_clip_rect_t ** pClipRects,
> -    int *backX, int *backY,
> -    int *numBackClipRects, drm_clip_rect_t ** pBackClipRects);
> -
> -_XFUNCPROTOEND
> -#endif /* _XF86DRI_SERVER_ */
> -#endif /* _XF86DRI_H_ */
> diff --git a/src/xvmc/xf86dristr.h b/src/xvmc/xf86dristr.h
> deleted file mode 100644
> index d898996..0000000
> --- a/src/xvmc/xf86dristr.h
> +++ /dev/null
> @@ -1,389 +0,0 @@
> -/**************************************************************************
> -
> -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
> -Copyright 2000 VA Linux Systems, 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 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:
> - *   Kevin E. Martin <martin at valinux.com>
> - *   Jens Owen <jens at tungstengraphics.com>
> - *   Rickard E. (Rik) Fiath <faith at valinux.com>
> - *
> - */
> -
> -#ifndef _XF86DRISTR_H_
> -#define _XF86DRISTR_H_
> -
> -#include "xf86dri.h"
> -
> -#define XF86DRINAME "XFree86-DRI"
> -
> -/* The DRI version number.  This was originally set to be the same of the
> - * XFree86 version number.  However, this version is really indepedent of
> - * the XFree86 version.
> - *
> - * Version History:
> - *    4.0.0: Original
> - *    4.0.1: Patch to bump clipstamp when windows are destroyed, 28 May
> 02
> - *    4.1.0: Add transition from single to multi in DRMInfo rec, 24 Jun
> 02
> - */
> -#define XF86DRI_MAJOR_VERSION	4
> -#define XF86DRI_MINOR_VERSION	1
> -#define XF86DRI_PATCH_VERSION	0
> -
> -typedef struct _XF86DRIQueryVersion
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIQueryVersion */
> -    CARD16 length B16;
> -} xXF86DRIQueryVersionReq;
> -
> -#define sz_xXF86DRIQueryVersionReq	4
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD16 majorVersion B16;	       /* major version of DRI protocol */
> -    CARD16 minorVersion B16;	       /* minor version of DRI protocol */
> -    CARD32 patchVersion B32;	       /* patch version of DRI protocol */
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRIQueryVersionReply;
> -
> -#define sz_xXF86DRIQueryVersionReply	32
> -
> -typedef struct _XF86DRIQueryDirectRenderingCapable
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* X_DRIQueryDirectRenderingCapable */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -} xXF86DRIQueryDirectRenderingCapableReq;
> -
> -#define sz_xXF86DRIQueryDirectRenderingCapableReq	8
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    BOOL isCapable;
> -    BOOL pad2;
> -    BOOL pad3;
> -    BOOL pad4;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -    CARD32 pad7 B32;
> -    CARD32 pad8 B32;
> -    CARD32 pad9 B32;
> -} xXF86DRIQueryDirectRenderingCapableReply;
> -
> -#define sz_xXF86DRIQueryDirectRenderingCapableReply	32
> -
> -typedef struct _XF86DRIOpenConnection
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIOpenConnection */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -} xXF86DRIOpenConnectionReq;
> -
> -#define sz_xXF86DRIOpenConnectionReq	8
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 hSAREALow B32;
> -    CARD32 hSAREAHigh B32;
> -    CARD32 busIdStringLength B32;
> -    CARD32 pad6 B32;
> -    CARD32 pad7 B32;
> -    CARD32 pad8 B32;
> -} xXF86DRIOpenConnectionReply;
> -
> -#define sz_xXF86DRIOpenConnectionReply	32
> -
> -typedef struct _XF86DRIAuthConnection
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRICloseConnection */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 magic B32;
> -} xXF86DRIAuthConnectionReq;
> -
> -#define sz_xXF86DRIAuthConnectionReq	12
> -
> -typedef struct
> -{
> -    BYTE type;
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 authenticated B32;
> -    CARD32 pad2 B32;
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRIAuthConnectionReply;
> -
> -#define zx_xXF86DRIAuthConnectionReply  32
> -
> -typedef struct _XF86DRICloseConnection
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRICloseConnection */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -} xXF86DRICloseConnectionReq;
> -
> -#define sz_xXF86DRICloseConnectionReq	8
> -
> -typedef struct _XF86DRIGetClientDriverName
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIGetClientDriverName */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -} xXF86DRIGetClientDriverNameReq;
> -
> -#define sz_xXF86DRIGetClientDriverNameReq	8
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 ddxDriverMajorVersion B32;
> -    CARD32 ddxDriverMinorVersion B32;
> -    CARD32 ddxDriverPatchVersion B32;
> -    CARD32 clientDriverNameLength B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRIGetClientDriverNameReply;
> -
> -#define sz_xXF86DRIGetClientDriverNameReply	32
> -
> -typedef struct _XF86DRICreateContext
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRICreateContext */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 visual B32;
> -    CARD32 context B32;
> -} xXF86DRICreateContextReq;
> -
> -#define sz_xXF86DRICreateContextReq	16
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 hHWContext B32;
> -    CARD32 pad2 B32;
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRICreateContextReply;
> -
> -#define sz_xXF86DRICreateContextReply	32
> -
> -typedef struct _XF86DRIDestroyContext
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIDestroyContext */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 context B32;
> -} xXF86DRIDestroyContextReq;
> -
> -#define sz_xXF86DRIDestroyContextReq	12
> -
> -typedef struct _XF86DRICreateDrawable
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRICreateDrawable */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 drawable B32;
> -} xXF86DRICreateDrawableReq;
> -
> -#define sz_xXF86DRICreateDrawableReq	12
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 hHWDrawable B32;
> -    CARD32 pad2 B32;
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRICreateDrawableReply;
> -
> -#define sz_xXF86DRICreateDrawableReply	32
> -
> -typedef struct _XF86DRIDestroyDrawable
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIDestroyDrawable */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 drawable B32;
> -} xXF86DRIDestroyDrawableReq;
> -
> -#define sz_xXF86DRIDestroyDrawableReq	12
> -
> -typedef struct _XF86DRIGetDrawableInfo
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIGetDrawableInfo */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 drawable B32;
> -} xXF86DRIGetDrawableInfoReq;
> -
> -#define sz_xXF86DRIGetDrawableInfoReq	12
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 drawableTableIndex B32;
> -    CARD32 drawableTableStamp B32;
> -    INT16 drawableX B16;
> -    INT16 drawableY B16;
> -    INT16 drawableWidth B16;
> -    INT16 drawableHeight B16;
> -    CARD32 numClipRects B32;
> -    INT16 backX B16;
> -    INT16 backY B16;
> -    CARD32 numBackClipRects B32;
> -} xXF86DRIGetDrawableInfoReply;
> -
> -#define sz_xXF86DRIGetDrawableInfoReply	36
> -
> -typedef struct _XF86DRIGetDeviceInfo
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIGetDeviceInfo */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -} xXF86DRIGetDeviceInfoReq;
> -
> -#define sz_xXF86DRIGetDeviceInfoReq	8
> -
> -typedef struct
> -{
> -    BYTE type;			       /* X_Reply */
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 hFrameBufferLow B32;
> -    CARD32 hFrameBufferHigh B32;
> -    CARD32 framebufferOrigin B32;
> -    CARD32 framebufferSize B32;
> -    CARD32 framebufferStride B32;
> -    CARD32 devPrivateSize B32;
> -} xXF86DRIGetDeviceInfoReply;
> -
> -#define sz_xXF86DRIGetDeviceInfoReply	32
> -
> -typedef struct _XF86DRIOpenFullScreen
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRIOpenFullScreen */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 drawable B32;
> -} xXF86DRIOpenFullScreenReq;
> -
> -#define sz_xXF86DRIOpenFullScreenReq    12
> -
> -typedef struct
> -{
> -    BYTE type;
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 isFullScreen B32;
> -    CARD32 pad2 B32;
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -} xXF86DRIOpenFullScreenReply;
> -
> -#define sz_xXF86DRIOpenFullScreenReply  32
> -
> -typedef struct _XF86DRICloseFullScreen
> -{
> -    CARD8 reqType;		       /* always DRIReqCode */
> -    CARD8 driReqType;		       /* always X_DRICloseFullScreen */
> -    CARD16 length B16;
> -    CARD32 screen B32;
> -    CARD32 drawable B32;
> -} xXF86DRICloseFullScreenReq;
> -
> -#define sz_xXF86DRICloseFullScreenReq   12
> -
> -typedef struct
> -{
> -    BYTE type;
> -    BOOL pad1;
> -    CARD16 sequenceNumber B16;
> -    CARD32 length B32;
> -    CARD32 pad2 B32;
> -    CARD32 pad3 B32;
> -    CARD32 pad4 B32;
> -    CARD32 pad5 B32;
> -    CARD32 pad6 B32;
> -    CARD32 pad7 B32;
> -} xXF86DRICloseFullScreenReply;
> -
> -#define sz_xXF86DRICloseFullScreenReply  32
> -
> -#endif /* _XF86DRISTR_H_ */
> --
> 1.5.6.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>





More information about the Intel-gfx mailing list