[Mesa-dev] [PATCH v2 1/2] etnaviv: enable full overwrite in a few more cases

Christian Gmeiner christian.gmeiner at gmail.com
Fri Dec 28 09:43:08 UTC 2018


Am Mi., 19. Dez. 2018 um 16:27 Uhr schrieb Lucas Stach <l.stach at pengutronix.de>:
>
> Take into account the render target format when checking if the color
> mask affects all channels of the RT. This allows to enable full
> override in a few cases where a non-alpha format is used.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>

Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>

> ---
> v2: clarify comment
> ---
>  src/gallium/drivers/etnaviv/etnaviv_blend.c | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_blend.c b/src/gallium/drivers/etnaviv/etnaviv_blend.c
> index 0e2299a50b30..061c9af5247f 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_blend.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_blend.c
> @@ -114,6 +114,7 @@ etna_update_blend(struct etna_context *ctx)
>     struct pipe_blend_state *pblend = ctx->blend;
>     struct etna_blend_state *blend = etna_blend_state(pblend);
>     const struct pipe_rt_blend_state *rt0 = &pblend->rt[0];
> +   const struct util_format_description *desc;
>     uint32_t colormask;
>
>     if (pfb->cbufs[0] &&
> @@ -128,11 +129,13 @@ etna_update_blend(struct etna_context *ctx)
>     }
>
>     /* If the complete render target is written, set full_overwrite:
> -    * - The color mask is 1111
> -    * - No blending is used
> +    * - The color mask covers all channels of the render target
> +    * - No blending or logicop is used
>      */
> -   bool full_overwrite = ((rt0->colormask == 0xf) && blend->fo_allowed) ||
> -                         !pfb->cbufs[0];
> +   if (pfb->cbufs[0])
> +      desc = util_format_description(pfb->cbufs[0]->format);
> +   bool full_overwrite = !pfb->cbufs[0] || ((blend->fo_allowed &&
> +                         util_format_colormask_full(desc, colormask)));
>     blend->PE_COLOR_FORMAT =
>              VIVS_PE_COLOR_FORMAT_COMPONENTS(colormask) |
>              COND(full_overwrite, VIVS_PE_COLOR_FORMAT_OVERWRITE);
> --
> 2.19.1
>
> _______________________________________________
> etnaviv mailing list
> etnaviv at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/etnaviv



-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info


More information about the mesa-dev mailing list