GLX improvements and remove use of pbuffers for offscreen rendering in Xgl
This commit is contained in:
parent
8237b31f60
commit
d146c41882
|
@ -14,7 +14,6 @@ libxgl_a_SOURCES = \
|
||||||
xglparse.c \
|
xglparse.c \
|
||||||
xglscreen.c \
|
xglscreen.c \
|
||||||
xglarea.c \
|
xglarea.c \
|
||||||
xgloffscreen.c \
|
|
||||||
xglgeometry.c \
|
xglgeometry.c \
|
||||||
xglpixmap.c \
|
xglpixmap.c \
|
||||||
xglsync.c \
|
xglsync.c \
|
||||||
|
|
|
@ -437,7 +437,11 @@ xglxScreenInit (int index,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
XSelectInput (xdisplay, pScreenPriv->win, ExposureMask);
|
XSelectInput (xdisplay, pScreenPriv->win,
|
||||||
|
ButtonPressMask | ButtonReleaseMask |
|
||||||
|
KeyPressMask | KeyReleaseMask | EnterWindowMask |
|
||||||
|
PointerMotionMask | ExposureMask);
|
||||||
|
|
||||||
XMapWindow (xdisplay, pScreenPriv->win);
|
XMapWindow (xdisplay, pScreenPriv->win);
|
||||||
|
|
||||||
if (xglScreenInfo.fullscreen)
|
if (xglScreenInfo.fullscreen)
|
||||||
|
@ -517,11 +521,6 @@ xglxScreenInit (int index,
|
||||||
while (XNextEvent (xdisplay, &xevent))
|
while (XNextEvent (xdisplay, &xevent))
|
||||||
if (xevent.type == Expose)
|
if (xevent.type == Expose)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
XSelectInput (xdisplay, pScreenPriv->win,
|
|
||||||
ButtonPressMask | ButtonReleaseMask |
|
|
||||||
KeyPressMask | KeyReleaseMask | EnterWindowMask |
|
|
||||||
PointerMotionMask);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -580,20 +579,81 @@ InitOutput (ScreenInfo *pScreenInfo,
|
||||||
AddScreen (xglxScreenInit, argc, argv);
|
AddScreen (xglxScreenInit, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
xglxExposurePredicate (Display *xdisplay,
|
||||||
|
XEvent *xevent,
|
||||||
|
char *args)
|
||||||
|
{
|
||||||
|
return (xevent->type == Expose);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Bool
|
||||||
|
xglxNotExposurePredicate (Display *xdisplay,
|
||||||
|
XEvent *xevent,
|
||||||
|
char *args)
|
||||||
|
{
|
||||||
|
return (xevent->type != Expose);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
xglxWindowExposures (WindowPtr pWin,
|
||||||
|
pointer pReg)
|
||||||
|
{
|
||||||
|
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||||
|
RegionRec ClipList;
|
||||||
|
|
||||||
|
if (HasBorder (pWin))
|
||||||
|
{
|
||||||
|
REGION_INIT (pScreen, &ClipList, NullBox, 0);
|
||||||
|
REGION_SUBTRACT (pScreen, &ClipList, &pWin->borderClip,
|
||||||
|
&pWin->winSize);
|
||||||
|
REGION_INTERSECT (pScreen, &ClipList, &ClipList, (RegionPtr) pReg);
|
||||||
|
(*pScreen->PaintWindowBorder) (pWin, &ClipList, PW_BORDER);
|
||||||
|
REGION_UNINIT (pScreen, &ClipList);
|
||||||
|
}
|
||||||
|
|
||||||
|
REGION_INIT (pScreen, &ClipList, NullBox, 0);
|
||||||
|
REGION_INTERSECT (pScreen, &ClipList, &pWin->clipList, (RegionPtr) pReg);
|
||||||
|
(*pScreen->WindowExposures) (pWin, &ClipList, NullRegion);
|
||||||
|
REGION_UNINIT (pScreen, &ClipList);
|
||||||
|
|
||||||
|
return WT_WALKCHILDREN;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xglxBlockHandler (pointer blockData,
|
xglxBlockHandler (pointer blockData,
|
||||||
OSTimePtr pTimeout,
|
OSTimePtr pTimeout,
|
||||||
pointer pReadMask)
|
pointer pReadMask)
|
||||||
{
|
{
|
||||||
|
XEvent X;
|
||||||
|
RegionRec region;
|
||||||
|
BoxRec box;
|
||||||
|
|
||||||
XGL_SCREEN_PRIV (currentScreen);
|
XGL_SCREEN_PRIV (currentScreen);
|
||||||
|
|
||||||
|
while (XCheckIfEvent (xdisplay, &X, xglxExposurePredicate, NULL))
|
||||||
|
{
|
||||||
|
ScreenPtr pScreen = currentScreen;
|
||||||
|
|
||||||
|
box.x1 = X.xexpose.x;
|
||||||
|
box.y1 = X.xexpose.y;
|
||||||
|
box.x2 = box.x1 + X.xexpose.width;
|
||||||
|
box.y2 = box.y1 + X.xexpose.height;
|
||||||
|
|
||||||
|
REGION_INIT (currentScreen, ®ion, &box, 1);
|
||||||
|
|
||||||
|
WalkTree (pScreen, xglxWindowExposures, ®ion);
|
||||||
|
|
||||||
|
REGION_UNINIT (pScreen, ®ion);
|
||||||
|
}
|
||||||
|
|
||||||
if (!xglSyncSurface (&pScreenPriv->pScreenPixmap->drawable))
|
if (!xglSyncSurface (&pScreenPriv->pScreenPixmap->drawable))
|
||||||
FatalError (XGL_SW_FAILURE_STRING);
|
FatalError (XGL_SW_FAILURE_STRING);
|
||||||
|
|
||||||
glitz_surface_flush (pScreenPriv->surface);
|
glitz_surface_flush (pScreenPriv->surface);
|
||||||
glitz_drawable_finish (pScreenPriv->drawable);
|
glitz_drawable_flush (pScreenPriv->drawable);
|
||||||
|
|
||||||
XSync (xdisplay, FALSE);
|
XFlush (xdisplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -605,9 +665,8 @@ xglxWakeupHandler (pointer blockData,
|
||||||
XEvent X;
|
XEvent X;
|
||||||
xEvent x;
|
xEvent x;
|
||||||
|
|
||||||
while (XPending (xdisplay)) {
|
while (XCheckIfEvent (xdisplay, &X, xglxNotExposurePredicate, NULL))
|
||||||
XNextEvent (xdisplay, &X);
|
{
|
||||||
|
|
||||||
switch (X.type) {
|
switch (X.type) {
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
x.u.u.type = KeyPress;
|
x.u.u.type = KeyPress;
|
||||||
|
|
57
hw/xgl/xgl.h
57
hw/xgl/xgl.h
|
@ -89,9 +89,6 @@ typedef struct _xglPixmapFormat {
|
||||||
extern xglVisualPtr xglVisuals;
|
extern xglVisualPtr xglVisuals;
|
||||||
extern int nxglVisuals;
|
extern int nxglVisuals;
|
||||||
|
|
||||||
extern xglVisualPtr xglPbufferVisuals;
|
|
||||||
extern int nxglPbufferVisuals;
|
|
||||||
|
|
||||||
#define xglAreaAvailable 0
|
#define xglAreaAvailable 0
|
||||||
#define xglAreaDivided 1
|
#define xglAreaDivided 1
|
||||||
#define xglAreaOccupied 2
|
#define xglAreaOccupied 2
|
||||||
|
@ -201,25 +198,15 @@ extern int xglGlyphPrivateIndex;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define XGL_MAX_OFFSCREEN_AREAS 8
|
|
||||||
|
|
||||||
typedef struct _xglOffscreen {
|
|
||||||
xglRootAreaRec rootArea;
|
|
||||||
glitz_drawable_t *drawable;
|
|
||||||
glitz_drawable_format_t *format;
|
|
||||||
glitz_drawable_buffer_t buffer;
|
|
||||||
} xglOffscreenRec, *xglOffscreenPtr;
|
|
||||||
|
|
||||||
typedef struct _xglScreen {
|
typedef struct _xglScreen {
|
||||||
xglVisualPtr pVisual;
|
xglVisualPtr pVisual;
|
||||||
xglPixmapFormatRec pixmapFormats[33];
|
xglPixmapFormatRec pixmapFormats[33];
|
||||||
glitz_drawable_t *drawable;
|
glitz_drawable_t *drawable;
|
||||||
glitz_surface_t *surface;
|
glitz_surface_t *surface;
|
||||||
|
glitz_surface_t *backSurface;
|
||||||
glitz_surface_t *solid;
|
glitz_surface_t *solid;
|
||||||
PixmapPtr pScreenPixmap;
|
PixmapPtr pScreenPixmap;
|
||||||
unsigned long features;
|
unsigned long features;
|
||||||
xglOffscreenRec pOffscreen[XGL_MAX_OFFSCREEN_AREAS];
|
|
||||||
int nOffscreen;
|
|
||||||
int geometryUsage;
|
int geometryUsage;
|
||||||
int geometryDataType;
|
int geometryDataType;
|
||||||
Bool yInverted;
|
Bool yInverted;
|
||||||
|
@ -264,7 +251,11 @@ typedef struct _xglScreen {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BSFuncRec BackingStoreFuncs;
|
BSFuncRec BackingStoreFuncs;
|
||||||
|
|
||||||
|
#ifdef GLXEXT
|
||||||
|
DestroyWindowProcPtr DestroyWindow;
|
||||||
|
#endif
|
||||||
|
|
||||||
} xglScreenRec, *xglScreenPtr;
|
} xglScreenRec, *xglScreenPtr;
|
||||||
|
|
||||||
extern int xglScreenPrivateIndex;
|
extern int xglScreenPrivateIndex;
|
||||||
|
@ -342,8 +333,6 @@ typedef struct _xglPixmap {
|
||||||
glitz_surface_t *surface;
|
glitz_surface_t *surface;
|
||||||
glitz_buffer_t *buffer;
|
glitz_buffer_t *buffer;
|
||||||
int target;
|
int target;
|
||||||
xglAreaPtr pArea;
|
|
||||||
int score;
|
|
||||||
Bool acceleratedTile;
|
Bool acceleratedTile;
|
||||||
pointer bits;
|
pointer bits;
|
||||||
int stride;
|
int stride;
|
||||||
|
@ -437,23 +426,6 @@ extern int xglWinPrivateIndex;
|
||||||
(((pBox)->x2 - (pBox)->x1) > 0 && \
|
(((pBox)->x2 - (pBox)->x1) > 0 && \
|
||||||
((pBox)->y2 - (pBox)->y1) > 0)
|
((pBox)->y2 - (pBox)->y1) > 0)
|
||||||
|
|
||||||
#define XGL_MAX_PIXMAP_SCORE 32768
|
|
||||||
#define XGL_MIN_PIXMAP_SCORE -32768
|
|
||||||
|
|
||||||
#define XGL_INCREMENT_PIXMAP_SCORE(pPixmapPriv, incr) \
|
|
||||||
{ \
|
|
||||||
(pPixmapPriv)->score += (incr); \
|
|
||||||
if ((pPixmapPriv)->score > XGL_MAX_PIXMAP_SCORE) \
|
|
||||||
(pPixmapPriv)->score = XGL_MAX_PIXMAP_SCORE; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define XGL_DECREMENT_PIXMAP_SCORE(pPixmapPriv, decr) \
|
|
||||||
{ \
|
|
||||||
(pPixmapPriv)->score -= (decr); \
|
|
||||||
if ((pPixmapPriv)->score < XGL_MIN_PIXMAP_SCORE) \
|
|
||||||
(pPixmapPriv)->score = XGL_MIN_PIXMAP_SCORE; \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* xglinput.c */
|
/* xglinput.c */
|
||||||
|
|
||||||
|
@ -574,23 +546,6 @@ xglFindArea (xglAreaPtr pArea,
|
||||||
pointer closure);
|
pointer closure);
|
||||||
|
|
||||||
|
|
||||||
/* xgloffscreen.c */
|
|
||||||
|
|
||||||
Bool
|
|
||||||
xglInitOffscreen (ScreenPtr pScreen,
|
|
||||||
xglScreenInfoPtr pScreenInfo);
|
|
||||||
|
|
||||||
void
|
|
||||||
xglFiniOffscreen (ScreenPtr pScreen);
|
|
||||||
|
|
||||||
Bool
|
|
||||||
xglFindOffscreenArea (ScreenPtr pScreen,
|
|
||||||
PixmapPtr pPixmap);
|
|
||||||
|
|
||||||
void
|
|
||||||
xglLeaveOffscreenArea (PixmapPtr pPixmap);
|
|
||||||
|
|
||||||
|
|
||||||
/* xglgeometry.c */
|
/* xglgeometry.c */
|
||||||
|
|
||||||
#define GEOMETRY_DATA_TYPE_SHORT 0
|
#define GEOMETRY_DATA_TYPE_SHORT 0
|
||||||
|
|
|
@ -38,9 +38,6 @@ xglCopy (DrawablePtr pSrc,
|
||||||
int srcXoff, srcYoff;
|
int srcXoff, srcYoff;
|
||||||
int dstXoff, dstYoff;
|
int dstXoff, dstYoff;
|
||||||
|
|
||||||
XGL_SCREEN_PRIV (pDst->pScreen);
|
|
||||||
XGL_DRAWABLE_PIXMAP_PRIV (pSrc);
|
|
||||||
|
|
||||||
if (!nBox)
|
if (!nBox)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
@ -53,10 +50,6 @@ xglCopy (DrawablePtr pSrc,
|
||||||
XGL_GET_DRAWABLE (pSrc, src, srcXoff, srcYoff);
|
XGL_GET_DRAWABLE (pSrc, src, srcXoff, srcYoff);
|
||||||
XGL_GET_DRAWABLE (pDst, dst, dstXoff, dstYoff);
|
XGL_GET_DRAWABLE (pDst, dst, dstXoff, dstYoff);
|
||||||
|
|
||||||
/* blit to screen */
|
|
||||||
if (dst == pScreenPriv->surface)
|
|
||||||
XGL_INCREMENT_PIXMAP_SCORE (pPixmapPriv, 5000);
|
|
||||||
|
|
||||||
glitz_surface_set_clip_region (dst,
|
glitz_surface_set_clip_region (dst,
|
||||||
dstXoff, dstYoff,
|
dstXoff, dstYoff,
|
||||||
(glitz_box_t *) pBox, nBox);
|
(glitz_box_t *) pBox, nBox);
|
||||||
|
|
|
@ -45,6 +45,9 @@ xglGetImage (DrawablePtr pDrawable,
|
||||||
/* Many apps use GetImage to sync with the visable frame buffer */
|
/* Many apps use GetImage to sync with the visable frame buffer */
|
||||||
if (pDrawable->type == DRAWABLE_WINDOW)
|
if (pDrawable->type == DRAWABLE_WINDOW)
|
||||||
{
|
{
|
||||||
|
if (!xglSyncSurface (&pScreenPriv->pScreenPixmap->drawable))
|
||||||
|
FatalError (XGL_SW_FAILURE_STRING);
|
||||||
|
|
||||||
glitz_surface_flush (pScreenPriv->surface);
|
glitz_surface_flush (pScreenPriv->surface);
|
||||||
glitz_drawable_finish (pScreenPriv->drawable);
|
glitz_drawable_finish (pScreenPriv->drawable);
|
||||||
}
|
}
|
||||||
|
|
3765
hw/xgl/xglglx.c
3765
hw/xgl/xglglx.c
File diff suppressed because it is too large
Load Diff
|
@ -1145,8 +1145,6 @@ xglGlyphs (CARD8 op,
|
||||||
|
|
||||||
if (pMask)
|
if (pMask)
|
||||||
{
|
{
|
||||||
xglLeaveOffscreenArea ((PixmapPtr) pMask->pDrawable);
|
|
||||||
|
|
||||||
CompositePicture (op,
|
CompositePicture (op,
|
||||||
pSrc,
|
pSrc,
|
||||||
pMask,
|
pMask,
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include <X11/XF86keysym.h>
|
#include <X11/XF86keysym.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define NUM_BUTTONS 5
|
#define NUM_BUTTONS 7
|
||||||
|
|
||||||
int
|
int
|
||||||
xglMouseProc (DeviceIntPtr pDevice,
|
xglMouseProc (DeviceIntPtr pDevice,
|
||||||
|
|
|
@ -101,8 +101,6 @@ xglPixmapSurfaceInit (PixmapPtr pPixmap,
|
||||||
XGL_PIXMAP_PRIV (pPixmap);
|
XGL_PIXMAP_PRIV (pPixmap);
|
||||||
|
|
||||||
pPixmapPriv->surface = NULL;
|
pPixmapPriv->surface = NULL;
|
||||||
pPixmapPriv->pArea = NULL;
|
|
||||||
pPixmapPriv->score = 0;
|
|
||||||
pPixmapPriv->acceleratedTile = FALSE;
|
pPixmapPriv->acceleratedTile = FALSE;
|
||||||
pPixmapPriv->pictureMask = ~0;
|
pPixmapPriv->pictureMask = ~0;
|
||||||
pPixmapPriv->target = xglPixmapTargetNo;
|
pPixmapPriv->target = xglPixmapTargetNo;
|
||||||
|
@ -211,9 +209,6 @@ xglFiniPixmap (PixmapPtr pPixmap)
|
||||||
{
|
{
|
||||||
XGL_PIXMAP_PRIV (pPixmap);
|
XGL_PIXMAP_PRIV (pPixmap);
|
||||||
|
|
||||||
if (pPixmapPriv->pArea)
|
|
||||||
xglWithdrawArea (pPixmapPriv->pArea);
|
|
||||||
|
|
||||||
if (pPixmap->devPrivate.ptr)
|
if (pPixmap->devPrivate.ptr)
|
||||||
{
|
{
|
||||||
if (pPixmapPriv->buffer)
|
if (pPixmapPriv->buffer)
|
||||||
|
@ -316,9 +311,6 @@ xglModifyPixmapHeader (PixmapPtr pPixmap,
|
||||||
pPixmap->drawable.width != oldWidth ||
|
pPixmap->drawable.width != oldWidth ||
|
||||||
pPixmap->drawable.height != oldHeight)
|
pPixmap->drawable.height != oldHeight)
|
||||||
{
|
{
|
||||||
if (pPixmapPriv->pArea)
|
|
||||||
xglWithdrawArea (pPixmapPriv->pArea);
|
|
||||||
|
|
||||||
if (pPixmapPriv->surface)
|
if (pPixmapPriv->surface)
|
||||||
glitz_surface_destroy (pPixmapPriv->surface);
|
glitz_surface_destroy (pPixmapPriv->surface);
|
||||||
|
|
||||||
|
@ -372,11 +364,6 @@ xglModifyPixmapHeader (PixmapPtr pPixmap,
|
||||||
REGION_INIT (pPixmap->drawable.pScreen, pRegion,
|
REGION_INIT (pPixmap->drawable.pScreen, pRegion,
|
||||||
&pPixmapPriv->bitBox, 1);
|
&pPixmapPriv->bitBox, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* We probably don't want accelerated drawing to this pixmap.
|
|
||||||
*/
|
|
||||||
pPixmapPriv->score = XGL_MIN_PIXMAP_SCORE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -159,9 +159,6 @@ xglScreenInit (ScreenPtr pScreen,
|
||||||
depth = pScreenPriv->pVisual->pPixel->depth;
|
depth = pScreenPriv->pVisual->pPixel->depth;
|
||||||
bpp = pScreenPriv->pVisual->pPixel->masks.bpp;
|
bpp = pScreenPriv->pVisual->pPixel->masks.bpp;
|
||||||
|
|
||||||
if (!xglInitOffscreen (pScreen, pScreenInfo))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
xglInitPixmapFormats (pScreen);
|
xglInitPixmapFormats (pScreen);
|
||||||
if (!pScreenPriv->pixmapFormats[depth].format)
|
if (!pScreenPriv->pixmapFormats[depth].format)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -189,6 +186,8 @@ xglScreenInit (ScreenPtr pScreen,
|
||||||
GLITZ_DRAWABLE_BUFFER_FRONT_COLOR,
|
GLITZ_DRAWABLE_BUFFER_FRONT_COLOR,
|
||||||
0, 0);
|
0, 0);
|
||||||
|
|
||||||
|
pScreenPriv->backSurface = NULL;
|
||||||
|
|
||||||
if (monitorResolution == 0)
|
if (monitorResolution == 0)
|
||||||
monitorResolution = XGL_DEFAULT_DPI;
|
monitorResolution = XGL_DEFAULT_DPI;
|
||||||
|
|
||||||
|
@ -365,7 +364,7 @@ xglCloseScreen (int index,
|
||||||
{
|
{
|
||||||
XGL_SCREEN_PRIV (pScreen);
|
XGL_SCREEN_PRIV (pScreen);
|
||||||
XGL_PIXMAP_PRIV (pScreenPriv->pScreenPixmap);
|
XGL_PIXMAP_PRIV (pScreenPriv->pScreenPixmap);
|
||||||
|
|
||||||
#ifdef RENDER
|
#ifdef RENDER
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -386,11 +385,12 @@ xglCloseScreen (int index,
|
||||||
if (pScreenPriv->solid)
|
if (pScreenPriv->solid)
|
||||||
glitz_surface_destroy (pScreenPriv->solid);
|
glitz_surface_destroy (pScreenPriv->solid);
|
||||||
|
|
||||||
|
if (pScreenPriv->backSurface)
|
||||||
|
glitz_surface_destroy (pScreenPriv->backSurface);
|
||||||
|
|
||||||
if (pScreenPriv->surface)
|
if (pScreenPriv->surface)
|
||||||
glitz_surface_destroy (pScreenPriv->surface);
|
glitz_surface_destroy (pScreenPriv->surface);
|
||||||
|
|
||||||
xglFiniOffscreen (pScreen);
|
|
||||||
|
|
||||||
GEOMETRY_UNINIT (&pScreenPriv->scratchGeometry);
|
GEOMETRY_UNINIT (&pScreenPriv->scratchGeometry);
|
||||||
|
|
||||||
XGL_SCREEN_UNWRAP (CloseScreen);
|
XGL_SCREEN_UNWRAP (CloseScreen);
|
||||||
|
|
|
@ -73,8 +73,6 @@ xglSyncBits (DrawablePtr pDrawable,
|
||||||
XGL_DRAWABLE_PIXMAP (pDrawable);
|
XGL_DRAWABLE_PIXMAP (pDrawable);
|
||||||
XGL_PIXMAP_PRIV (pPixmap);
|
XGL_PIXMAP_PRIV (pPixmap);
|
||||||
|
|
||||||
XGL_DECREMENT_PIXMAP_SCORE (pPixmapPriv, 20);
|
|
||||||
|
|
||||||
if (pPixmapPriv->allBits)
|
if (pPixmapPriv->allBits)
|
||||||
return xglMapPixmapBits (pPixmap);
|
return xglMapPixmapBits (pPixmap);
|
||||||
|
|
||||||
|
@ -295,22 +293,12 @@ xglPrepareTarget (DrawablePtr pDrawable)
|
||||||
|
|
||||||
switch (pPixmapPriv->target) {
|
switch (pPixmapPriv->target) {
|
||||||
case xglPixmapTargetNo:
|
case xglPixmapTargetNo:
|
||||||
|
case xglPixmapTargetOut:
|
||||||
break;
|
break;
|
||||||
case xglPixmapTargetIn:
|
case xglPixmapTargetIn:
|
||||||
XGL_INCREMENT_PIXMAP_SCORE (pPixmapPriv, 10);
|
|
||||||
|
|
||||||
if (xglSyncSurface (pDrawable))
|
if (xglSyncSurface (pDrawable))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
case xglPixmapTargetOut:
|
|
||||||
XGL_INCREMENT_PIXMAP_SCORE (pPixmapPriv, 10);
|
|
||||||
|
|
||||||
if (pPixmapPriv->lock)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (xglFindOffscreenArea (pDrawable->pScreen, pPixmap))
|
|
||||||
return TRUE;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -375,8 +375,6 @@ xglTrapezoids (CARD8 op,
|
||||||
|
|
||||||
if (pMask)
|
if (pMask)
|
||||||
{
|
{
|
||||||
xglLeaveOffscreenArea ((PixmapPtr) pMask->pDrawable);
|
|
||||||
|
|
||||||
CompositePicture (op, pSrc, pMask, pDst,
|
CompositePicture (op, pSrc, pMask, pDst,
|
||||||
extents.x1 + xSrc - xDst,
|
extents.x1 + xSrc - xDst,
|
||||||
extents.y1 + ySrc - yDst,
|
extents.y1 + ySrc - yDst,
|
||||||
|
|
Loading…
Reference in New Issue