Commit Graph

123 Commits

Author SHA1 Message Date
Eric Anholt
81aa7f059d Add missing dirty marking in a couple of fallback cases in the exaGlyphs path. 2007-02-14 12:48:15 -08:00
Eric Anholt
a5f19c5150 Mark sync when UploadToScreen succeeds in exaGlyphs(). 2007-02-14 11:13:21 -08:00
Eric Anholt
7a12952fd4 Bug #7639: Only swap out pixmaps (rather than everything) on VT switch in EXA.
This is a new behavior for version 2.1 of EXA, and only takes effect if the
driver has requested that.  Otherwise, the previous behavior remains the same.
2007-01-24 13:34:58 -08:00
Eric Anholt
083b790515 Switch the default migration heuristic for EXA to "always".
This has been what has been used the most successfully post-damagetrack.
The current thinking is that:
1) We should be able to accelerate basically everything.  So we don't need to
   try to migrate trees of pixmaps permanently out of framebuffer to speed
   CPU drawing up.
2) Migration is cheaper in the thrashing case, so we don't want to go to a lot
   of effort to try (and fail badly) to find a working set.
2006-12-28 13:21:25 -08:00
Eric Anholt
cfbc7379f0 Export exaMove{In,Out}Pixmap(). 2006-12-28 13:15:11 -08:00
Michel Dänzer
9563b2eea2 EXA: Lots of damage tracking fixes.
Mostly due to exaDrawableDirty() now calculating the backing pixmap coordinates
internally, for cases where they aren't trivially known. There's a new
exaPixmapDirty() function for the other cases.
2006-12-19 18:57:22 +01:00
George Sapountzis
467c00cf45 exaGlyphs: mark dirty for software path also.
This affects drivers with no UploadToScreen or UploadToScreen failures.
2006-12-19 18:45:25 +01:00
Michel Dänzer
4334860e69 Merge branch 'master' into exa-damagetrack
Conflicts:

	exa/exa_accel.c
	exa/exa_migration.c
2006-12-19 16:29:26 +01:00
Michel Dänzer
fdcc22ca17 exaCopyNtoN: Fix usage of 'dx' and 'dy' instead of 'reverse' and 'upsidedown'. 2006-12-19 16:11:17 +01:00
Michel Dänzer
67c2a86e59 EXA: Compare backing pixmaps instead of drawables against driver limits.
The driver operations are always contained within the backing pixmaps, it
doesn't matter if the drawables are bigger.
2006-12-19 15:44:18 +01:00
Eric Anholt
6b1e354dbb EXA: Disable SHM pixmaps.
See https://bugs.freedesktop.org/show_bug.cgi?id=6772 .
2006-12-19 15:24:19 +01:00
Michel Dänzer
7e4717683d exaDrawableDirty: Fix initialization of BoxRec.
This will hopefully fix the partial window corruption experienced by some
people.
2006-10-15 18:12:28 +02:00
George Sapountzis
37943e2f1a Call exaTryComponentAlphaHelper() for solid src also.
Also, rename to exaTryMagicTwoPassCompositeHelper() as it is now called for
non-component-alpha masks also, and add function description from
http://anholt.livejournal.com/32058.html.
2006-08-12 20:54:33 +03:00
Daniel Stone
68b0678254 exa: only disable cw when COMPOSITE is built 2006-07-21 15:18:20 -04:00
Daniel Stone
84683f19b4 get rid of XFree86LOADER, XFree86Server, XFree86Module, and IN_MODULE
Get rid of almost all uses of these definitions.  They're still defined for
delinquent out-of-tree drivers, and also for the Mesa build.  As well as
for miinitext.c.  But largely gone.
2006-07-18 18:17:38 -04:00
Eric Anholt
7106a77df3 Fix bugs in support for new repeatTypes in XAA and EXA.
EXA now won't pass pictures with new repeatTypes to drivers.  We can add a flag
for them to support it at a later time.
2006-07-03 16:41:44 +02:00
Jens Granseuer
179737d4a0 Bug 7145: fix build with gcc 2.95 & other c89 compilers
Move variable declarations to start of blocks as required by c89
2006-06-30 15:56:40 -07:00
Eric Anholt
48c871564d Move EXA_PM_IS_SOLID() to the public API, since drivers will want it frequently. 2006-06-26 15:57:32 +02:00
George Fufutos
afb84c2fca Bug #6911: Check return value of exaGetPixelFromRGBA(). 2006-06-24 15:23:14 +02:00
Michel Dänzer
930b9a069a Bug #6818: Avoid infinite loop in exaLog2() with negative arguments. 2006-06-24 15:21:17 +02:00
Eric Anholt
520c80f4b8 Don't forget to step the rows when verifying the equivalence of fb/sys areas.
This is only used by fakexa, but we would have missed some errors without this
fix.
2006-06-19 15:11:55 -07:00
Eric Anholt
6aaf0e5b58 Add options to disable EXA acceleration for Composite/UTS/DFS, and always print
out how much memory EXA is managing for offscreen pixmaps.
2006-06-18 19:47:51 -07:00
Michel Dänzer
f9f33b72e3 Track per-drawable damage to minimize UTS and DFS transfers.
Based on work by Eric Anholt.
2006-06-12 20:19:11 +02:00
Alan Coopersmith
1e8a594957 Fix Solaris build with Sun compilers to work when exa is built before
hw/xfree86/os-support/solaris (as it is by default now).
2006-05-02 01:37:25 +00:00
Adam Jackson
291e89d4f2 Remove NEED_LINEHELPER BC cruft for pre-R6 DDXes. 2006-04-30 19:16:14 +00:00
Eric Anholt
fdcacc5a4b Add Polylines and PolyPoint acceleration as well. This is primarily to
clean up fallback debugging output, so I can focus on more imporant
    cases. Performance is comparable but without hardware stalls, and
    passes Xlib9.
2006-04-28 03:27:12 +00:00
Eric Anholt
005529a1c9 Correct some bugs causing performance issues in the "Smart" scheme. 2006-04-28 03:26:30 +00:00
Eric Anholt
8738bc295b Improve EXA fallback debugging output to include the locations of pixmaps.
This is being used in tracking down recent compositing performance
    regressions.
2006-04-27 20:27:27 +00:00
Eric Anholt
83b061776a Add trivial PolySegment acceleration for 0-width horizontal/vertical lines,
which still happen somewhat frequently and were cluttering up my
    fallback debugging output. x11perf says it's a major performance win in
    those cases (though probably irrelevant), and it passes Xlib9.
2006-04-27 19:17:34 +00:00
Eric Anholt
69164ec00c In drawing glyphs, shortcut our way to exaComposite instead of going
through the whole CompositePicture stack and doing things like
    computing damage over again. This is a sizeable win for text drawing
    with a compmgr. Also avoid calling down into the server for dealing
    with the scratch pixmap when we are able to do UploadToScreen
    successfully and never need it.
2006-04-27 02:15:19 +00:00
Eric Anholt
3d4ca57b69 Add a helper for the Component Alpha Over case, which breaks the operation
down into an OutReverse and an Add. Turn off the fallback to software
    glyphs when component alpha, now that we expect all (new) drivers to be
    able to support it. Also, make Xephyr fall back in the CA Over case to
    exercise this code. This speeds up my rgb24text and ls -lR in
    gnome-terminal by a factor of 5.
2006-04-26 18:27:40 +00:00
Eric Anholt
6d156c0440 Improve the migration debugging output. 2006-04-26 01:33:15 +00:00
Eric Anholt
eaed7545a2 Fix a bug in the intersection computation that could concievably cause
incorrect results to be returned (but would probably usually be
    over-conservative).
2006-04-26 01:32:55 +00:00
Eric Anholt
5d00859c6e Bug #4668: Check if the lists of glyphs don't have any intersecting glyphs,
and if they all have a maskFormat matching the format of the actual
    glyphs If so, we can avoid the temporary pixmap for accumulating
    glyphs, which reduces the number of operations done, and makes it
    easier on the migration system. This fixes some significant performance
    issues, particularly with subpixel antialiasing. Note that it does
    increase the amount of damage computation which is done, so is not
    always a win with a compositing manager running.
