summaryrefslogtreecommitdiff
path: root/exa
AgeCommit message (Collapse)AuthorFilesLines
2009-10-09EXA: Fix exaTryDriverSolidFill() for solid source pictures.Michel Dänzer1-13/+22
Solid pictures have a NULL pFormat field, but their format is always PICT_a8r8g8b8. Signed-off-by: Michel Dänzer <daenzer@vmware.com> Signed-off-by: Keith Packard <keithp@keithp.com>
2009-10-09EXA: fix exaGetRGBAFromPixel to not loop forever on PICT_a8 pictureBen Skeggs1-14/+20
Easily reproducible by running "rendercheck -t fill". It should be safe to just test against rbits for all colour components as we should always have values for r/g/bbits for PICT_FORMAT_COLOR formats. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Michel Dänzer <daenzer@vmware Signed-off-by: Keith Packard <keithp@keithp.com>
2009-10-01exa: avoid infinite loops if UTS sw fallbacks.Michel Dänzer1-5/+5
The upload in finish access can cause an infinite loop if UTS returns FALSE in here. Fixes fd.o bug #24246. Signed-off-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-09-27EXA: Fix mixed pixmaps crash with missing / failing UploadToScreen hook.Michel Dänzer1-12/+14
For the recent mixed pixmaps changes, I failed to realize (or hit in my testing) a problem which can occur if the driver doesn't provide an UploadToScreen hook or provides one which can fail: There can be a crash in exaMemcpyBox() because exaCopyDirtyToFb() passes pExaPixmap->fb_ptr to exaCopyDirty(), but that's normally NULL with driver allocated pixmaps. The solution is to make exaCopyDirty*() no longer rely on pExaPixmap->fb_ptr but use pPixmap->devPrivate.ptr after PrepareAccess instead. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=24167 .
2009-09-26EXA: Only calculate cache position once for each glyph.Michel Dänzer1-19/+23
2009-09-26EXA: Accumulate arbitrary number of glyphs without flushing.Michel Dänzer1-25/+22
2009-09-26EXA: Try to minimize UploadToScreen calls for mixed pixmaps.Michel Dänzer4-3/+35
If there are several software fallbacks affecting the system memory copy of the same pixmap, only copy the results back to the driver pixmap when it's used for acceleration again, or in the BlockHandler, whichever happens first.
2009-09-26EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail.Michel Dänzer6-216/+232
If the PrepareAccess hook fails, use the DownloadFromScreen hook to retrieve driver pixmap contents to a system RAM copy, perform software rendering on that and copy the results back using the UploadToScreen hook. Use the classic migration logic to minimize transfers (which as a bonus allows slightly cleaning up some of the existing mixed pixmap code). This enables things that weren't possible before with driver-allocated pixmap storage: If some (or all) GPU pixmap storage can't be mapped directly by the CPU, this can be handled between the PrepareAccess and DownloadFrom/UploadToScreen hooks, e.g.: * Radeon KMS on big endian machines can fail PrepareAccess if the pixmap requires byte-swapping and swap bytes in DownloadFrom/UploadToScreen. * Environments where GPU and CPU don't have a shared address space at all. Here the driver PrepareAccess hook will always fail and leave all transfers between GPU / CPU storage to the Download/From/UploadToScreen hooks. Drivers which can handle all pixmaps in the PrepareAccess hook should notice little if any difference.
2009-09-23EXA: Fix some issues pointed out by clang.Michel Dänzer3-10/+8
Remove dead variables, fix use of uninitialized values, that kind of thing.
2009-09-08EXA: Only take special code path for 1x1 fill for pixmaps.Michel Dänzer1-0/+1
It doesn't make sense for windows. Also double-check that the data pointer is valid. Fixes http://bugs.freedesktop.org/show_bug.cgi?id=23461 (not sure that could happen on master even without this, but just in case)
2009-09-04EXA: Stop hiding solid or gradient pictures from the driver.Michel Dänzer1-183/+200
Add support for solid pictures in exaTryDriverSolidFill(), but otherwise just pass solid and gradient pictures to the driver Composite hook. While we're at it, clean up the logic to detect Composite operations which are effectively solid fills or copies. This should also fix some false negatives and positives.
2009-09-03EXA: Preserve pPixmap->devPrivate.ptr in exaPixmapIsOffscreen_mixed.Michel Dänzer1-1/+3
Otherwise we may incorrectly clobber it to NULL on repeated PrepareAccess calls.
2009-08-15exa: clarify createpixmap2 new pitch returnDave Airlie1-1/+3
2009-08-14exa: fix CreatePixmap2 to be useful for tiling.Dave Airlie3-21/+28
This adds a pitch return so that the driver can align the pitch to any value it wishes and not just the one it gave to EXA at startup.
2009-08-08exa: more safetyMaarten Maathuis2-1/+2
2009-08-08exa: minor cleanupMaarten Maathuis1-10/+9
2009-08-08exa: Fix the broken upload fallback for "mixed"Maarten Maathuis1-18/+20
- Replace it with something wfb friendly while i'm at it.
2009-08-07exa: one can never be too carefulMaarten Maathuis1-1/+2
2009-08-07exa: fix a potential loophole in "mixed"Maarten Maathuis1-11/+13
- Always free sys_ptr before setting the pixmap to pinned.
2009-08-06exa: delay malloc for "mixed"Maarten Maathuis3-10/+17
2009-08-06exa: implement exaMoveInPixmap for "mixed"Maarten Maathuis5-3/+59
- This can be used to force creation of driver pixmap. - Not for 1 or 4 bpp. - Driver can still fail (driver) pixmap creation.
2009-08-06exa: Use damage to optimise away useless copies.Maarten Maathuis2-8/+69
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.