[Xorg-driver-geode] [PATCH 2/5] Put the one pixel rendering work back to the server to handle if the pMsk is not zero

Mart Raudsepp leio at gentoo.org
Mon Jul 5 23:57:20 PDT 2010


On Fri, 2010-07-02 at 15:59 +0800, Huang, FrankR wrote:
> From: Frank Huang <frankr.huang at amd.com>
> 
> *With mask, our driver can only do one pixel source with repeat
> rendering. That is a solid source picture. Otherwise, we must
> return it to server.

Why is this fallback addition necessary? I mean, I think that we already
fallback in case of non-one pixel source in there, by this existing
code:

    if (pMsk && op != PictOpClear) {
	// ... some other fallback code not relevant here ...
	/* The pSrc should be 1x1 pixel if the pMsk is not zero */
	if (pSrc->pDrawable->width != 1 || pSrc->pDrawable->height != 1)
	    return FALSE;
    }

So your added fallback code would only be necessary only if either:

a) PictOpClear of any size source with repeat flag is an issue as well
b) We don't handle non-repeating 1x1 source pixel correctly, but we seem
to have code for that - the while loop in lx_do_composite will just do
one cycle if !repeat


So I believe this patch is redundant and not necessary, do you agree?

Meanwhile this patch is
Nacked-by: Mart Raudsepp <leio at gentoo.org>

> Signed-off-by: Frank Huang <frankr.huang at amd.com>
> ---
>  src/lx_exa.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/src/lx_exa.c b/src/lx_exa.c
> index e0def8f..fbb62a0 100644
> --- a/src/lx_exa.c
> +++ b/src/lx_exa.c
> @@ -589,6 +589,13 @@ lx_check_composite(int op, PicturePtr pSrc, PicturePtr pMsk, PicturePtr pDst)
>      if (pSrc->format == PICT_a8 || pDst->format == PICT_a8)
>  	return FALSE;
>  
> +    /* When the mask is not zero, we can only do one pixel source(1x1)
> +     * with repeatable parameter rendering, because we need a solid source
> +     * picture. If that is not so, return to Xserver to handle it */
> +
> +    if (pMsk && (!pSrc->repeat))
> +	return FALSE;
> +
>      if (pMsk && op != PictOpClear) {
>  	struct blend_ops_t *opPtr = &lx_alpha_ops[op * 2];
>  	int direction = (opPtr->channel == CIMGP_CHANNEL_A_SOURCE) ? 0 : 1;



More information about the Xorg-driver-geode mailing list