From c1e685bfe91d13455dc7e279d88db7006326580e Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 15 Jan 2025 15:41:23 -0500 Subject: [PATCH] util,vulkan,asahi,hk: hash format strings flag day change to use the new infra. as-is this is a bit pointless, but it unblocks the new bindgen work. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Jesse Natalie Reviewed-by: Lionel Landwerlin Part-of: --- src/asahi/clc/asahi_clc.c | 1 + src/asahi/lib/agx_device.c | 6 +++++- src/asahi/vulkan/hk_device.c | 4 +--- src/util/u_printf.h | 10 ++++------ src/vulkan/runtime/vk_debug_utils.c | 5 ++--- src/vulkan/runtime/vk_debug_utils.h | 4 +--- 6 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/asahi/clc/asahi_clc.c b/src/asahi/clc/asahi_clc.c index 826b874099f..95255c799db 100644 --- a/src/asahi/clc/asahi_clc.c +++ b/src/asahi/clc/asahi_clc.c @@ -98,6 +98,7 @@ compile(void *memctx, const uint32_t *spirv, size_t spirv_size) NIR_PASS(_, nir, nir_lower_printf, &(const struct nir_lower_printf_options){ + .hash_format_strings = true, }); /* We have to lower away local constant initializers right before we diff --git a/src/asahi/lib/agx_device.c b/src/asahi/lib/agx_device.c index 1629a26a36c..9edddef4173 100644 --- a/src/asahi/lib/agx_device.c +++ b/src/asahi/lib/agx_device.c @@ -30,6 +30,7 @@ #include "util/os_mman.h" #include "util/os_time.h" #include "util/simple_mtx.h" +#include "util/u_printf.h" #include "git_sha1.h" #include "nir_serialize.h" #include "unstable_asahi_drm.h" @@ -694,7 +695,9 @@ agx_open_device(void *memctx, struct agx_device *dev) } u_printf_init(&dev->printf, bo, agx_bo_map(bo)); - + u_printf_singleton_init_or_ref(); + u_printf_singleton_add(dev->libagx->printf_info, + dev->libagx->printf_info_count); return true; } @@ -711,6 +714,7 @@ agx_close_device(struct agx_device *dev) util_vma_heap_finish(&dev->main_heap); util_vma_heap_finish(&dev->usc_heap); glsl_type_singleton_decref(); + u_printf_singleton_decref(); close(dev->fd); } diff --git a/src/asahi/vulkan/hk_device.c b/src/asahi/vulkan/hk_device.c index 3c199046685..05815bfa2db 100644 --- a/src/asahi/vulkan/hk_device.c +++ b/src/asahi/vulkan/hk_device.c @@ -282,9 +282,7 @@ static VkResult hk_check_status(struct vk_device *device) { struct hk_device *dev = container_of(device, struct hk_device, vk); - return vk_check_printf_status(&dev->vk, &dev->dev.printf, - dev->dev.libagx->printf_info, - dev->dev.libagx->printf_info_count); + return vk_check_printf_status(&dev->vk, &dev->dev.printf); } static VkResult diff --git a/src/util/u_printf.h b/src/util/u_printf.h index bdf0a322ddb..e99eed415d5 100644 --- a/src/util/u_printf.h +++ b/src/util/u_printf.h @@ -102,8 +102,7 @@ u_printf_destroy(struct u_printf_ctx *ctx) } static inline void -u_printf_with_ctx(FILE *out, struct u_printf_ctx *ctx, - const u_printf_info *info, unsigned info_size) +u_printf_with_ctx(FILE *out, struct u_printf_ctx *ctx) { /* If the printf buffer is empty, early-exit without taking the lock. The * speeds up the happy path and makes this function reasonable to call even @@ -113,7 +112,7 @@ u_printf_with_ctx(FILE *out, struct u_printf_ctx *ctx, return; simple_mtx_lock(&ctx->lock); - u_printf(out, (char *)(ctx->map + 2), ctx->map[0] - 8, info, info_size); + u_printf(out, (char *)(ctx->map + 2), ctx->map[0] - 8, NULL, 0); /* Reset */ ctx->map[0] = 8; @@ -125,10 +124,9 @@ u_printf_with_ctx(FILE *out, struct u_printf_ctx *ctx, * intended to be called periodically to handle aborts in a timely manner. */ static inline bool -u_printf_check_abort(FILE *out, struct u_printf_ctx *ctx, - const u_printf_info *info, unsigned info_size) +u_printf_check_abort(FILE *out, struct u_printf_ctx *ctx) { - u_printf_with_ctx(out, ctx, info, info_size); + u_printf_with_ctx(out, ctx); /* Check the aborted flag */ return (ctx->map[1] != 0); diff --git a/src/vulkan/runtime/vk_debug_utils.c b/src/vulkan/runtime/vk_debug_utils.c index 0aa4c05d7b2..351add0e145 100644 --- a/src/vulkan/runtime/vk_debug_utils.c +++ b/src/vulkan/runtime/vk_debug_utils.c @@ -462,10 +462,9 @@ vk_common_QueueInsertDebugUtilsLabelEXT( } VkResult -vk_check_printf_status(struct vk_device *dev, struct u_printf_ctx *ctx, - struct u_printf_info *info, uint32_t count) +vk_check_printf_status(struct vk_device *dev, struct u_printf_ctx *ctx) { - if (u_printf_check_abort(stdout, ctx, info, count)) { + if (u_printf_check_abort(stdout, ctx)) { vk_device_set_lost(dev, "GPU abort."); return VK_ERROR_DEVICE_LOST; } else { diff --git a/src/vulkan/runtime/vk_debug_utils.h b/src/vulkan/runtime/vk_debug_utils.h index 403ff169ab3..5b9798a0e49 100644 --- a/src/vulkan/runtime/vk_debug_utils.h +++ b/src/vulkan/runtime/vk_debug_utils.h @@ -69,11 +69,9 @@ vk_address_binding_report(struct vk_instance *instance, VkDeviceAddressBindingTypeEXT type); struct u_printf_ctx; -struct u_printf_info; VkResult -vk_check_printf_status(struct vk_device *dev, struct u_printf_ctx *ctx, - struct u_printf_info *info, uint32_t count); +vk_check_printf_status(struct vk_device *dev, struct u_printf_ctx *ctx); #ifdef __cplusplus }