[PATCH v2] etnaviv: Allow clearing constant buffer using buffer==NULL user_buffer==NULL

Lucas Stach l.stach at pengutronix.de
Mon Oct 30 13:21:07 UTC 2017


Am Samstag, den 28.10.2017, 16:16 +0200 schrieb Wladimir J. van der Laan:
> Prevents an assertion when using GALLIUM_HUD with ioquake3,
> when cso_restore_constant_buffer_slot0 restores an empty
> constant buffer in slot 0.
> 
> > Signed-off-by: Wladimir J. van der Laan <laanwj at gmail.com>
> ---
>  src/gallium/drivers/etnaviv/etnaviv_state.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Oops - needed to pull the rest of the expression into unlikely(...) too
> 
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_state.c b/src/gallium/drivers/etnaviv/etnaviv_state.c
> index 34bcb19..91f12f3 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_state.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_state.c
> @@ -89,7 +89,7 @@ etna_set_constant_buffer(struct pipe_context *pctx,
>  
>     /* Note that the state tracker can unbind constant buffers by
>      * passing NULL here. */
> -   if (unlikely(!cb))
> +   if (unlikely(!cb || (cb->buffer == NULL && cb->user_buffer == NULL)))

I would prefer the shorter expression (!cb->buffer && !cb->user_buffer) 
here, which seems more consistent with the rest of the codebase.

Regards,
Lucas

>        return;
>  
>     /* there is no support for ARB_uniform_buffer_object */


More information about the etnaviv mailing list