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:
parent
526d1502df
commit
046234b3eb
|
@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
|
||||||
CARD32 component_alpha;
|
CARD32 component_alpha;
|
||||||
|
|
||||||
/* If the driver doesn't support accelerated composite, there's no point in
|
/* 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);
|
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
|
||||||
CARD32 component_alpha;
|
CARD32 component_alpha;
|
||||||
|
|
||||||
/* If the driver doesn't support accelerated composite, there's no point in
|
/* 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);
|
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -600,9 +600,12 @@ exaGlyphs (CARD8 op,
|
||||||
CARD32 component_alpha;
|
CARD32 component_alpha;
|
||||||
|
|
||||||
/* If the driver doesn't support accelerated composite, there's no point in
|
/* 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);
|
miGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue