Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver

This commit is contained in:
Alan Coopersmith 2006-06-26 13:02:33 -07:00 committed by Alan Coopersmith
commit ff6b59a0db
14 changed files with 129 additions and 37 deletions

20
.gitignore vendored
View File

@ -116,6 +116,24 @@ hw/dmx/examples/xdmx
hw/dmx/examples/xinput
hw/dmx/examples/xled
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.1x
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.conf.5x
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.man
hw/xfree86/getconfig/cfg.man

View File

@ -185,8 +185,8 @@ __glXSendReplySwap( ClientPtr client, const void * data, size_t elements,
}
__glXReply.length = bswap_32( reply_ints );
__glXReply.type = bswap_32( X_Reply );
__glXReply.sequenceNumber = bswap_32( client->sequence );
__glXReply.type = X_Reply;
__glXReply.sequenceNumber = bswap_16( client->sequence );
__glXReply.size = bswap_32( elements );
__glXReply.retval = bswap_32( retval );

View File

@ -843,7 +843,7 @@ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
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([SYS_LIBS])

View File

@ -158,7 +158,7 @@ exaLog2(int val)
{
int bits;
if (!val)
if (val <= 0)
return 0;
for (bits = 0; val != 0; bits++)
val >>= 1;

View File

@ -36,6 +36,7 @@
#include "windowstr.h"
#include "gcstruct.h"
#include "picturestr.h"
#include "fb.h"
#define EXA_VERSION_MAJOR 2
#define EXA_VERSION_MINOR 0
@ -715,4 +716,12 @@ exaGetPixmapSize(PixmapPtr pPix);
void
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 */

View File

@ -137,14 +137,6 @@ extern int exaPixmapPrivateIndex;
/** Align an offset to a power-of-two alignment */
#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_MAX 20
#define EXA_PIXMAP_SCORE_MOVE_OUT -10

View File

@ -282,8 +282,12 @@ exaTryDriverSolidFill(PicturePtr pSrc,
return -1;
}
exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
pDst->format);
if (!exaGetPixelFromRGBA(&pixel, red, green, blue, alpha,
pDst->format))
{
REGION_UNINIT(pDst->pDrawable->pScreen, &region);
return -1;
}
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
{

View File

@ -573,9 +573,9 @@ static fetchProc fetchProcForPicture (PicturePtr pict)
/* 1bpp formats */
case PICT_a1: return fbFetch_a1;
case PICT_g1: return fbFetch_g1;
default:
return NULL;
}
return NULL;
}
/*
@ -1010,9 +1010,9 @@ static fetchPixelProc fetchPixelProcForPicture (PicturePtr pict)
/* 1bpp formats */
case PICT_a1: return fbFetchPixel_a1;
case PICT_g1: return fbFetchPixel_g1;
default:
return NULL;
}
return NULL;
}

View File

@ -1255,12 +1255,8 @@ xf86InterceptSigIll(void (*sigillhandler)(void))
xf86SigIllHandler = sigillhandler;
}
#ifdef HAVE_EXECINFO_H
#define HAVE_BACKTRACE
#include <execinfo.h>
#endif
#ifdef HAVE_BACKTRACE
#include <execinfo.h>
static __inline__ void xorg_backtrace(void)
{

View File

@ -81,6 +81,7 @@ static DISPATCH_PROC(ProcXF86DRIDispatch);
static DISPATCH_PROC(ProcXF86DRIAuthConnection);
static DISPATCH_PROC(SProcXF86DRIQueryVersion);
static DISPATCH_PROC(SProcXF86DRIQueryDirectRenderingCapable);
static DISPATCH_PROC(SProcXF86DRIDispatch);
static void XF86DRIResetProc(ExtensionEntry* extEntry);
@ -142,6 +143,9 @@ ProcXF86DRIQueryVersion(
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
swaps(&rep.majorVersion, n);
swaps(&rep.minorVersion, n);
swapl(&rep.patchVersion, n);
}
WriteToClient(client, sizeof(xXF86DRIQueryVersionReply), (char *)&rep);
return (client->noClientException);
@ -154,6 +158,7 @@ ProcXF86DRIQueryDirectRenderingCapable(
{
xXF86DRIQueryDirectRenderingCapableReply rep;
Bool isCapable;
register int n;
REQUEST(xXF86DRIQueryDirectRenderingCapableReq);
REQUEST_SIZE_MATCH(xXF86DRIQueryDirectRenderingCapableReq);
@ -172,9 +177,14 @@ ProcXF86DRIQueryDirectRenderingCapable(
}
rep.isCapable = isCapable;
if (!LocalClient(client))
if (!LocalClient(client) || client->swapped)
rep.isCapable = 0;
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
}
WriteToClient(client,
sizeof(xXF86DRIQueryDirectRenderingCapableReply), (char *)&rep);
return (client->noClientException);
@ -626,6 +636,18 @@ SProcXF86DRIQueryVersion(
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
SProcXF86DRIDispatch (
register ClientPtr client
@ -633,16 +655,17 @@ SProcXF86DRIDispatch (
{
REQUEST(xReq);
/* It is bound to be non-local when there is byte swapping */
if (!LocalClient(client))
return DRIErrorBase + XF86DRIClientNotLocal;
/* only local clients are allowed DRI access */
/*
* Only local clients are allowed DRI access, but remote clients still need
* these requests to find out cleanly.
*/
switch (stuff->data)
{
case X_XF86DRIQueryVersion:
return SProcXF86DRIQueryVersion(client);
case X_XF86DRIQueryDirectRenderingCapable:
return SProcXF86DRIQueryDirectRenderingCapable(client);
default:
return BadRequest;
return DRIErrorBase + XF86DRIClientNotLocal;
}
}

View File

@ -14,3 +14,15 @@ libexa_la_SOURCES = \
libexa_la_LIBADD = \
../../../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

View File

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

View File

@ -33,10 +33,11 @@
/*
* 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__)
#define OSNAME "linux"
#elif defined(__FreeBSD__)
@ -66,7 +67,6 @@
#else
#define OSNAME "unknown"
#endif
#endif
/* Return the OS name, and run-time OS version */

View File

@ -102,10 +102,6 @@ typedef enum _PictFormatShort {
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_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_x4g4 = PICT_FORMAT(8,PICT_TYPE_GRAY,0,0,0,0),