Commit Graph

66 Commits

Author SHA1 Message Date
Benjamin Herrenschmidt
e573b272bf Use proper access size when reading pixel based on bpp of the source pixmap 2005-10-12 07:46:36 +00:00
Eric Anholt
046234b3eb Don't try the accelerated glyphs path for component-alpha text (which I
don't expect drivers to be able to accelerate without exa assistance).
    Instead, drop back to plain old miGlyphs for a 62.5% +/- 1.5% reduction
    in runtime of my ls -lR test (n=5) with component alpha. While a
    reasonable approach would seem to be making a better test to see
    whether the entire path would be accelerated and force migration
    appropriately, my attempt at this made the situation much worse.
2005-10-09 02:03:22 +00:00
Benjamin Herrenschmidt
ff258ac278 Clients tend to set picture->repeat when not necessary. Most HW cannot
accelerate repeat NPOT thus triggering software fallback (this is the
    case with gnome desktop for example). This adds a simple optimisation
    to exa that removes "repeat" when it's obviously useless, that is, the
    single picture instance covers the entire rectangle beeing used
2005-10-06 23:45:29 +00:00
Eric Anholt
1614a31a9d Bug #4699: Correct some memory leaks in EXA and damage related to region
handling.
2005-10-06 21:55:41 +00:00
Eric Anholt
f47f00ab74 Mark the temporary pixmap dirty if UploadToScreen succeeds. Failure to do
so resulted in a solid black glyph if the font rendering actually
    resulted in a fallback (subpixel AA, for example) and the temporary got
    migrated after 10 or so glyphs.
2005-10-04 11:24:09 +00:00
Adam Jackson
aa74468aa5 sparse cleanups. s/0/NULL/ and mark a few things static. 2005-09-30 02:03:45 +00:00
Eric Anholt
56e7766c77 Bug #4541: Fix text drawing in the case where a list contains no
non-zero-sized glyphs. Several variables weren't updated, resulting in
    rendering simply stopping when this case was hit. (Anders Kaseorg)
2005-09-21 22:26:07 +00:00
Eric Anholt
361a9eb953 - Change migration-in rule slightly: previously, if your score was less
than the max, it was bumped, and then if you were above the threshhold
    you got moved in. Instead, do the above-threshhold check separate from
    score starting out less than max. While this will likely make thrashing
    cases worse, I hope it will fix some issues with long term performance
    (think of an xcompmgr with a backbuffer it's doing only accelerated
    operations to. If some new pixmap comes in and bumps it out, even once,
    it will never get a chance to re-migrate because its score will be
    maxed). Change migration-out to be the same way for symmetry, though it
    shouldn't ever affect anything.
- Fix a lot of debugging output, both in terms of printing quality, and
    completeness. The fallback debugging covers a lot more now, pointing
    out new areas for improvement. Debugging toggles are now centralized in
    exaPriv.h.
2005-09-21 10:27:53 +00:00
Eric Anholt
a1bcf25a1f Break EXA ABI while we still can. Add coordinates to the UploadToScreen
hook so we can upload a subset of a pixmap, and convert the current
    drivers to respect that. Use this support to directly UploadToScreen in
    exaGlyphs, providing a 47.4% +/-2.4% decrease in wall time for ls -lR
    programs/Xserver in an antialiased gnome-terminal on an M6 (n=3, caches
    hot). I would have bumped major version, only I can't tell what the
    EXA_VERSION_* is supposed to be doing as opposed to the module version.
2005-09-18 02:32:23 +00:00
Eric Anholt
074913c8a9 - Don't try to upload 0 byte-per-pixel (PICT_a1) data using
RADEONHostDataBlit.
- Disable the shortcut for switching from 3d to 3d in radeon_exa.c. It
    appears that we do need the cache flush here, thought it's not clear
    why. Disable the 2d to 2d shortcut while here, since I'm unsure of what
    we're doing. Exposed by the following bit:
- Bug #4485: Add a new routine, exaGlyphs, to handle font drawing. Glyphs
    were being accumulated in from non-migratable scratch pixmaps, causing
    the destination pixmap to move towards screen but the migration
    necessary for source never to happen, leading to abysmal performance.
    Instead, copy the scratch glyph data into a real pixmap first, then
    composite from that into the destination, allowing for migration. time
    ls -lR from programs/Xserver showed 26.9% (+/- 6.3%) decrease in wall
    time (n=3).
- Create exaDrawableUse* wrapping exaPixmapUse*, but which are aware of
    windows needing backing store. Makes migration code prettier, and
    ensures that composited windows will be migrated as normal when we turn
    off cw for EXA. (issue brought up by keithp)
2005-09-17 20:02:02 +00:00
Eric Anholt
1c003ccf5d Add a pair of hooks, PrepareAccess() and FinishAccess(), which get called
around CPU access to the framebuffer. This allows the hardware to set
    up swappers to deal with endianness, or to tell EXA to move the pixmap
    out to framebuffer if insufficient swappers are available (note: must
    not fail on front buffer!).
Submitted by: benh
2005-09-11 19:08:10 +00:00
Adam Jackson
ca210830bd Simplify life for EXA drivers by reducing some {Con,Dis}joint ops. 2005-09-11 18:43:55 +00:00
Eric Anholt
0c74799af4 Remove existing broken maxX/maxY code for composite (results in infinite
loops, doesn't deal with failure, doesn't present the interface to
    drivers that I expected) and instead replace it with a simple fallback
    to software when coordinate limits could be violated. Act similarly in
    other acceleration cases as well.
The solution I want to see (and intend to do soon) is to (when necessary)
    create temporary pictures/pixmaps pointing towards the real ones' bits,
    with the offsets adjusted, then render from/to those using adjusted
    coordinates.
2005-08-30 04:41:04 +00:00
Chris Lee
a16357ebc9 Last bits of changes to make exa build properly in the modular server. 2005-08-06 23:46:38 +00:00
Zack Rusin
d0dc574adb Check vtSema before accelerating primitives and sync in fallbacks only if
we got vtSema
2005-07-07 15:05:02 +00:00
Zack Rusin
30c019e847 Adding the new acceleration architecture: Exa. It's meant to replace XAA in
the coming months.
2005-07-01 08:56:12 +00:00