On Tue, Jul 30, 2013 at 6:55 PM, Grigori Goronzy <g...@chown.ath.cx> wrote: > On 30.07.2013 17:26, Michel Dänzer wrote: >> >> >> Like Roland, I wonder if this trick couldn't be done in EXA instead of >> in the driver? >> > > I don't see how, EXA/XRENDER do not know about constant blend colors or > anything like it. The implementation in the backend is very simple anyway, > it should be trivial to implement this in drivers that can support it. > > >> >>> diff --git a/src/evergreen_exa.c b/src/evergreen_exa.c >>> index 5b8a631..ee5b06b 100644 >>> --- a/src/evergreen_exa.c >>> +++ b/src/evergreen_exa.c >>> @@ -704,6 +704,14 @@ static uint32_t EVERGREENGetBlendCntl(int op, >>> PicturePtr pMask, uint32_t dst_for >>> } else if (dblend == (BLEND_ONE_MINUS_SRC_ALPHA << >>> COLOR_DESTBLEND_shift)) { >>> dblend = (BLEND_ONE_MINUS_SRC_COLOR << >>> COLOR_DESTBLEND_shift); >>> } >>> + >>> + /* With some tricks, we can still accelerate PictOpOver with >>> solid src. >>> + * This is commonly used for text rendering, so it's worth the >>> extra >>> + * effort. >>> + */ >>> + if (sblend == (BLEND_ONE << COLOR_SRCBLEND_shift)) { >>> + sblend = (BLEND_CONSTANT_COLOR << COLOR_SRCBLEND_shift); >>> + } >> >> >> Is this correct for all cases where (sblend == (BLEND_ONE << >> COLOR_SRCBLEND_shift))? >> > > Yes. PictOpOver is the only case where we have this kind of src blend with > src alpha. > > >> >>> if (EVERGREENBlendOp[op].src_alpha && >>> (EVERGREENBlendOp[op].blend_cntl & >>> COLOR_SRCBLEND_mask) != >>> (BLEND_ZERO << COLOR_SRCBLEND_shift)) { >>> - RADEON_FALLBACK(("Component alpha not supported with >>> source " >>> - "alpha and source value >>> blending.\n")); >>> + if (pSrcPicture->pDrawable || op != 3) >>> + RADEON_FALLBACK(("Component alpha not supported >>> with source " >>> + "alpha and source value >>> blending.\n")); >>> } >>> } >> >> >> Please use PictOpOver instead of the magic number 3. >> > > Right, I'll send a revised version of the patch.
I've already pushed the original series. You can provide fixes on top. Alex _______________________________________________ xorg-driver-ati mailing list xorg-driver-ati@lists.x.org http://lists.x.org/mailman/listinfo/xorg-driver-ati