From 9d4441c71aa60b275ae1fccfc11b37705b02c118 Mon Sep 17 00:00:00 2001 From: Icecream95 Date: Sat, 1 Jan 2022 02:15:21 +1300 Subject: [PATCH] panfrost: Fix ubo_mask calculation BITSET_MASK returns ~0 when given an input of zero, when we need it to return 0 instead. Fixes shaders with only sysvals but no UBOs when push constants are disabled. This breaks when 31 or 32 UBOs are used, but PAN_MAX_CONST_BUFFERS is currently set to 16. Fixes: c246af0dd80 ("panfrost: Only upload UBOs when needed") Part-of: --- src/panfrost/bifrost/bifrost_compile.c | 2 +- src/panfrost/midgard/midgard_compile.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c index d2c37e73bdd..5ea945f7231 100644 --- a/src/panfrost/bifrost/bifrost_compile.c +++ b/src/panfrost/bifrost/bifrost_compile.c @@ -4238,7 +4238,7 @@ bifrost_compile_shader_nir(nir_shader *nir, bi_compile_variant(nir, inputs, binary, sysval_to_id, info, BI_IDVS_NONE); } - info->ubo_mask &= BITSET_MASK(nir->info.num_ubos); + info->ubo_mask &= (1 << nir->info.num_ubos) - 1; _mesa_hash_table_u64_destroy(sysval_to_id); } diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 79ba206ca38..b2f0a053ea5 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -3313,7 +3313,7 @@ midgard_compile_shader_nir(nir_shader *nir, /* Report the very first tag executed */ info->midgard.first_tag = midgard_get_first_tag_from_block(ctx, 0); - info->ubo_mask = ctx->ubo_mask & BITSET_MASK(ctx->nir->info.num_ubos); + info->ubo_mask = ctx->ubo_mask & ((1 << ctx->nir->info.num_ubos) - 1); if (midgard_debug & MIDGARD_DBG_SHADERS && !skip_internal) { disassemble_midgard(stdout, binary->data,