[PATCH] etnaviv: Set up GC3000 states, fix point sprite rendering

Lucas Stach l.stach at pengutronix.de
Fri Sep 29 12:31:12 UTC 2017


Am Dienstag, den 26.09.2017, 12:29 +0200 schrieb Wladimir J. van der
Laan:
> Set up new states that the blob started setting for GC3000
> consistently.
> 
> This makes sure that when another test or driver leaves the GPU in
> unpredictable state, these states are set up correctly for our
> rendering.
> 
> Also, setting PA_VIEWPORT_UNK00A84 to fui(8192.0) is necessary
> to make point sprite rendering on GC3000 work.
> 
> Signed-off-by: Wladimir J. van der Laan <laanwj at gmail.com>

With all the unknowns in there I can't really say I reviewed this, but
it fixes the point sprite issue on GC3000 and doesn't seem to regress
on older cores, so:

Tested-by: Lucas Stach <l.stach at pengutronix.de>

> ---
>  src/gallium/drivers/etnaviv/etnaviv_context.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c
> b/src/gallium/drivers/etnaviv/etnaviv_context.c
> index 2ca09ce..67aab6a 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_context.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_context.c
> @@ -317,6 +317,19 @@ etna_cmd_stream_reset_notify(struct
> etna_cmd_stream *stream, void *priv)
>     etna_set_state(stream, VIVS_GL_VERTEX_ELEMENT_CONFIG,
> 0x00000001);
>     etna_set_state(stream, VIVS_RA_EARLY_DEPTH, 0x00000031);
>     etna_set_state(stream, VIVS_PA_W_CLIP_LIMIT, 0x34000001);
> +   etna_set_state(stream, VIVS_PA_FLAGS, 0x00000000); /* blob sets
> ZCONVERT_BYPASS on GC3000, this messes up z for us */
> +   etna_set_state(stream, VIVS_RA_UNK00E0C, 0x00000000);
> +   etna_set_state(stream, VIVS_PA_VIEWPORT_UNK00A80, 0x38a01404);
> +   etna_set_state(stream, VIVS_PA_VIEWPORT_UNK00A84, fui(8192.0));
> +   etna_set_state(stream, VIVS_PA_ZFARCLIPPING, 0x00000000);
> +   etna_set_state(stream, VIVS_PE_ALPHA_COLOR_EXT0, 0x00000000);
> +   etna_set_state(stream, VIVS_PE_ALPHA_COLOR_EXT1, 0x00000000);
> +   etna_set_state(stream, VIVS_RA_HDEPTH_CONTROL, 0x00007000);
> +   etna_set_state(stream, VIVS_PE_STENCIL_CONFIG_EXT2, 0x00000000);
> +   etna_set_state(stream, VIVS_GL_UNK03834, 0x00000000);
> +   etna_set_state(stream, VIVS_GL_UNK03838, 0x00000000);
> +   etna_set_state(stream, VIVS_GL_UNK03854, 0x00000000);
> +   etna_set_state(stream, VIVS_PS_CONTROL_EXT, 0x00000000);
>  
>     /* Enable SINGLE_BUFFER for resolve, if supported */
>     etna_set_state(stream, VIVS_RS_SINGLE_BUFFER, COND(ctx-
> >specs.single_buffer, VIVS_RS_SINGLE_BUFFER_ENABLE));


More information about the etnaviv mailing list