From: Alyssa Rosenzweig Date: Thu, 20 Jun 2019 23:51:08 +0000 (-0700) Subject: panfrost: Handle disabled/empty UBOs X-Git-Tag: upstream/19.3.0~5167 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f28e9e868b42d3df67dba76cb363e55ec4eee424;p=platform%2Fupstream%2Fmesa.git panfrost: Handle disabled/empty UBOs Prevents an assert(0) later in this (not so edge) case. We still have to have a dummy there. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index 3c7b5bb..9a5e670 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1311,9 +1311,21 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data) /* The rest are honest-to-goodness UBOs */ for (unsigned ubo = 1; ubo < ubo_count; ++ubo) { - mali_ptr gpu = panfrost_map_constant_buffer_gpu(ctx, buf, ubo); size_t sz = buf->cb[ubo].buffer_size; + bool enabled = buf->enabled_mask & (1 << ubo); + bool empty = sz == 0; + + if (!enabled || empty) { + /* Stub out disabled UBOs to catch accesses */ + + ubos[ubo].size = 0; + ubos[ubo].ptr = 0xDEAD0000; + continue; + } + + mali_ptr gpu = panfrost_map_constant_buffer_gpu(ctx, buf, ubo); + unsigned bytes_per_field = 16; unsigned aligned = ALIGN(sz, bytes_per_field); unsigned fields = aligned / bytes_per_field;