Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver
This commit is contained in:
commit
ff6b59a0db
|
@ -116,6 +116,24 @@ hw/dmx/examples/xdmx
|
||||||
hw/dmx/examples/xinput
|
hw/dmx/examples/xinput
|
||||||
hw/dmx/examples/xled
|
hw/dmx/examples/xled
|
||||||
hw/dmx/examples/xtest
|
hw/dmx/examples/xtest
|
||||||
|
hw/kdrive/ati/Xati
|
||||||
|
hw/kdrive/chips/Xchips
|
||||||
|
hw/kdrive/ephyr/Xephyr
|
||||||
|
hw/kdrive/epson/Xepson
|
||||||
|
hw/kdrive/fake/Xfake
|
||||||
|
hw/kdrive/fbdev/Xfbdev
|
||||||
|
hw/kdrive/i810/Xi810
|
||||||
|
hw/kdrive/mach64/Xmach64
|
||||||
|
hw/kdrive/mga/Xmga
|
||||||
|
hw/kdrive/neomagic/Xneomagic
|
||||||
|
hw/kdrive/nvidia/Xnvidia
|
||||||
|
hw/kdrive/pm2/Xpm2
|
||||||
|
hw/kdrive/r128/Xr128
|
||||||
|
hw/kdrive/sdl/Xsdl
|
||||||
|
hw/kdrive/sis300/Xsis
|
||||||
|
hw/kdrive/smi/Xsmi
|
||||||
|
hw/kdrive/vesa/Xvesa
|
||||||
|
hw/kdrive/via/Xvia
|
||||||
hw/vfb/Xvfb
|
hw/vfb/Xvfb
|
||||||
hw/vfb/Xvfb.1x
|
hw/vfb/Xvfb.1x
|
||||||
hw/vfb/Xvfb.man
|
hw/vfb/Xvfb.man
|
||||||
|
@ -126,6 +144,8 @@ hw/xfree86/doc/man/Xorg.1x
|
||||||
hw/xfree86/doc/man/Xorg.man
|
hw/xfree86/doc/man/Xorg.man
|
||||||
hw/xfree86/doc/man/xorg.conf.5x
|
hw/xfree86/doc/man/xorg.conf.5x
|
||||||
hw/xfree86/doc/man/xorg.conf.man
|
hw/xfree86/doc/man/xorg.conf.man
|
||||||
|
hw/xfree86/exa/exa.4
|
||||||
|
hw/xfree86/exa/exa.man
|
||||||
hw/xfree86/fbdevhw/fbdevhw.4x
|
hw/xfree86/fbdevhw/fbdevhw.4x
|
||||||
hw/xfree86/fbdevhw/fbdevhw.man
|
hw/xfree86/fbdevhw/fbdevhw.man
|
||||||
hw/xfree86/getconfig/cfg.man
|
hw/xfree86/getconfig/cfg.man
|
||||||
|
|
|
@ -185,8 +185,8 @@ __glXSendReplySwap( ClientPtr client, const void * data, size_t elements,
|
||||||
}
|
}
|
||||||
|
|
||||||
__glXReply.length = bswap_32( reply_ints );
|
__glXReply.length = bswap_32( reply_ints );
|
||||||
__glXReply.type = bswap_32( X_Reply );
|
__glXReply.type = X_Reply;
|
||||||
__glXReply.sequenceNumber = bswap_32( client->sequence );
|
__glXReply.sequenceNumber = bswap_16( client->sequence );
|
||||||
__glXReply.size = bswap_32( elements );
|
__glXReply.size = bswap_32( elements );
|
||||||
__glXReply.retval = bswap_32( retval );
|
__glXReply.retval = bswap_32( retval );
|
||||||
|
|
||||||
|
|
|
@ -843,7 +843,7 @@ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
|
||||||
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
|
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
|
||||||
|
|
||||||
XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
|
XSERVER_CFLAGS="${XSERVERCFLAGS_CFLAGS}"
|
||||||
XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} -lm -lz"
|
XSERVER_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} -lm"
|
||||||
AC_SUBST([XSERVER_LIBS])
|
AC_SUBST([XSERVER_LIBS])
|
||||||
AC_SUBST([SYS_LIBS])
|
AC_SUBST([SYS_LIBS])
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,7 @@ exaLog2(int val)
|
||||||
{
|
{
|
||||||
int bits;
|
int bits;
|
||||||
|
|
||||||
if (!val)
|
if (val <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
for (bits = 0; val != 0; bits++)
|
for (bits = 0; val != 0; bits++)
|
||||||
val >>= 1;
|
val >>= 1;
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "windowstr.h"
|
#include "windowstr.h"
|
||||||
#include "gcstruct.h"
|
#include "gcstruct.h"
|
||||||
#include "picturestr.h"
|
#include "picturestr.h"
|
||||||
|
#include "fb.h"
|
||||||
|
|
||||||
#define EXA_VERSION_MAJOR 2
|
#define EXA_VERSION_MAJOR 2
|
||||||
#define EXA_VERSION_MINOR 0
|
#define EXA_VERSION_MINOR 0
|
||||||
|
@ -715,4 +716,12 @@ exaGetPixmapSize(PixmapPtr pPix);
|
||||||
void
|
void
|
||||||
exaEnableDisableFBAccess (int index, Bool enable);
|
exaEnableDisableFBAccess (int index, Bool enable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns TRUE if the given planemask covers all the significant bits in the
|
||||||
|
* pixel values for pDrawable.
|
||||||
|
*/
|
||||||
|
#define EXA_PM_IS_SOLID(_pDrawable, _pm) \
|
||||||
|
(((_pm) & FbFullMask((_pDrawable)->depth)) == \
|
||||||
|
FbFullMask((_pDrawable)->depth))
|
||||||
|
|
||||||
#endif /* EXA_H */
|
#endif /* EXA_H */
|
||||||
|
|
|
@ -137,14 +137,6 @@ extern int exaPixmapPrivateIndex;
|
||||||
/** Align an offset to a power-of-two alignment */
|
/** Align an offset to a power-of-two alignment */
|
||||||
#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
|
#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns TRUE if the given planemask covers all the significant bits in the
|
|
||||||
* pixel values for pDrawable.
|
|
||||||
*/
|
|
||||||
#define EXA_PM_IS_SOLID(_pDrawable, _pm) \
|
|
||||||
(((_pm) & FbFullMask((_pDrawable)->depth)) == \
|
|
||||||
FbFullMask((_pDrawable)->depth))
|
|
||||||
|
|
||||||
#define EXA_PIXMAP_SCORE_MOVE_IN 10
|
#define EXA_PIXMAP_SCORE_MOVE_IN 10
|
||||||
#define EXA_PIXMAP_SCORE_MAX 20
|
#define EXA_PIXMAP_SCORE_MAX 20
|
||||||
#define EXA_PIXMAP_SCORE_MOVE_OUT -10
|
#define EXA_PIXMAP_SCORE_MOVE_OUT -10
|
||||||
|
|
|
@ -282,8 +282,12 @@ exaTryDriverSolidFill(PicturePtr pSrc,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
|
if (!exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
|
||||||
pDst->format);
|
pDst->format))
|
||||||
|
{
|
||||||
|
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
|
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
|
||||||
{
|
{
|
||||||
|
|
|
@ -573,9 +573,9 @@ static fetchProc fetchProcForPicture (PicturePtr pict)
|
||||||
/* 1bpp formats */
|
/* 1bpp formats */
|
||||||
case PICT_a1: return fbFetch_a1;
|
case PICT_a1: return fbFetch_a1;
|
||||||
case PICT_g1: return fbFetch_g1;
|
case PICT_g1: return fbFetch_g1;
|
||||||
default:
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1010,9 +1010,9 @@ static fetchPixelProc fetchPixelProcForPicture (PicturePtr pict)
|
||||||
/* 1bpp formats */
|
/* 1bpp formats */
|
||||||
case PICT_a1: return fbFetchPixel_a1;
|
case PICT_a1: return fbFetchPixel_a1;
|
||||||
case PICT_g1: return fbFetchPixel_g1;
|
case PICT_g1: return fbFetchPixel_g1;
|
||||||
default:
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1255,12 +1255,8 @@ xf86InterceptSigIll(void (*sigillhandler)(void))
|
||||||
xf86SigIllHandler = sigillhandler;
|
xf86SigIllHandler = sigillhandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_EXECINFO_H
|
|
||||||
#define HAVE_BACKTRACE
|
|
||||||
#include <execinfo.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_BACKTRACE
|
#ifdef HAVE_BACKTRACE
|
||||||
|
#include <execinfo.h>
|
||||||
|
|
||||||
static __inline__ void xorg_backtrace(void)
|
static __inline__ void xorg_backtrace(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,6 +81,7 @@ static DISPATCH_PROC(ProcXF86DRIDispatch);
|
||||||
static DISPATCH_PROC(ProcXF86DRIAuthConnection);
|
static DISPATCH_PROC(ProcXF86DRIAuthConnection);
|
||||||
|
|
||||||
static DISPATCH_PROC(SProcXF86DRIQueryVersion);
|
static DISPATCH_PROC(SProcXF86DRIQueryVersion);
|
||||||
|
static DISPATCH_PROC(SProcXF86DRIQueryDirectRenderingCapable);
|
||||||
static DISPATCH_PROC(SProcXF86DRIDispatch);
|
static DISPATCH_PROC(SProcXF86DRIDispatch);
|
||||||
|
|
||||||
static void XF86DRIResetProc(ExtensionEntry* extEntry);
|
static void XF86DRIResetProc(ExtensionEntry* extEntry);
|
||||||
|
@ -142,6 +143,9 @@ ProcXF86DRIQueryVersion(
|
||||||
if (client->swapped) {
|
if (client->swapped) {
|
||||||
swaps(&rep.sequenceNumber, n);
|
swaps(&rep.sequenceNumber, n);
|
||||||
swapl(&rep.length, n);
|
swapl(&rep.length, n);
|
||||||
|
swaps(&rep.majorVersion, n);
|
||||||
|
swaps(&rep.minorVersion, n);
|
||||||
|
swapl(&rep.patchVersion, n);
|
||||||
}
|
}
|
||||||
WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
|
WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
|
||||||
return (client->noClientException);
|
return (client->noClientException);
|
||||||
|
@ -154,6 +158,7 @@ ProcXF86DRIQueryDirectRenderingCapable(
|
||||||
{
|
{
|
||||||
xXF86DRIQueryDirectRenderingCapableReply rep;
|
xXF86DRIQueryDirectRenderingCapableReply rep;
|
||||||
Bool isCapable;
|
Bool isCapable;
|
||||||
|
register int n;
|
||||||
|
|
||||||
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
|
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
|
||||||
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
|
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
|
||||||
|
@ -172,9 +177,14 @@ ProcXF86DRIQueryDirectRenderingCapable(
|
||||||
}
|
}
|
||||||
rep.isCapable = isCapable;
|
rep.isCapable = isCapable;
|
||||||
|
|
||||||
if (!LocalClient(client))
|
if (!LocalClient(client) || client->swapped)
|
||||||
rep.isCapable = 0;
|
rep.isCapable = 0;
|
||||||
|
|
||||||
|
if (client->swapped) {
|
||||||
|
swaps(&rep.sequenceNumber, n);
|
||||||
|
swapl(&rep.length, n);
|
||||||
|
}
|
||||||
|
|
||||||
WriteToClient(client,
|
WriteToClient(client,
|
||||||
sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
|
sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
|
||||||
return (client->noClientException);
|
return (client->noClientException);
|
||||||
|
@ -626,6 +636,18 @@ SProcXF86DRIQueryVersion(
|
||||||
return ProcXF86DRIQueryVersion(client);
|
return ProcXF86DRIQueryVersion(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
SProcXF86DRIQueryDirectRenderingCapable(
|
||||||
|
register ClientPtr client
|
||||||
|
)
|
||||||
|
{
|
||||||
|
register int n;
|
||||||
|
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
|
||||||
|
swaps(&stuff->length, n);
|
||||||
|
swapl(&stuff->screen, n);
|
||||||
|
return ProcXF86DRIQueryDirectRenderingCapable(client);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
SProcXF86DRIDispatch (
|
SProcXF86DRIDispatch (
|
||||||
register ClientPtr client
|
register ClientPtr client
|
||||||
|
@ -633,16 +655,17 @@ SProcXF86DRIDispatch (
|
||||||
{
|
{
|
||||||
REQUEST(xReq);
|
REQUEST(xReq);
|
||||||
|
|
||||||
/* It is bound to be non-local when there is byte swapping */
|
/*
|
||||||
if (!LocalClient(client))
|
* Only local clients are allowed DRI access, but remote clients still need
|
||||||
return DRIErrorBase + XF86DRIClientNotLocal;
|
* these requests to find out cleanly.
|
||||||
|
*/
|
||||||
/* only local clients are allowed DRI access */
|
|
||||||
switch (stuff->data)
|
switch (stuff->data)
|
||||||
{
|
{
|
||||||
case X_XF86DRIQueryVersion:
|
case X_XF86DRIQueryVersion:
|
||||||
return SProcXF86DRIQueryVersion(client);
|
return SProcXF86DRIQueryVersion(client);
|
||||||
|
case X_XF86DRIQueryDirectRenderingCapable:
|
||||||
|
return SProcXF86DRIQueryDirectRenderingCapable(client);
|
||||||
default:
|
default:
|
||||||
return BadRequest;
|
return DRIErrorBase + XF86DRIClientNotLocal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,3 +14,15 @@ libexa_la_SOURCES = \
|
||||||
|
|
||||||
libexa_la_LIBADD = \
|
libexa_la_LIBADD = \
|
||||||
../../../exa/libexa.la
|
../../../exa/libexa.la
|
||||||
|
|
||||||
|
include $(top_srcdir)/cpprules.in
|
||||||
|
|
||||||
|
drivermandir = $(DRIVER_MAN_DIR)
|
||||||
|
driverman_DATA = exa.$(DRIVER_MAN_SUFFIX)
|
||||||
|
CLEANFILES = $(driverman_DATA) exa.man
|
||||||
|
|
||||||
|
exa.$(DRIVER_MAN_SUFFIX): exa.man
|
||||||
|
-rm -f exa.$(DRIVER_MAN_SUFFIX)
|
||||||
|
$(LN_S) exa.man exa.$(DRIVER_MAN_SUFFIX)
|
||||||
|
|
||||||
|
EXTRA_DIST = exa.man.pre README
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
.\" shorthand for double quote that works everywhere.
|
||||||
|
.ds q \N'34'
|
||||||
|
.TH EXA __drivermansuffix__ __vendorversion__
|
||||||
|
.SH NAME
|
||||||
|
exa \- new 2D acceleration architecture for X.Org
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.B EXA
|
||||||
|
provides a simple API for video drivers to implement for 2D acceleration. It
|
||||||
|
is a module loaded by drivers, and is not intended to be loaded on its own. See
|
||||||
|
your driver's manual page for how to enable
|
||||||
|
.B EXA
|
||||||
|
.
|
||||||
|
.PP
|
||||||
|
The
|
||||||
|
.B EXA
|
||||||
|
architecture is designed to make accelerating the Render extension simple and
|
||||||
|
efficient, and results in various performance tradeoffs compared to XAA. Some
|
||||||
|
options are available for debugging performance issues or driver rendering
|
||||||
|
problems. They are not intended for general use.
|
||||||
|
.TP
|
||||||
|
.BI "Option \*qEXANoComposite\*q \*q" boolean \*q
|
||||||
|
Disables acceleration of the Composite operation, which is at the heart of
|
||||||
|
the Render extension. Not related to the Composite extension. Default: No.
|
||||||
|
.TP
|
||||||
|
.BI "Option \*qEXANoUploadToScreen\*q \*q" boolean \*q
|
||||||
|
Disables acceleration of uploading pixmap data to the freamebuffer. Default: No.
|
||||||
|
.TP
|
||||||
|
.BI "Option \*qEXANoDownloadFromScreen\*q \*q" boolean \*q
|
||||||
|
Disables acceleration of downloading of pixmap data from the framebuffer.
|
||||||
|
.B NOTE:
|
||||||
|
Not usable with drivers which rely on DownloadFromScreen succeeding.
|
||||||
|
Default: No.
|
||||||
|
.TP
|
||||||
|
.BI "Option \*qMigrationHeuristic\*q \*q" anystr \*q
|
||||||
|
Chooses an alternate pixmap migration heuristic, for debugging purposes. The
|
||||||
|
default is intended to be the best performing one for general use, though others
|
||||||
|
may help with specific use cases. Available options include \*qalways\*q,
|
||||||
|
\*qgreedy\*q, and \*qsmart\*q. Default: smart.
|
||||||
|
.SH AUTHORS
|
||||||
|
Authors include: Keith Packard, Eric Anholt, Zack Rusin, and Michel Dänzer
|
|
@ -33,10 +33,11 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OSNAME is a standard form of the OS name that may be used by the
|
* OSNAME is a standard form of the OS name that may be used by the
|
||||||
* loader and by OS-specific modules.
|
* loader and by OS-specific modules. OSNAME here is different from what's in
|
||||||
|
* dix-config.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OSNAME
|
#undef OSNAME
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
#define OSNAME "linux"
|
#define OSNAME "linux"
|
||||||
#elif defined(__FreeBSD__)
|
#elif defined(__FreeBSD__)
|
||||||
|
@ -66,7 +67,6 @@
|
||||||
#else
|
#else
|
||||||
#define OSNAME "unknown"
|
#define OSNAME "unknown"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Return the OS name, and run-time OS version */
|
/* Return the OS name, and run-time OS version */
|
||||||
|
|
||||||
|
|
|
@ -102,10 +102,6 @@ typedef enum _PictFormatShort {
|
||||||
PICT_g8 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
|
PICT_g8 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
|
||||||
|
|
||||||
PICT_x4a4 = PICT_FORMAT(8,PICT_TYPE_A,4,0,0,0),
|
PICT_x4a4 = PICT_FORMAT(8,PICT_TYPE_A,4,0,0,0),
|
||||||
PICT_x4r1g2b1 = PICT_FORMAT(8,PICT_TYPE_ARGB,0,1,2,1),
|
|
||||||
PICT_x4b1g2r1 = PICT_FORMAT(8,PICT_TYPE_ABGR,0,1,2,1),
|
|
||||||
PICT_x4a1r1g1b1 = PICT_FORMAT(8,PICT_TYPE_ARGB,1,1,1,1),
|
|
||||||
PICT_x4a1b1g1r1 = PICT_FORMAT(8,PICT_TYPE_ABGR,1,1,1,1),
|
|
||||||
|
|
||||||
PICT_x4c4 = PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0),
|
PICT_x4c4 = PICT_FORMAT(8,PICT_TYPE_COLOR,0,0,0,0),
|
||||||
PICT_x4g4 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
|
PICT_x4g4 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),
|
||||||
|
|
Loading…
Reference in New Issue