2006-04-25 23:56:17 +00:00
Eric Anholt
074dc9a023 Add an option to verify at the point of migration that pixmaps which aren't
marked dirty are in fact not dirty. This will hopefully help catch
    issues like the previous commit. Leave it on in fakexa.
2006-04-25 16:47:23 +00:00
Eric Anholt
702d9226d5 Don't forget to mark the drawable as dirty in exaPutImage(). Fixes
corruption with drivers that have UTS. (Michel Dänzer)
2006-04-25 15:46:04 +00:00
Eric Anholt
b17a4de83e Add a new migration scheme, called "Smart" for lack of a better name. This
one behaves somewhat between Greedy and Always. It moves in if we can
    accelerate, unless the destination is clean and shouldn't be kept in
    framebuffer according to the score, in which case we migrate out (and
    force-migrate anything where migration is free). This should help fix
    lack of acceleration for drivers without UTS since removing
    exaAsyncPixmapGCOps, and has removed one performance trap with Radeon
    I'd noticed. It is the new default.
2006-04-18 19:14:07 +00:00
Eric Anholt
771b366abe Fix exaGetPixmapFirstPixel to migrate as unaccelerated. Also adds a bit of
fallback debugging info to PolyGlyphBlt.
2006-04-18 18:50:35 +00:00
Donnie Berkholz
0f065059dc Wrap a couple more SDK headers in if XORG, as per Dave Airlie's commit on
2006-01-18.
2006-04-17 07:27:43 +00:00
Eric Anholt
ccca76b808 Clean up warnings and a debug printf. 2006-04-01 23:41:23 +00:00
Eric Anholt
6afa814ab1 Pull out fb's tile handling during fbValidateGC so we can do the necessary
exaPrepare/FinishAccess()es. Revealed by xtest with fakexa.
2006-04-01 23:28:17 +00:00
Eric Anholt
5f95146fcf Export exaPrepare/FinishGC to the rest of EXA, and use it in the ImageGlyph
implementation to avoid unprepared access to the tile. Also, relocate
    the fbGetDrawable to avoid using a stale dest pointer after
    exaSolidBoxClipped() may have migrated it. Revealed by xtest.
2006-04-01 22:35:16 +00:00
Eric Anholt
c720ffe875 Use fb's depth-to-planemask computation, which doesn't suffer from getting
a 1 planemask at depth 32. Fixes Get/PutImage xtest tests.
2006-04-01 22:17:44 +00:00
Eric Anholt
d1e90113fc Don't attempt to Prepare/FinishAccess NULL pDrawables. Exposed by new
gradient testing in rendercheck.
2006-03-31 23:22:29 +00:00
Eric Anholt
2e38fedd29 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.
2006-03-31 19:41:28 +00:00
Eric Anholt
f480dc797b Revert mistaken commit to exa_unaccel.c. Should have been to
exa_offscreen.c: Correct a typo in debug-only offscreen validation
    code. (Wang Zhenyu)
2006-03-31 19:25:42 +00:00
Eric Anholt
1a8167c1ba Correct a typo in debug-only offscreen validation code. (Wang Zhenyu) 2006-03-31 19:16:51 +00:00
Eric Anholt
759033703c 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.
2006-03-30 21:44:36 +00:00
Eric Anholt
b9203dc068 Don't do an extra fallback path for CopyWindow while swappedOut, since
exaCopyNtoN takes care of the fallback anyway, and we don't care about
    the performance of this path.
2006-03-30 21:25:43 +00:00
Eric Anholt
2153fa9748 Bug #2986: Add PutImage acceleration for the ZPixmap, planeMask ~=
FB_ALLONES, bitsPerPixel >= 8, GXcopy cases. With the radeon driver on
    my machine, this gives about 10% speedup in PutImage
10x10 and 500x500, and 40% speedup for 10x10 ShmPutImage, up to 65%
    improvement in 500x500 ShmPutImage. Also fixes a crasher in GetImage
    that slipped in at the last minute.
2006-03-30 05:24:27 +00:00