Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Track damage after using UploadToScreen directly.
Don't waste any effort on empty glyphs.
|
|
When possible, use UploadToScreen() rather than CompositePicture()
to upload glyphs onto the glyph cache pixmap. This avoids allocating
offscreen memory for each glyph making management of offscreen
areas much more efficient.
|
|
|
|
Allocate each cache at a different vertical position in the
per-format pixmap. Fix width/height confusion when choosing
the cache for a glyph.
|
|
Add a function to composite multiple independent rectangles
from the same source to the same destination in a single
operation: this is useful for building a glyph mask.
|
|
Add back exaGlyphs(); the new version copies the glyph images
onto a single large glyph pixmap and draws from their to the
destination surface. This reduces the management of small
offscreen areas and will allow us to avoid texture unit setup
between each glyph.
|
|
|
|
exaModifyPixmapHeader now also only evaluates arguments that have a
meaningful value.
|
|
* Make sure available areas are considered to have no eviction cost. This seems
to help for https://bugs.freedesktop.org/show_bug.cgi?id=15513 but I'm afraid
that may just be coincidence.
* Only calculate eviction cost of each area once for each eviction pass.
Safeguard against potential (though unlikely) division by zero.
* Cosmetic enhancements: Name eviction cost related variables 'cost' instead of
'score' to emphasize that smaller values are better, update Doxygen file
comment to the way eviction works now.
|
|
In some cases we can still do the copying in hardware even if the
dimensions of the pixmaps are out of range. This is true when the boxes
that we're to copy are all in the card's range.
|
|
|
|
|
|
|
|
Reduce the cost of the inner loop, by keeping a set of pointers to the
first and the last areas in the series, subtracting the cost of the first
area from the score, and adding the cost of the last area while walking
the list. This commit also moves the scanning loop from exaOffscreenAlloc
into a separate function.
Idea by Michel Dänzer.
|
|
Replace the current score keeping algorithm with a rolling counter that's
incremented in ExaOffscreenMarkUsed, with the previous value being stored
in the area. exaOffscreenAlloc uses the difference between the counter
value and the value in the area when deciding which area to evict.
It now also takes the size of the areas into account, and favors evicting
smaller areas.
The credit for these ideas goes to Michel Dänzer.
|
|
|
|
Code shuffling in a634c9b03494ba80aeec28be19662ac96657cc23 broke this by
leaving pSrcPixmap = NULL.
|
|
This fixes a warning in amd_drv which is using it.
Signed-off-by: Bernardo Innocenti <bernie@codewiz.org>
|
|
|
|
Conflicts:
hw/xnest/Pixmap.c
include/dix.h
|
|
|
|
Conflicts:
Xext/xace.c
Xext/xace.h
|
|
Also add some code comments about these optimizations.
|
|
Conflicts:
dix/dispatch.c
dix/property.c
hw/xfree86/common/xf86VidMode.c
include/xkbsrv.h
render/glyph.c
xkb/xkbActions.c
|
|
Replace with heap allocations.
|
|
Replace with heap allocations.
|
|
These hints allow an acceleration architecture to optimize allocation of certain
types of pixmaps, such as pixmaps that will serve as backing pixmaps for
redirected windows.
|
|
Conflicts:
GL/glx/glxscreens.c
hw/xnest/Screen.c
render/glyph.c
render/glyphstr.h
render/render.c
|
|
|
|
Not all of the DDX/miext Glyphs hook implementations have been removed, but
they should be.
|
|
Conflicts:
configure.ac
|
|
|
|
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=12815 .
|
|
Conflicts:
os/access.c
|
|
|
|
This reverts commit 1365aeff5499a051375e43a9fcbf54733ac93929.
It defeated the optimization for drivers that don't provide a CreatePixmap
hook. The optimization makes no sense for drivers that do anyway, so disable
it for them completely.
|
|
|
|
|
|
|
|
|
|
Conflicts:
configure.ac
exa/exa_render.c
|
|
In exaDriverInit(), quickly check if the programmer forgot to set some
mandadory driver hooks, in that case display a meaningful error message.
|
|
|
|
|
|
This adds hooks for the driver to access Create/DestroyPixmap and ModifyPixmapHe
ader.
It allocates a 0 sized pixmap using fb and calls the driver routine to do
work of allocating the actual memory.
ModifyPixmapHeader is mainly required for hooking the screen pixmap which
isn't create by normal methods
|
|
|
|
This doesn't add real value yet, but it will be useful once I add code
that splits large render operations into smaller parts if necessary.
|
|
exaCreatePixmap should handle all cases correctly.
|
|
Now that PaintWindow is gone, all callers already handle fallbacks.
|