[PATCH 4/8] etnaviv: add support for extended PE formats

Wladimir J. van der Laan laanwj at gmail.com
Sat Oct 21 05:27:03 UTC 2017


On Fri, Oct 20, 2017 at 10:21:24PM +0200, Christian Gmeiner wrote:
> Use the extended format if an such a format was passed.
> 
> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> ---
>  src/gallium/drivers/etnaviv/etnaviv_state.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_state.c b/src/gallium/drivers/etnaviv/etnaviv_state.c
> index 34bcb19069..727d726f76 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_state.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_state.c
> @@ -126,13 +126,19 @@ etna_set_framebuffer_state(struct pipe_context *pctx,
>        struct etna_surface *cbuf = etna_surface(sv->cbufs[0]);
>        struct etna_resource *res = etna_resource(cbuf->base.texture);
>        bool color_supertiled = (res->layout & ETNA_LAYOUT_BIT_SUPER) != 0;
> +      uint32_t fmt = translate_rs_format(cbuf->base.format);
>  
>        assert(res->layout & ETNA_LAYOUT_BIT_TILE); /* Cannot render to linear surfaces */
>        etna_update_render_resource(pctx, cbuf->base.texture);
>  
>        pipe_surface_reference(&cs->cbuf, &cbuf->base);
> -      cs->PE_COLOR_FORMAT =
> -         VIVS_PE_COLOR_FORMAT_FORMAT(translate_rs_format(cbuf->base.format)) |
> +
> +      if (fmt >= RS_FORMAT_R16F)
> +          cs->PE_COLOR_FORMAT = VIVS_PE_COLOR_FORMAT_FORMAT_EXT(fmt);

Please set the VIVS_PE_COLOR_FORMAT_FORMAT_FORMAT_MASK bit when using
VIVS_PE_COLOR_FORMAT_FORMAT_EXT, some hw needs this to know it should
use the extended format instead of the base format (and in any case the blob does
it).

0x06112f10, /*   [0142C] PE.COLOR_FORMAT := FORMAT=X4R4G4B4,FORMAT_MASK=1,COMPONENTS=R=1,G=1,B=1,A=1,SUPER_TILED_NEW=1,COMPONENTS_MASK=0,OVERWRITE=1,OVERWRITE_MASK=0,SUPER_TILED=1,SUPER_TILED_MASK=0,FORMAT_EXT=A8R8G8B8,FORMAT_EXT_MASK=0 */ 

(the blob even uses the FORMAT_EXT and masks FORMAT for every format - on GPUs
that support the EXT format bits, but there's some backwards compatbility
handling, even GC7000 still understands the old way)

Wladimir


More information about the etnaviv mailing list