summaryrefslogtreecommitdiff
path: root/exa
AgeCommit message (Collapse)AuthorFilesLines
2009-08-06exa: A simple 3rd backend implementation.Maarten Maathuis10-58/+460
- Based on driver pixmaps with some changes (completely transparent to driver). - It helps with the problem of known software fallbacks, such as trapezoids. - exaDoMigration is now called for all cases that provide a do_migration hook. - exa_migration.c is renamed to exa_migration_classic.c
2009-08-06exa: Split out some classic and driver allocated pixmap code into seperate filesMaarten Maathuis7-331/+590
- Create a few seperate functions and a few private function pointers. - Replace a few if conditions with a check for pExaPix->pDamage instead. - This is in preperation of a third scheme that lies somewhere in between. - Code clarity would have suffered (i started working on it and didn't like the mess).
2009-08-04EXA: Simplify exaGetPixmapFirstPixel using GetImage.Michel Dänzer1-45/+24
2009-08-04Add support for RENDER BGRA formats.Michel Dänzer1-5/+25
2009-07-21EXA: Make Prepare/FinishAccess tracking resilient to repeated / nested calls.Michel Dänzer3-61/+60
Use reference counting and do nothing unless the reference count transitions to/from 0. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=22822 . As a bonus, this avoids calling the driver Prepare/FinishAccess hooks more than once per pixmap and operation. Also update the Doxygen documentation for the PrepareAccess driver hook to better match current reality.
2009-07-21EXA: Fix up some issues introduced by 00fe4a297744c81b40f0243fb56ad848a9be6a2b.Michel Dänzer2-6/+8
* Check all pixmaps involved for damage records, fixes visual corruption due to the screen pixmap never having one. * Fix an array size and remove a now superfluous assignment.
2009-07-20EXA: Bail earlier from exaDoPutImage if the driver has no UploadToScreen hook.Michel Dänzer1-6/+3
Also remove dead code associated with access_prepared local variable.
2009-07-20EXA: Completely eliminate exaDoMigration calls for drivers that manage pixmaps.Michel Dänzer4-125/+154
2009-07-14exa: switch to byte counting functions.Peter Hutterer1-3/+3
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Michel Dänzer <michel@daenzer.net>
2009-07-10EXA: Only pass CT_YXBANDED to RECTS_TO_REGION() if that is really true.Michel Dänzer1-1/+11
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=22642 .
2009-06-09exa: driver pixmaps enabled if either CreatePixmap or CreatePixmap2 presentBen Skeggs1-1/+1
2009-05-18EXA: Allocate from the end of free offscreen memory rather than from the start.Michel Dänzer1-31/+14
This way we don't always need to scan over previously allocated areas when looking for an available one, and there might be less fragmentation. Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-05-18EXA: Defragment offscreen memory.Michel Dänzer4-8/+297
At most once per second, under the following circumstances: * We can't satisfy an offscreen memory allocation, but there seems to be enough offscreen memory available in total. or * The server has been idle for at least 100ms, and there is more than one available offscreen area. Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-05-15EXA: Always damage glyph cache pixmap manually after uploading a glyph.Michel Dänzer1-36/+37
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-05-15EXA: Take GC client clip type into account for migration.Michel Dänzer4-24/+25
Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18950 . Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-04-23exa: add missing exa.h header includeDave Airlie1-4/+3
2009-04-23exa: missed exa.h changeDave Airlie1-0/+3
2009-04-23exa: add CreatePixmap2 hook for driver pixmaps.Dave Airlie1-4/+7
This adds a revised pixmap hook for driver pixmaps, which is required to support tiling on various chips. Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-04-23exa: avoid offscreen pixmap swapped out flag for driver pixmapsDave Airlie1-0/+3
2009-04-10exa: implement UTS based upload through CopyAreaMaarten Maathuis1-19/+51
- Some image viewers (eog, gqview) trigger the CopyArea path of Xext/shm.c - I'm not aware of any code path that wouldn't like UTS and trigger this code. - miDoCopy should handle src coordinate clipping. - Overlapping blits are obviously not an issue (both would have to be offscreen or not).
2009-04-09EXA: If the driver can't composite to an a8 mask, try an argb mask for glyphs.Michel Dänzer1-2/+31
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-03-19exa: Accept scratch pixmaps with offscreen memory as such.Maarten Maathuis1-5/+13
2009-03-18exa: round of fb_pitch to the next byteMaarten Maathuis1-2/+2
2009-03-18exa: check if the pixmap is pinned for unsupported AUX indices.Maarten Maathuis1-0/+2
2009-03-13exa: allow exaModifyPixmapHeader to set sys_ptr for EXA_HANDLES_PIXMAPSMaarten Maathuis1-6/+8
- exaModifyPixmapHeader would save sys_ptr if needed, but it would be NULL'ed afterwards. - This is needed to support pixmaps that are not offscreen.
2009-03-04exa: fix a serious issue in exaChangeWindowAttributes (and some more related ↵Maarten Maathuis1-12/+90
things) - fbChangeWindowAttributes can create pixmaps (and access them) without use preparing access. - Also handle the destroyed pixmaps by finishing them first. - Switch to DEST indices again in exaCreatePixmapWithPrepare, because they are obviously being rendered to. - Also avoid calling FinishAccess on pixmaps that are destroyed (and their memory potentially invalid).
2009-03-04exa: remove a few pExaPixmap checks.Maarten Maathuis1-20/+12
- And make some fatal for a debug build.
2009-03-04exa: fix unwrapping of ModifyPixmapHeader upon CloseScreen.Maarten Maathuis1-3/+3
- Cleanup wrapping too.
2009-03-04exa: increase/rework safety checks in Prepare/FinishAccess.Maarten Maathuis3-16/+86
2009-03-04exa: avoid a potential Prepare/FinishAccess inbalance.Maarten Maathuis1-5/+7
2009-03-04exa: simplify exaPixmapIsOffscreenMaarten Maathuis1-13/+13
- This includes properly handling the framebuffer.
2009-02-27exa: fixup aux indices and ensure that the indices are used as they should be.Maarten Maathuis3-27/+22
- In a previous patch i forgot to add a FALSE somewhere it seems. - Rename AUX indices so the driver (think of driver managed pixmaps) can do optimisations based upon them. - Fix one abuse of DEST index now that we have the AUX indices (same reason as above).
2009-02-27exa: whitespaceMaarten Maathuis1-4/+1
2009-02-27exa: fixup exaAssertNotDirty.Maarten Maathuis3-8/+27
- Do the right thing based on prepare access.
2009-02-27exa: minor glyphs cleanup.Maarten Maathuis1-13/+14
- This should fix subtle coordinate bugs and make the code a bit cleaner to read.
2009-02-27EXA: Fix check for whether the glyph we're evicting from the cache is in use.Michel Dänzer1-1/+3
Since commit f07f18231a921d3ae9dd9b75881c9e58e9e2e235 ('EXA: Allow using exaCompositeRects also when we can't use a mask in exaGlyphs.') we were checking the wrong set of coordinates in the buffer where glyphs to be rendered are accumulated when no mask is used in exaGlyphs. This fixes occasional glyph corruption which can be corrected with redraws, in particular with Qt4. Thanks to Maarten Maathuis for asking the right question: 'where do we protect against evicting glyphs that are still needed?' Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-27EXA: No longer use the driver UploadToScratch hook.Michel Dänzer2-40/+2
See http://bugs.freedesktop.org/show_bug.cgi?id=20213 . Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-27EXA: Handle separate alpha maps properly in Composite fallback, take two.Michel Dänzer3-1/+51
Preserve the EXA ABI by introducing a new driver flag EXA_SUPPORTS_PREPARE_AUX. If the driver doesn't set this flag, we have to assume any Prepare/FinishAccess driver hooks can't handle the EXA_PREPARE_AUX* indices, so we move out such pixmaps at PrepareAccess time. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=18710 . Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-27Revert "EXA: Handle separate alpha maps properly in Composite fallback."Michel Dänzer6-45/+109
This reverts commit 170cf1270dff38d3cce7f5ba5b940d1c0d70eff5. Conflicts: exa/exa_render.c
2009-02-26EXA: Allow using exaCompositeRects also when we can't use a mask in exaGlyphs.Michel Dänzer3-198/+182
This should give the full benefits of the glyph cache even when we can't use a mask. This also means we no longer need to scan the glyphs to see if they overlap, we can just use a mask or not as the client asks. Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-26EXA: Stop tracking damage for pixmaps subject to ModifyPixmapHeader.Michel Dänzer1-0/+9
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-24EXA: Handle separate alpha maps properly in Composite fallback.Michel Dänzer6-108/+45
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=18710 . As this can't work without new EXA_PREPARE_AUX* indices, this requires a major version bump, so we can also drop the UploadToScratch driver hook and ExaOffscreenSwap*(). So this also fixes http://bugs.freedesktop.org/show_bug.cgi?id=20213 . Moreover, introduce EXA_DRIVER_KNOWN_MAJOR to break compilation of drivers which may not be able to handle EXA_PREPARE_AUX*, giving instructions how to make them build again in the #error message. Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-17Revert "exa: the extent of the valid region is probably much larger than ↵Maarten Maathuis1-3/+13
that of the pending damage." This reverts commit 97c1cbc70216366e92b9371de608ce94e60aa874. - Sorry for the thinko, pending damage is often not fragmentated. - Should the dst region become fragmentated, you actually want to copy more to unfragmentate it.
2009-02-17exa: exaPixmapDirty should use official damage functions.Maarten Maathuis1-8/+2
- Otherwise other users will not be notified of damage.
2009-02-17exa: the extent of the valid region is probably much larger than that of the ↵Maarten Maathuis1-13/+3
pending damage. - Since the default has been changed from nothing to everything.
2009-02-16exa: reintroduce src rect optimisation, with a slightly higher threshold.Maarten Maathuis1-0/+7
- I got some feedback on gtkperf line test regression. - The increased threshold should ensure the destination optimisation is dominant.
2009-02-16exa: fix performance regression from 736b6fbd2c941b6276066cd1503523edebe7bf3dMaarten Maathuis2-10/+12
- The src optimisation is more aggressive and possibly harmful in light of the new initial state of pixmaps. - There is now actually a performance improvement by almost always keeping the number of rects low.
2009-02-15EXA: Try to prevent the valid regions from growing too many rects.Michel Dänzer1-1/+28
This helps contain region management overhead in some pathological cases, see e.g. http://bugs.freedesktop.org/show_bug.cgi?id=16647 . Signed-off-by: Michel Dänzer <daenzer@vmware.com>
2009-02-08dix: always NULL pGC->tile.pixmap in Create{Scratch}GC.Maarten Maathuis1-1/+0
2009-02-08exa: fix exaValidateGC.Maarten Maathuis1-29/+55
- use DEST in the createPixmap wrapper, because stipple already takes MASK (in case someone uses swappers). - Anticipate some of the less common situations when fbValidateDrawable will access tile related pixmaps.