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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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, &region);
return -1;
}
if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel)) if (!(*pExaScr->info->PrepareSolid) (pDstPix, GXcopy, 0xffffffff, pixel))
{ {

View File

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

View File

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

View File

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

View File

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

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 * 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 */

View File

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