From 965ab44427603b508f4dd490e142990239b703b0 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 2 May 2019 17:10:48 +0430 Subject: [PATCH] wined3d: Introduce a debug helper for Vulkan return values. Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/adapter_vk.c | 12 +++++------ dlls/wined3d/utils.c | 39 ++++++++++++++++++++++++++++++++++ dlls/wined3d/wined3d_private.h | 1 + 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c index cb4dbab568b..a5fd8912603 100644 --- a/dlls/wined3d/adapter_vk.c +++ b/dlls/wined3d/adapter_vk.c @@ -240,7 +240,7 @@ static HRESULT adapter_vk_create_device(struct wined3d *wined3d, const struct wi if ((vr = VK_CALL(vkCreateDevice(physical_device, &device_info, NULL, &vk_device))) < 0) { - WARN("Failed to create Vulkan device, vr %d.\n", vr); + WARN("Failed to create Vulkan device, vr %s.\n", wined3d_debug_vkresult(vr)); vk_device = VK_NULL_HANDLE; hr = hresult_from_vk_result(vr); goto fail; @@ -455,7 +455,7 @@ static BOOL enable_vulkan_instance_extensions(uint32_t *extension_count, if ((vr = pfn_vkEnumerateInstanceExtensionProperties(NULL, &count, NULL)) < 0) { - WARN("Failed to count instance extensions, vr %d.\n", vr); + WARN("Failed to count instance extensions, vr %s.\n", wined3d_debug_vkresult(vr)); goto done; } if (!(extensions = heap_calloc(count, sizeof(*extensions)))) @@ -465,7 +465,7 @@ static BOOL enable_vulkan_instance_extensions(uint32_t *extension_count, } if ((vr = pfn_vkEnumerateInstanceExtensionProperties(NULL, &count, extensions)) < 0) { - WARN("Failed to enumerate extensions, vr %d.\n", vr); + WARN("Failed to enumerate extensions, vr %s.\n", wined3d_debug_vkresult(vr)); goto done; } @@ -548,7 +548,7 @@ static BOOL wined3d_init_vulkan(struct wined3d_vk_info *vk_info) if ((vr = VK_CALL(vkCreateInstance(&instance_info, NULL, &instance))) < 0) { - WARN("Failed to create Vulkan instance, vr %d.\n", vr); + WARN("Failed to create Vulkan instance, vr %s.\n", wined3d_debug_vkresult(vr)); goto fail; } @@ -596,7 +596,7 @@ static VkPhysicalDevice get_vulkan_physical_device(struct wined3d_vk_info *vk_in if ((vr = VK_CALL(vkEnumeratePhysicalDevices(vk_info->instance, &count, NULL))) < 0) { - WARN("Failed to enumerate physical devices, vr %d.\n", vr); + WARN("Failed to enumerate physical devices, vr %s.\n", wined3d_debug_vkresult(vr)); return VK_NULL_HANDLE; } if (!count) @@ -613,7 +613,7 @@ static VkPhysicalDevice get_vulkan_physical_device(struct wined3d_vk_info *vk_in if ((vr = VK_CALL(vkEnumeratePhysicalDevices(vk_info->instance, &count, physical_devices))) < 0) { - WARN("Failed to get physical devices, vr %d.\n", vr); + WARN("Failed to get physical devices, vr %s.\n", wined3d_debug_vkresult(vr)); return VK_NULL_HANDLE; } diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index ade29b08fbd..e54eec241ea 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -5261,6 +5261,45 @@ const char *debug_glerror(GLenum error) { } } +const char *wined3d_debug_vkresult(VkResult vr) +{ + switch (vr) + { +#define WINED3D_TO_STR(x) case x: return #x + WINED3D_TO_STR(VK_ERROR_INVALID_DEVICE_ADDRESS_EXT); + WINED3D_TO_STR(VK_ERROR_NOT_PERMITTED_EXT); + WINED3D_TO_STR(VK_ERROR_FRAGMENTATION_EXT); + WINED3D_TO_STR(VK_ERROR_INVALID_EXTERNAL_HANDLE); + WINED3D_TO_STR(VK_ERROR_OUT_OF_POOL_MEMORY); + WINED3D_TO_STR(VK_ERROR_INVALID_SHADER_NV); + WINED3D_TO_STR(VK_ERROR_OUT_OF_DATE_KHR); + WINED3D_TO_STR(VK_ERROR_NATIVE_WINDOW_IN_USE_KHR); + WINED3D_TO_STR(VK_ERROR_SURFACE_LOST_KHR); + WINED3D_TO_STR(VK_ERROR_FRAGMENTED_POOL); + WINED3D_TO_STR(VK_ERROR_FORMAT_NOT_SUPPORTED); + WINED3D_TO_STR(VK_ERROR_TOO_MANY_OBJECTS); + WINED3D_TO_STR(VK_ERROR_INCOMPATIBLE_DRIVER); + WINED3D_TO_STR(VK_ERROR_FEATURE_NOT_PRESENT); + WINED3D_TO_STR(VK_ERROR_EXTENSION_NOT_PRESENT); + WINED3D_TO_STR(VK_ERROR_LAYER_NOT_PRESENT); + WINED3D_TO_STR(VK_ERROR_MEMORY_MAP_FAILED); + WINED3D_TO_STR(VK_ERROR_DEVICE_LOST); + WINED3D_TO_STR(VK_ERROR_INITIALIZATION_FAILED); + WINED3D_TO_STR(VK_ERROR_OUT_OF_DEVICE_MEMORY); + WINED3D_TO_STR(VK_ERROR_OUT_OF_HOST_MEMORY); + WINED3D_TO_STR(VK_SUCCESS); + WINED3D_TO_STR(VK_NOT_READY); + WINED3D_TO_STR(VK_TIMEOUT); + WINED3D_TO_STR(VK_EVENT_SET); + WINED3D_TO_STR(VK_EVENT_RESET); + WINED3D_TO_STR(VK_INCOMPLETE); + WINED3D_TO_STR(VK_SUBOPTIMAL_KHR); +#undef WINED3D_TO_STR + default: + return wine_dbg_sprintf("unrecognised(%d)", vr); + } +} + static const char *debug_fixup_channel_source(enum fixup_channel_source source) { switch(source) diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 00e1de67c90..14444cb181f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -3222,6 +3222,7 @@ const char *wined3d_debug_resource_access(DWORD access) DECLSPEC_HIDDEN; const char *wined3d_debug_bind_flags(DWORD bind_flags) DECLSPEC_HIDDEN; const char *wined3d_debug_view_desc(const struct wined3d_view_desc *d, const struct wined3d_resource *resource) DECLSPEC_HIDDEN; +const char *wined3d_debug_vkresult(VkResult vr) DECLSPEC_HIDDEN; static inline BOOL wined3d_resource_access_is_managed(unsigned int access) {