summaryrefslogtreecommitdiff
path: root/exa
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2006-03-30 21:44:36 +0000
committerEric Anholt <anholt@freebsd.org>2006-03-30 21:44:36 +0000
commit759033703ce17b20d57756206f48a7ae410a50d1 (patch)
tree57a81a6717aa85da5ed29cb74f20501fe25e4732 /exa
parentb9203dc068ccd4c0d22d49a94b910783432b96a8 (diff)
Remove the exaAsyncPixmapGCOps mostly-unaccelerated ops vector, and always
plug in the accelerated one, even if the destination pixmap is currently offscreen. This was a leftover from when kaa originally got accelerated offscreen pixmap support, and its only concievable use was to avoid a little overhead on ops to in-system pixmaps that weren't going to get migrated. At this point, we probably care more about just getting everything accelerated that we easily can, which should happen with the new migration support.
Diffstat (limited to 'exa')
-rw-r--r--exa/exa.c21
-rw-r--r--exa/exa_priv.h2
-rw-r--r--exa/exa_unaccel.c30
3 files changed, 4 insertions, 49 deletions
diff --git a/exa/exa.c b/exa/exa.c
index f83fdf58e..98e275daa 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -339,30 +339,15 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
}
/**
- * exaValidateGC() chooses between the accelerated and unaccelerated GC Ops
- * vectors.
- *
- * The unaccelerated (exaAsyncPixmapGCOps) vector is chosen if the drawable is
- * offscreen. This means that operations that affect only that drawable will
- * not result in migration of the pixmap. However, exaAsyncPixmapGCOps does use
- * the accelerated operations for the Copy* functions, because the other
- * drawable involved might be in framebuffer and require synchronization before
- * accessing it. This means that for the Copy* functions, even using
- * exaAsyncPixmapGCOps may result in migration, and therefore acceleration.
- *
- * Because of how nonintuitive exaAsyncPixmapGCOps is, and the fact that its
- * only use is for dubious performance reasons (and probably just historical
- * reasons), it is likely to go away in the future.
+ * exaValidateGC() sets the ops to EXA's implementations, which may be
+ * accelerated or may sync the card and
*/
static void
exaValidateGC (GCPtr pGC, Mask changes, DrawablePtr pDrawable)
{
fbValidateGC (pGC, changes, pDrawable);
- if (exaDrawableIsOffscreen (pDrawable))
- pGC->ops = (GCOps *) &exaOps;
- else
- pGC->ops = (GCOps *) &exaAsyncPixmapGCOps;
+ pGC->ops = (GCOps *) &exaOps;
}
static GCFuncs exaGCFuncs = {
diff --git a/exa/exa_priv.h b/exa/exa_priv.h
index 8a1b27710..0a94cfe73 100644
--- a/exa/exa_priv.h
+++ b/exa/exa_priv.h
@@ -301,7 +301,7 @@ void
exaGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr ppt, int *pwidth,
int nspans, char *pdstStart);
-extern const GCOps exaOps, exaAsyncPixmapGCOps;
+extern const GCOps exaOps;
#ifdef RENDER
void
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index 1ffecb811..a6e0c482a 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -362,33 +362,3 @@ exaGetPixmapFirstPixel (PixmapPtr pPixmap)
return pixel;
}
-
-/*
- * Only need to stall for CopyArea/CopyPlane, but we want to have the chance to
- * do migration for CopyArea.
- */
-const GCOps exaAsyncPixmapGCOps = {
- ExaCheckFillSpans,
- ExaCheckSetSpans,
- ExaCheckPutImage,
- exaCopyArea,
- ExaCheckCopyPlane,
- ExaCheckPolyPoint,
- ExaCheckPolylines,
- ExaCheckPolySegment,
- ExaCheckPolyRectangle,
- ExaCheckPolyArc,
- ExaCheckFillPolygon,
- ExaCheckPolyFillRect,
- ExaCheckPolyFillArc,
- miPolyText8,
- miPolyText16,
- miImageText8,
- miImageText16,
- ExaCheckImageGlyphBlt,
- ExaCheckPolyGlyphBlt,
- ExaCheckPushPixels
-#ifdef NEED_LINEHELPER
- ,NULL
-#endif
-};