From 65fad783c7cae89b16f8c35c1bd61d4e20520d2a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 13 Jun 2023 10:45:38 -0400 Subject: [PATCH] zink: break out vk flag unrolling into util function Part-of: --- src/gallium/drivers/zink/zink_screen.h | 16 ++++++++++++++++ .../drivers/zink/zink_synchronization.cpp | 9 +-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index 40c94fb71b4..574d41e7bdb 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -98,6 +98,22 @@ zink_screen_handle_vkresult(struct zink_screen *screen, VkResult ret) return success; } +typedef const char *(*zink_vkflags_func)(uint64_t); + +static inline unsigned +zink_string_vkflags_unroll(char *buf, size_t bufsize, uint64_t flags, zink_vkflags_func func) +{ + bool first = true; + unsigned idx = 0; + u_foreach_bit64(bit, flags) { + if (!first) + buf[idx++] = '|'; + idx += snprintf(&buf[idx], bufsize - idx, "%s", func((1ul<