From ce15bf19fb53b4fb5b9d8bf41117fc0cf02dfa2e Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 15 Apr 2022 11:16:40 -0700 Subject: [PATCH] turnip: Add TU_DEBUG=layout for dumping image layouts. This was useful for comparing image allocations between gfxbench gl_5_normal and vk_5_normal to see if rendering was generally equivalent (formats, MSAA, UBWC choices, and notably gfxbench vk was choosing DXT5 instead of ASTC on non-android builds!) Part-of: --- src/freedreno/vulkan/tu_device.c | 1 + src/freedreno/vulkan/tu_image.c | 3 +++ src/freedreno/vulkan/tu_private.h | 1 + 3 files changed, 5 insertions(+) diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 351affb259c..51b2f2d5b47 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -330,6 +330,7 @@ static const struct debug_control tu_debug_options[] = { { "sysmem", TU_DEBUG_SYSMEM }, { "gmem", TU_DEBUG_GMEM }, { "forcebin", TU_DEBUG_FORCEBIN }, + { "layout", TU_DEBUG_LAYOUT }, { "noubwc", TU_DEBUG_NOUBWC }, { "nomultipos", TU_DEBUG_NOMULTIPOS }, { "nolrz", TU_DEBUG_NOLRZ }, diff --git a/src/freedreno/vulkan/tu_image.c b/src/freedreno/vulkan/tu_image.c index b8aaca704b1..4c214f265c1 100644 --- a/src/freedreno/vulkan/tu_image.c +++ b/src/freedreno/vulkan/tu_image.c @@ -506,6 +506,9 @@ tu_image_init(struct tu_device *device, struct tu_image *image, return vk_error(device, VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT); } + if (device->instance->debug_flags & TU_DEBUG_LAYOUT) + fdl_dump_layout(layout); + /* fdl6_layout can't take explicit offset without explicit pitch * add offset manually for extra layouts for planes */ diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index b6061bfc27d..b35647f9887 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -268,6 +268,7 @@ enum tu_debug_flags TU_DEBUG_GMEM = 1 << 13, TU_DEBUG_RAST_ORDER = 1 << 14, TU_DEBUG_UNALIGNED_STORE = 1 << 15, + TU_DEBUG_LAYOUT = 1 << 16, }; struct tu_instance