From 2410993ef6054e452aff18109343cf8db5946e6c Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 17 May 2022 15:49:03 -0700 Subject: [PATCH] turnip: fix off-by-one in border color bitset BITSET_FFS reserves 0 for no bit set. BITSET_CLEAR just below cleared the wrong bit. Part-of: --- src/freedreno/vulkan/tu_device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index fe166e7..018c85d 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -2611,7 +2611,8 @@ tu_init_sampler(struct tu_device *device, if (pCreateInfo->borderColor == VK_BORDER_COLOR_FLOAT_CUSTOM_EXT || pCreateInfo->borderColor == VK_BORDER_COLOR_INT_CUSTOM_EXT) { mtx_lock(&device->mutex); - border_color = BITSET_FFS(device->custom_border_color); + border_color = BITSET_FFS(device->custom_border_color) - 1; + assert(border_color < TU_BORDER_COLOR_COUNT); BITSET_CLEAR(device->custom_border_color, border_color); mtx_unlock(&device->mutex); tu6_pack_border_color(device->global_bo->map + gb_offset(bcolor[border_color]), -- 2.7.4