summaryrefslogtreecommitdiff
path: root/exa/exa_priv.h
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2006-03-31 19:41:28 +0000
committerEric Anholt <anholt@freebsd.org>2006-03-31 19:41:28 +0000
commit2e38fedd29e7e55d01e3edce6a73b8ceaac17911 (patch)
tree3f6b1c560c62ff862cf6b07cc898804968159528 /exa/exa_priv.h
parentf480dc797b51f080f912efc7867d6d8e50be074c (diff)
Add an option to EXA for the DDX to request that EXA hide the pixmap's
devPrivate.ptr when pointing at offscreen memory, outside of exaPrepare/FinishAccess(). This was used with fakexa to find (by NULL dereference) many instances of un-Prepared CPU access to the framebuffer: - GC tiles used in several ops when fillStyle == FillTiled were never Prepared. - Migration could lead to un-Prepared access to mask data in render's Trapezoids and Triangles - PutImage's UploadToScreen failure fallback failed to Prepare.
Diffstat (limited to 'exa/exa_priv.h')
-rw-r--r--exa/exa_priv.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/exa/exa_priv.h b/exa/exa_priv.h
index 0a94cfe73..5effca506 100644
--- a/exa/exa_priv.h
+++ b/exa/exa_priv.h
@@ -100,10 +100,13 @@ typedef struct {
CopyWindowProcPtr SavedCopyWindow;
#ifdef RENDER
CompositeProcPtr SavedComposite;
+ RasterizeTrapezoidProcPtr SavedRasterizeTrapezoid;
+ AddTrianglesProcPtr SavedAddTriangles;
GlyphsProcPtr SavedGlyphs;
#endif
Bool swappedOut;
enum ExaMigrationHeuristic migration;
+ Bool hideOffscreenPixmapData;
} ExaScreenPrivRec, *ExaScreenPrivPtr;
/*
@@ -220,24 +223,14 @@ ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
int nsegInit, xSegment *pSegInit);
void
-ExaCheckPolyRectangle (DrawablePtr pDrawable, GCPtr pGC,
- int nrects, xRectangle *prect);
-
-void
ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
int narcs, xArc *pArcs);
-#define ExaCheckFillPolygon miFillPolygon
-
void
ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
int nrect, xRectangle *prect);
void
-ExaCheckPolyFillArc (DrawablePtr pDrawable, GCPtr pGC,
- int narcs, xArc *pArcs);
-
-void
ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
int x, int y, unsigned int nglyph,
CharInfoPtr *ppci, pointer pglyphBase);
@@ -374,6 +367,7 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
Pixel bitplane,
void *closure);
+/* exa_render.c */
void
exaComposite(CARD8 op,
PicturePtr pSrc,
@@ -389,6 +383,14 @@ exaComposite(CARD8 op,
CARD16 height);
void
+exaRasterizeTrapezoid (PicturePtr pPicture, xTrapezoid *trap,
+ int x_off, int y_off);
+
+void
+exaAddTriangles (PicturePtr pPicture, INT16 x_off, INT16 y_off, int ntri,
+ xTriangle *tris);
+
+void
exaGlyphs (CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,