From 4462400b73f6acb714af23c848f6cb0e768d0e3e Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Tue, 21 Jan 2025 15:12:09 +0100 Subject: [PATCH] adding swapchain format to debug logs --- runtime/Sources/Renderer/Swapchain.cpp | 148 ++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 4 deletions(-) diff --git a/runtime/Sources/Renderer/Swapchain.cpp b/runtime/Sources/Renderer/Swapchain.cpp index 14899b5..a144e5d 100644 --- a/runtime/Sources/Renderer/Swapchain.cpp +++ b/runtime/Sources/Renderer/Swapchain.cpp @@ -1,4 +1,3 @@ -#include "kvf.h" #include #include @@ -17,6 +16,146 @@ namespace mlx }; } + + std::string VulkanFormatName(VkFormat format) + { + #define STRINGIFY(x) case x: return #x + + switch(format) + { + STRINGIFY(VK_FORMAT_UNDEFINED); + STRINGIFY(VK_FORMAT_R4G4_UNORM_PACK8); + STRINGIFY(VK_FORMAT_R4G4B4A4_UNORM_PACK16); + STRINGIFY(VK_FORMAT_B4G4R4A4_UNORM_PACK16); + STRINGIFY(VK_FORMAT_R5G6B5_UNORM_PACK16); + STRINGIFY(VK_FORMAT_B5G6R5_UNORM_PACK16); + STRINGIFY(VK_FORMAT_R5G5B5A1_UNORM_PACK16); + STRINGIFY(VK_FORMAT_B5G5R5A1_UNORM_PACK16); + STRINGIFY(VK_FORMAT_A1R5G5B5_UNORM_PACK16); + STRINGIFY(VK_FORMAT_R8_UNORM); + STRINGIFY(VK_FORMAT_R8_SNORM); + STRINGIFY(VK_FORMAT_R8_USCALED); + STRINGIFY(VK_FORMAT_R8_SSCALED); + STRINGIFY(VK_FORMAT_R8_UINT); + STRINGIFY(VK_FORMAT_R8_SINT); + STRINGIFY(VK_FORMAT_R8_SRGB); + STRINGIFY(VK_FORMAT_R8G8_UNORM); + STRINGIFY(VK_FORMAT_R8G8_SNORM); + STRINGIFY(VK_FORMAT_R8G8_USCALED); + STRINGIFY(VK_FORMAT_R8G8_SSCALED); + STRINGIFY(VK_FORMAT_R8G8_UINT); + STRINGIFY(VK_FORMAT_R8G8_SINT); + STRINGIFY(VK_FORMAT_R8G8_SRGB); + STRINGIFY(VK_FORMAT_R8G8B8_UNORM); + STRINGIFY(VK_FORMAT_R8G8B8_SNORM); + STRINGIFY(VK_FORMAT_R8G8B8_USCALED); + STRINGIFY(VK_FORMAT_R8G8B8_SSCALED); + STRINGIFY(VK_FORMAT_R8G8B8_UINT); + STRINGIFY(VK_FORMAT_R8G8B8_SINT); + STRINGIFY(VK_FORMAT_R8G8B8_SRGB); + STRINGIFY(VK_FORMAT_B8G8R8_UNORM); + STRINGIFY(VK_FORMAT_B8G8R8_SNORM); + STRINGIFY(VK_FORMAT_B8G8R8_USCALED); + STRINGIFY(VK_FORMAT_B8G8R8_SSCALED); + STRINGIFY(VK_FORMAT_B8G8R8_UINT); + STRINGIFY(VK_FORMAT_B8G8R8_SINT); + STRINGIFY(VK_FORMAT_B8G8R8_SRGB); + STRINGIFY(VK_FORMAT_R8G8B8A8_UNORM); + STRINGIFY(VK_FORMAT_R8G8B8A8_SNORM); + STRINGIFY(VK_FORMAT_R8G8B8A8_USCALED); + STRINGIFY(VK_FORMAT_R8G8B8A8_SSCALED); + STRINGIFY(VK_FORMAT_R8G8B8A8_UINT); + STRINGIFY(VK_FORMAT_R8G8B8A8_SINT); + STRINGIFY(VK_FORMAT_R8G8B8A8_SRGB); + STRINGIFY(VK_FORMAT_B8G8R8A8_UNORM); + STRINGIFY(VK_FORMAT_B8G8R8A8_SNORM); + STRINGIFY(VK_FORMAT_B8G8R8A8_USCALED); + STRINGIFY(VK_FORMAT_B8G8R8A8_SSCALED); + STRINGIFY(VK_FORMAT_B8G8R8A8_UINT); + STRINGIFY(VK_FORMAT_B8G8R8A8_SINT); + STRINGIFY(VK_FORMAT_B8G8R8A8_SRGB); + STRINGIFY(VK_FORMAT_A8B8G8R8_UNORM_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_SNORM_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_USCALED_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_SSCALED_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_UINT_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_SINT_PACK32); + STRINGIFY(VK_FORMAT_A8B8G8R8_SRGB_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_UNORM_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_SNORM_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_USCALED_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_SSCALED_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_UINT_PACK32); + STRINGIFY(VK_FORMAT_A2R10G10B10_SINT_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_UNORM_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_SNORM_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_USCALED_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_SSCALED_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_UINT_PACK32); + STRINGIFY(VK_FORMAT_A2B10G10R10_SINT_PACK32); + STRINGIFY(VK_FORMAT_R16_UNORM); + STRINGIFY(VK_FORMAT_R16_SNORM); + STRINGIFY(VK_FORMAT_R16_USCALED); + STRINGIFY(VK_FORMAT_R16_SSCALED); + STRINGIFY(VK_FORMAT_R16_UINT); + STRINGIFY(VK_FORMAT_R16_SINT); + STRINGIFY(VK_FORMAT_R16_SFLOAT); + STRINGIFY(VK_FORMAT_R16G16_UNORM); + STRINGIFY(VK_FORMAT_R16G16_SNORM); + STRINGIFY(VK_FORMAT_R16G16_USCALED); + STRINGIFY(VK_FORMAT_R16G16_SSCALED); + STRINGIFY(VK_FORMAT_R16G16_UINT); + STRINGIFY(VK_FORMAT_R16G16_SINT); + STRINGIFY(VK_FORMAT_R16G16_SFLOAT); + STRINGIFY(VK_FORMAT_R16G16B16_UNORM); + STRINGIFY(VK_FORMAT_R16G16B16_SNORM); + STRINGIFY(VK_FORMAT_R16G16B16_USCALED); + STRINGIFY(VK_FORMAT_R16G16B16_SSCALED); + STRINGIFY(VK_FORMAT_R16G16B16_UINT); + STRINGIFY(VK_FORMAT_R16G16B16_SINT); + STRINGIFY(VK_FORMAT_R16G16B16_SFLOAT); + STRINGIFY(VK_FORMAT_R16G16B16A16_UNORM); + STRINGIFY(VK_FORMAT_R16G16B16A16_SNORM); + STRINGIFY(VK_FORMAT_R16G16B16A16_USCALED); + STRINGIFY(VK_FORMAT_R16G16B16A16_SSCALED); + STRINGIFY(VK_FORMAT_R16G16B16A16_UINT); + STRINGIFY(VK_FORMAT_R16G16B16A16_SINT); + STRINGIFY(VK_FORMAT_R16G16B16A16_SFLOAT); + STRINGIFY(VK_FORMAT_R32_UINT); + STRINGIFY(VK_FORMAT_R32_SINT); + STRINGIFY(VK_FORMAT_R32_SFLOAT); + STRINGIFY(VK_FORMAT_R32G32_UINT); + STRINGIFY(VK_FORMAT_R32G32_SINT); + STRINGIFY(VK_FORMAT_R32G32_SFLOAT); + STRINGIFY(VK_FORMAT_R32G32B32_UINT); + STRINGIFY(VK_FORMAT_R32G32B32_SINT); + STRINGIFY(VK_FORMAT_R32G32B32_SFLOAT); + STRINGIFY(VK_FORMAT_R32G32B32A32_UINT); + STRINGIFY(VK_FORMAT_R32G32B32A32_SINT); + STRINGIFY(VK_FORMAT_R32G32B32A32_SFLOAT); + STRINGIFY(VK_FORMAT_R64_UINT); + STRINGIFY(VK_FORMAT_R64_SINT); + STRINGIFY(VK_FORMAT_R64_SFLOAT); + STRINGIFY(VK_FORMAT_R64G64_UINT); + STRINGIFY(VK_FORMAT_R64G64_SINT); + STRINGIFY(VK_FORMAT_R64G64_SFLOAT); + STRINGIFY(VK_FORMAT_R64G64B64_UINT); + STRINGIFY(VK_FORMAT_R64G64B64_SINT); + STRINGIFY(VK_FORMAT_R64G64B64_SFLOAT); + STRINGIFY(VK_FORMAT_R64G64B64A64_UINT); + STRINGIFY(VK_FORMAT_R64G64B64A64_SINT); + STRINGIFY(VK_FORMAT_R64G64B64A64_SFLOAT); + STRINGIFY(VK_FORMAT_B10G11R11_UFLOAT_PACK32); + STRINGIFY(VK_FORMAT_E5B9G9R9_UFLOAT_PACK32); + + default: return "Unknown format"; + } + + #undef STRINGIFY + + return "Unknown format"; // To avoid warnings + } + void Swapchain::Init(NonOwningPtr window) { p_window = window; @@ -90,12 +229,13 @@ namespace mlx VkCommandBuffer cmd = kvfCreateCommandBuffer(RenderCore::Get().GetDevice()); kvfBeginCommandBuffer(cmd, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); extent = kvfGetSwapchainImagesSize(m_swapchain); // fix the extent + VkFormat format = kvfGetSwapchainImagesFormat(m_swapchain); for(std::size_t i = 0; i < m_images_count; i++) { #ifdef DEBUG - m_swapchain_images[i].Init(tmp[i], kvfGetSwapchainImagesFormat(m_swapchain), extent.width, extent.height, VK_IMAGE_LAYOUT_UNDEFINED, "mlx_swapchain_image_" + std::to_string(i)); + m_swapchain_images[i].Init(tmp[i], format, extent.width, extent.height, VK_IMAGE_LAYOUT_UNDEFINED, "mlx_swapchain_image_" + std::to_string(i)); #else - m_swapchain_images[i].Init(tmp[i], kvfGetSwapchainImagesFormat(m_swapchain), extent.width, extent.height, VK_IMAGE_LAYOUT_UNDEFINED, {}); + m_swapchain_images[i].Init(tmp[i], format, extent.width, extent.height, VK_IMAGE_LAYOUT_UNDEFINED, {}); #endif m_swapchain_images[i].TransitionLayout(VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, cmd); m_swapchain_images[i].CreateImageView(VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT); @@ -106,6 +246,6 @@ namespace mlx kvfDestroyFence(RenderCore::Get().GetDevice(), fence); kvfDestroyCommandBuffer(RenderCore::Get().GetDevice(), cmd); m_resize = false; - DebugLog("Vulkan: swapchain created"); + DebugLog("Vulkan: swapchain created with format %", VulkanFormatName(format)); } }