From aacdaffc5ea86c345340fa7d932c4d5beeffce30 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Thu, 11 Jun 2026 17:11:05 +0200 Subject: [PATCH] radv: fix setting inline push constants when only the last one is used The 64bit mask was truncated, and then when the low half is 0, the base was -1. By accident, u_bit_consecutive64(-1, 65) is the original mask, so we uploaded a single garbage value. Fixes: 7f6262bb85c ("radv: allow holes in inline push constants") Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index ad7db6403fe..6064285b9a3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6574,7 +6574,7 @@ radv_emit_push_constants_per_stage(const struct radv_device *device, struct radv /* Emit inlined push constants. */ if (inline_push_const_mask) { - const uint8_t base = ffs(inline_push_const_mask) - 1; + const uint8_t base = ffsll(inline_push_const_mask) - 1; if (inline_push_const_mask == u_bit_consecutive64(base, util_last_bit64(inline_push_const_mask) - base)) { /* consecutive inline push constants */