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.
This commit is contained in:
Eric Anholt 2005-10-09 02:03:22 +00:00
parent 526d1502df
commit 046234b3eb
3 changed files with 15 additions and 6 deletions

View File

@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
CARD32 component_alpha;
/* If the driver doesn't support accelerated composite, there's no point in
* going to this extra work.
* going to this extra work. Assume that no driver will be able to do
* component-alpha, which is likely accurate (at least until we make a CA
* helper).
*/
if (!pExaScr->info->accel.PrepareComposite) {
if (!pExaScr->info->accel.PrepareComposite ||
(maskFormat && NeedsComponent(maskFormat->format))) {
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
return;
}

View File

@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
CARD32 component_alpha;
/* If the driver doesn't support accelerated composite, there's no point in
* going to this extra work.
* going to this extra work. Assume that no driver will be able to do
* component-alpha, which is likely accurate (at least until we make a CA
* helper).
*/
if (!pExaScr->info->accel.PrepareComposite) {
if (!pExaScr->info->accel.PrepareComposite ||
(maskFormat && NeedsComponent(maskFormat->format))) {
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
return;
}

View File

@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
CARD32 component_alpha;
/* If the driver doesn't support accelerated composite, there's no point in
* going to this extra work.
* going to this extra work. Assume that no driver will be able to do
* component-alpha, which is likely accurate (at least until we make a CA
* helper).
*/
if (!pExaScr->info->accel.PrepareComposite) {
if (!pExaScr->info->accel.PrepareComposite ||
(maskFormat && NeedsComponent(maskFormat->format))) {
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
return;
}