etnaviv: handle NULL views in set_sampler_views

Passing NULL for the views parameter should be the same as passing an
array of NULL, according to the documentation. So let's respect that
detail.

This fixes a crash when using GALLIUM_HUD. The wrong handling of views
parameter was causing problems starting with
2813688f8d ("gallium/hud: don't use cso_context to restore VBs, constbuf 0 and sampler views").

Cc: <mesa-stable@lists.freedesktop.org>
Fixes: c9e8b49b88 ("etnaviv: gallium driver for Vivante GPUs")
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8670>
This commit is contained in:
Christian Gmeiner 2021-01-23 16:15:38 +01:00 committed by Marge Bot
parent f180bf3e03
commit 81ab9fe2d0

View file

@ -247,8 +247,10 @@ set_sampler_views(struct etna_context *ctx, unsigned start, unsigned end,
uint32_t prev_active_sampler_views = ctx->active_sampler_views;
for (i = start, j = 0; j < nr; i++, j++, mask <<= 1) {
pipe_sampler_view_reference(&ctx->sampler_view[i], views[j]);
if (views[j]) {
struct pipe_sampler_view *view = views ? views[i] : NULL;
pipe_sampler_view_reference(&ctx->sampler_view[i], view);
if (view) {
ctx->active_sampler_views |= mask;
ctx->dirty_sampler_views |= mask;
} else