summaryrefslogtreecommitdiff
path: root/exa/exa_unaccel.c
AgeCommit message (Collapse)AuthorFilesLines
2006-04-27Improve EXA fallback debugging output to include the locations of pixmaps.Eric Anholt1-23/+41
This is being used in tracking down recent compositing performance regressions.
2006-04-27Add trivial PolySegment acceleration for 0-width horizontal/vertical lines,Eric Anholt1-2/+4
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-18Fix exaGetPixmapFirstPixel to migrate as unaccelerated. Also adds a bit ofEric Anholt1-2/+3
fallback debugging info to PolyGlyphBlt.
2006-04-01Export exaPrepare/FinishGC to the rest of EXA, and use it in the ImageGlyphEric Anholt1-2/+2
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-03-31Don't attempt to Prepare/FinishAccess NULL pDrawables. Exposed by newEric Anholt1-4/+6
gradient testing in rendercheck.
2006-03-31Add an option to EXA for the DDX to request that EXA hide the pixmap'sEric Anholt1-36/+42
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-31Revert mistaken commit to exa_unaccel.c. Should have been toEric Anholt1-42/+36
exa_offscreen.c: Correct a typo in debug-only offscreen validation code. (Wang Zhenyu)
2006-03-31Correct a typo in debug-only offscreen validation code. (Wang Zhenyu)Eric Anholt1-36/+42
2006-03-30Remove the exaAsyncPixmapGCOps mostly-unaccelerated ops vector, and alwaysEric Anholt1-30/+0
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-14Move migration logic to a new function, exaDoMigration(). This is largely aEric Anholt1-1/+10
manual conversion to allow for different migration schemes to be implemented reasonably, but does include some minor improvements such as accounting for pinned pixmaps not being acceleratable, and for our current GetImage and GetSpans not being accelerated.
2006-03-14Pull code for getting the (0,0) pixel from a pixmap out to a separateEric Anholt1-0/+28
function, since it gets repeated (with bad error handling, in one case).
2006-02-02Rearrange and rename EXA code to be a bit more logically organized. AlsoEric Anholt1-1/+1
removes a little bit of debugging leftovers. Summary: exa.c -> exa.c (miscellaneous code) exa_accel.c (all acceleration code) exa_migration.c (migration logic) exaasync.c -> exa_unaccel.c (software fallbacks) exapict.c -> exa_render.c (render extension stuff) exaoffscreen.c -> exa_offscreen.c exaPriv.h -> exa_priv.h
2005-10-15Add an additional meaning to the "dirty" flag. Now, if !dirty && !area, theEric Anholt1-14/+14
pixmaps's contents are undefined, so we won't need to upload the undefined contents in MoveIn. Use the ExaCheck* for async ops as well, so that dirty is always tracked. While the performance impact for my ls -lR test was not significant (though the avoiding-upload path was being hit), it's likely to be important for the upcoming Get/PutImage acceleration from ajax.
2005-09-21- Change migration-in rule slightly: previously, if your score was lessEric Anholt1-11/+0
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-11Add some optional (disabled) fallback debugging code to the async code, forEric Anholt1-0/+34
better tracking of when we're hitting software.
2005-09-11Add a pair of hooks, PrepareAccess() and FinishAccess(), which get calledEric Anholt1-49/+73
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-08-24Bugzilla #4226: Change the pixmap migration strategy for the CopyNtoN case.Eric Anholt1-2/+3
Now, if either source or dest were in framebuffer, try to get both there, but prefer system memory for both otherwise. Required making exaasync.c go through the try-acceleration path. This significantly improves window resizing under composite, because previously the pattern of creating a new pixmap and copying default contents from the screen caused a fallback every time due to the new destination pixmap being in system memory.
2005-07-04This fixes the close screen mess (crash reported by Thomas). Also hide theZack Rusin1-78/+22
private Exa screen definition. Properly cleanup on screen close and do not delete the private screen in the DriverFini call.
2005-07-01Adding the new acceleration architecture: Exa. It's meant to replace XAA inZack Rusin1-0/+365
the coming months.