Mesa (main): zink: print result code string on vulkan failure

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 28 16:41:18 UTC 2022


Module: Mesa
Branch: main
Commit: a02c026eb71a5053760c6dda684c2b10f799294f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a02c026eb71a5053760c6dda684c2b10f799294f

Author: TSnake41 <tsnake at outlook.fr>
Date:   Thu Jul 28 18:05:21 2022 +0200

zink: print result code string on vulkan failure

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17726>

---

 src/gallium/drivers/zink/zink_batch.c            | 53 ++++++++++++++++--------
 src/gallium/drivers/zink/zink_bo.c               |  3 +-
 src/gallium/drivers/zink/zink_context.c          | 23 ++++++----
 src/gallium/drivers/zink/zink_context.h          |  1 +
 src/gallium/drivers/zink/zink_descriptors.c      | 25 ++++++-----
 src/gallium/drivers/zink/zink_descriptors_lazy.c |  5 ++-
 src/gallium/drivers/zink/zink_device_info.py     | 11 +++--
 src/gallium/drivers/zink/zink_fence.c            |  5 ++-
 src/gallium/drivers/zink/zink_instance.py        |  2 +-
 src/gallium/drivers/zink/zink_kopper.c           |  6 +--
 src/gallium/drivers/zink/zink_pipeline.c         | 14 ++++---
 src/gallium/drivers/zink/zink_program.c          |  5 ++-
 src/gallium/drivers/zink/zink_query.c            | 14 ++++---
 src/gallium/drivers/zink/zink_render_pass.c      |  5 ++-
 src/gallium/drivers/zink/zink_resource.c         |  2 +-
 src/gallium/drivers/zink/zink_screen.c           | 49 +++++++++++++---------
 src/gallium/drivers/zink/zink_surface.c          | 12 +++---
 17 files changed, 145 insertions(+), 90 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c
index 0faab874a1c..8a459f219a6 100644
--- a/src/gallium/drivers/zink/zink_batch.c
+++ b/src/gallium/drivers/zink/zink_batch.c
@@ -31,8 +31,9 @@ zink_reset_batch_state(struct zink_context *ctx, struct zink_batch_state *bs)
 {
    struct zink_screen *screen = zink_screen(ctx->base.screen);
 
-   if (VKSCR(ResetCommandPool)(screen->dev, bs->cmdpool, 0) != VK_SUCCESS)
-      mesa_loge("ZINK: vkResetCommandPool failed");
+   VkResult result = VKSCR(ResetCommandPool)(screen->dev, bs->cmdpool, 0);
+   if (result != VK_SUCCESS)
+      mesa_loge("ZINK: vkResetCommandPool failed (%s)", vk_Result_to_str(result));
 
    /* unref all used resources */
    set_foreach_remove(bs->resources, entry) {
@@ -195,8 +196,11 @@ create_batch_state(struct zink_context *ctx)
    VkCommandPoolCreateInfo cpci = {0};
    cpci.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
    cpci.queueFamilyIndex = screen->gfx_queue;
-   if (VKSCR(CreateCommandPool)(screen->dev, &cpci, NULL, &bs->cmdpool) != VK_SUCCESS)
+   VkResult result = VKSCR(CreateCommandPool)(screen->dev, &cpci, NULL, &bs->cmdpool);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateCommandPool failed (%s)", vk_Result_to_str(result));
       goto fail;
+   }
 
    VkCommandBufferAllocateInfo cbai = {0};
    cbai.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
@@ -204,11 +208,17 @@ create_batch_state(struct zink_context *ctx)
    cbai.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
    cbai.commandBufferCount = 1;
 
-   if (VKSCR(AllocateCommandBuffers)(screen->dev, &cbai, &bs->cmdbuf) != VK_SUCCESS)
+   result = VKSCR(AllocateCommandBuffers)(screen->dev, &cbai, &bs->cmdbuf);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkAllocateCommandBuffers failed (%s)", vk_Result_to_str(result));
       goto fail;
+   }
 
-   if (VKSCR(AllocateCommandBuffers)(screen->dev, &cbai, &bs->barrier_cmdbuf) != VK_SUCCESS)
+   result = VKSCR(AllocateCommandBuffers)(screen->dev, &cbai, &bs->barrier_cmdbuf);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkAllocateCommandBuffers failed (%s)", vk_Result_to_str(result));
       goto fail;
+   }
 
 #define SET_CREATE_OR_FAIL(ptr) \
    ptr = _mesa_pointer_set_create(bs); \
@@ -308,10 +318,14 @@ zink_start_batch(struct zink_context *ctx, struct zink_batch *batch)
    VkCommandBufferBeginInfo cbbi = {0};
    cbbi.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
    cbbi.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
-   if (VKCTX(BeginCommandBuffer)(batch->state->cmdbuf, &cbbi) != VK_SUCCESS)
-      mesa_loge("ZINK: vkBeginCommandBuffer failed");
-   if (VKCTX(BeginCommandBuffer)(batch->state->barrier_cmdbuf, &cbbi) != VK_SUCCESS)
-      mesa_loge("ZINK: vkBeginCommandBuffer failed");
+
+   VkResult result = VKCTX(BeginCommandBuffer)(batch->state->cmdbuf, &cbbi);
+   if (result != VK_SUCCESS)
+      mesa_loge("ZINK: vkBeginCommandBuffer failed (%s)", vk_Result_to_str(result));
+   
+   result = VKCTX(BeginCommandBuffer)(batch->state->barrier_cmdbuf, &cbbi);
+   if (result != VK_SUCCESS)
+      mesa_loge("ZINK: vkBeginCommandBuffer failed (%s)", vk_Result_to_str(result));
 
    batch->state->fence.completed = false;
    if (ctx->last_fence) {
@@ -397,14 +411,16 @@ submit_queue(void *data, void *gdata, int thread_index)
       signals[si[1].signalSemaphoreCount++] = bs->present;
    tsi.signalSemaphoreValueCount = si[1].signalSemaphoreCount;
 
-   if (VKSCR(EndCommandBuffer)(bs->cmdbuf) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkEndCommandBuffer failed");
+   VkResult result = VKSCR(EndCommandBuffer)(bs->cmdbuf);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkEndCommandBuffer failed (%s)", vk_Result_to_str(result));
       bs->is_device_lost = true;
       goto end;
    }
    if (bs->has_barriers) {
-      if (VKSCR(EndCommandBuffer)(bs->barrier_cmdbuf) != VK_SUCCESS) {
-         mesa_loge("ZINK: vkEndCommandBuffer failed");
+      result = VKSCR(EndCommandBuffer)(bs->barrier_cmdbuf);
+      if (result != VK_SUCCESS) {
+         mesa_loge("ZINK: vkEndCommandBuffer failed (%s)", vk_Result_to_str(result));
          bs->is_device_lost = true;
          goto end;
       }
@@ -413,14 +429,17 @@ submit_queue(void *data, void *gdata, int thread_index)
    while (util_dynarray_contains(&bs->persistent_resources, struct zink_resource_object*)) {
       struct zink_resource_object *obj = util_dynarray_pop(&bs->persistent_resources, struct zink_resource_object*);
        VkMappedMemoryRange range = zink_resource_init_mem_range(screen, obj, 0, obj->size);
-       if (VKSCR(FlushMappedMemoryRanges)(screen->dev, 1, &range) != VK_SUCCESS) {
-          mesa_loge("ZINK: vkFlushMappedMemoryRanges failed");
+
+       result = VKSCR(FlushMappedMemoryRanges)(screen->dev, 1, &range);
+       if (result != VK_SUCCESS) {
+          mesa_loge("ZINK: vkFlushMappedMemoryRanges failed (%s)", vk_Result_to_str(result));
        }
    }
 
    simple_mtx_lock(&screen->queue_lock);
-   if (VKSCR(QueueSubmit)(screen->queue, num_si, num_si == 2 ? si : &si[1], VK_NULL_HANDLE) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkQueueSubmit failed");
+   result = VKSCR(QueueSubmit)(screen->queue, num_si, num_si == 2 ? si : &si[1], VK_NULL_HANDLE);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkQueueSubmit failed (%s)", vk_Result_to_str(result));
       bs->is_device_lost = true;
    }
    simple_mtx_unlock(&screen->queue_lock);
diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c
index e757c7f3618..f10af4f1214 100644
--- a/src/gallium/drivers/zink/zink_bo.c
+++ b/src/gallium/drivers/zink/zink_bo.c
@@ -29,6 +29,7 @@
  *    Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
  */
 
+#include "zink_context.h"
 #include "zink_bo.h"
 #include "zink_resource.h"
 #include "zink_screen.h"
@@ -682,7 +683,7 @@ zink_bo_map(struct zink_screen *screen, struct zink_bo *bo)
       if (!cpu) {
          VkResult result = VKSCR(MapMemory)(screen->dev, real->mem, 0, real->base.size, 0, &cpu);
          if (result != VK_SUCCESS) {
-            mesa_loge("ZINK: vkMapMemory failed");
+            mesa_loge("ZINK: vkMapMemory failed (%s)", vk_Result_to_str(result));
             simple_mtx_unlock(&real->lock);
             return NULL;
          }
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 70250965b21..74fb0d978e9 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -98,8 +98,12 @@ zink_context_destroy(struct pipe_context *pctx)
 
    if (util_queue_is_initialized(&screen->flush_queue))
       util_queue_finish(&screen->flush_queue);
-   if (ctx->batch.state && !screen->device_lost && VKSCR(QueueWaitIdle)(screen->queue) != VK_SUCCESS)
-      mesa_loge("ZINK: vkQueueWaitIdle failed");
+   if (ctx->batch.state && !screen->device_lost) {
+      VkResult result = VKSCR(QueueWaitIdle)(screen->queue);
+
+      if (result != VK_SUCCESS)
+         mesa_loge("ZINK: vkQueueWaitIdle failed (%s)", vk_Result_to_str(result));
+   }
 
    for (unsigned i = 0; i < ARRAY_SIZE(ctx->program_cache); i++) {
       hash_table_foreach(&ctx->program_cache[i], entry) {
@@ -445,15 +449,17 @@ zink_create_sampler_state(struct pipe_context *pctx,
    if (!sampler)
       return NULL;
 
-   if (VKSCR(CreateSampler)(screen->dev, &sci, NULL, &sampler->sampler) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateSampler failed");
+   VkResult result = VKSCR(CreateSampler)(screen->dev, &sci, NULL, &sampler->sampler);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateSampler failed (%s)", vk_Result_to_str(result));
       FREE(sampler);
       return NULL;
    }
    if (need_clamped_border_color) {
       sci.pNext = &cbci_clamped;
-      if (VKSCR(CreateSampler)(screen->dev, &sci, NULL, &sampler->sampler_clamped) != VK_SUCCESS) {
-         mesa_loge("ZINK: vkCreateSampler failed");
+      result = VKSCR(CreateSampler)(screen->dev, &sci, NULL, &sampler->sampler_clamped);
+      if (result != VK_SUCCESS) {
+         mesa_loge("ZINK: vkCreateSampler failed (%s)", vk_Result_to_str(result));
          VKSCR(DestroySampler)(screen->dev, sampler->sampler, NULL);
          FREE(sampler);
          return NULL;
@@ -810,8 +816,9 @@ get_buffer_view(struct zink_context *ctx, struct zink_resource *res, VkBufferVie
       p_atomic_inc(&buffer_view->reference.count);
    } else {
       VkBufferView view;
-      if (VKSCR(CreateBufferView)(screen->dev, bvci, NULL, &view) != VK_SUCCESS) {
-         mesa_loge("ZINK: vkCreateBufferView failed");
+      VkResult result = VKSCR(CreateBufferView)(screen->dev, bvci, NULL, &view);
+      if (result != VK_SUCCESS) {
+         mesa_loge("ZINK: vkCreateBufferView failed (%s)", vk_Result_to_str(result));
          goto out;
       }
       buffer_view = CALLOC_STRUCT(zink_buffer_view);
diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h
index fc5f2116129..25d2370ae50 100644
--- a/src/gallium/drivers/zink/zink_context.h
+++ b/src/gallium/drivers/zink/zink_context.h
@@ -47,6 +47,7 @@
 #include "util/slab.h"
 #include "util/list.h"
 #include "util/u_dynarray.h"
+#include "vk_enum_to_str.h"
 
 #include <vulkan/vulkan.h>
 
diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c
index 5570b1d0d12..d1a0540eb28 100644
--- a/src/gallium/drivers/zink/zink_descriptors.c
+++ b/src/gallium/drivers/zink/zink_descriptors.c
@@ -332,8 +332,9 @@ descriptor_pool_create(struct zink_screen *screen, enum zink_descriptor_type typ
    dpci.flags = 0;
    dpci.maxSets = ZINK_DEFAULT_MAX_DESCS;
    assert(pool_key->num_type_sizes);
-   if (VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &pool->descpool) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDescriptorPool failed");
+   VkResult result = VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &pool->descpool);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateDescriptorPool failed (%s)", vk_Result_to_str(result));
       goto fail;
    }
 
@@ -376,8 +377,9 @@ descriptor_layout_create(struct zink_screen *screen, enum zink_descriptor_type t
          return VK_NULL_HANDLE;
       }
    }
-   if (VKSCR(CreateDescriptorSetLayout)(screen->dev, &dcslci, 0, &dsl) != VK_SUCCESS)
-      mesa_loge("ZINK: vkCreateDescriptorSetLayout failed");
+   VkResult result = VKSCR(CreateDescriptorSetLayout)(screen->dev, &dcslci, 0, &dsl);
+   if (result != VK_SUCCESS)
+      mesa_loge("ZINK: vkCreateDescriptorSetLayout failed (%s)", vk_Result_to_str(result));
    return dsl;
 }
 
@@ -625,8 +627,9 @@ zink_descriptor_util_alloc_sets(struct zink_screen *screen, VkDescriptorSetLayou
       layouts[i] = dsl;
    dsai.pSetLayouts = layouts;
 
-   if (VKSCR(AllocateDescriptorSets)(screen->dev, &dsai, sets) != VK_SUCCESS) {
-      mesa_loge("ZINK: %" PRIu64 " failed to allocate descriptor set :/", (uint64_t)dsl);
+   VkResult result = VKSCR(AllocateDescriptorSets)(screen->dev, &dsai, sets);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: %" PRIu64 " failed to allocate descriptor set :/ (%s)", (uint64_t)dsl, vk_Result_to_str(result));
       return false;
    }
    return true;
@@ -1956,8 +1959,9 @@ zink_descriptors_init_bindless(struct zink_context *ctx)
    
    dcslci.bindingCount = num_bindings;
    dcslci.pBindings = bindings;
-   if (VKSCR(CreateDescriptorSetLayout)(screen->dev, &dcslci, 0, &ctx->dd->bindless_layout) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDescriptorSetLayout failed");
+   VkResult result = VKSCR(CreateDescriptorSetLayout)(screen->dev, &dcslci, 0, &ctx->dd->bindless_layout);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateDescriptorSetLayout failed (%s)", vk_Result_to_str(result));
       return;
    }
 
@@ -1972,8 +1976,9 @@ zink_descriptors_init_bindless(struct zink_context *ctx)
    dpci.poolSizeCount = 4;
    dpci.flags = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT;
    dpci.maxSets = 1;
-   if (VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &ctx->dd->bindless_pool) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDescriptorPool failed");
+   result = VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &ctx->dd->bindless_pool);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateDescriptorPool failed (%s)", vk_Result_to_str(result));
       return;
    }
 
diff --git a/src/gallium/drivers/zink/zink_descriptors_lazy.c b/src/gallium/drivers/zink/zink_descriptors_lazy.c
index abf0b840d14..74e61076ec3 100644
--- a/src/gallium/drivers/zink/zink_descriptors_lazy.c
+++ b/src/gallium/drivers/zink/zink_descriptors_lazy.c
@@ -378,8 +378,9 @@ create_pool(struct zink_screen *screen, unsigned num_type_sizes, const VkDescrip
    dpci.poolSizeCount = num_type_sizes;
    dpci.flags = flags;
    dpci.maxSets = MAX_LAZY_DESCRIPTORS;
-   if (VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &pool) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDescriptorPool failed");
+   VkResult result = VKSCR(CreateDescriptorPool)(screen->dev, &dpci, 0, &pool);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateDescriptorPool failed (%s)", vk_Result_to_str(result));
       return VK_NULL_HANDLE;
    }
    return pool;
diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py
index 75b6e31ee46..d26908e35ee 100644
--- a/src/gallium/drivers/zink/zink_device_info.py
+++ b/src/gallium/drivers/zink/zink_device_info.py
@@ -359,6 +359,7 @@ void zink_stub_${cmd.lstrip("vk")}(void);
 impl_code = """
 <%namespace name="helpers" file="helpers"/>
 
+#include "vk_enum_to_str.h"
 #include "zink_device_info.h"
 #include "zink_screen.h"
 
@@ -377,14 +378,16 @@ zink_get_physical_device_info(struct zink_screen *screen)
    screen->vk.GetPhysicalDeviceMemoryProperties(screen->pdev, &info->mem_props);
 
    // enumerate device supported extensions
-   if (screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, &num_extensions, NULL) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed");
+   VkResult result = screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, &num_extensions, NULL);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed (%s)", vk_Result_to_str(result));
    } else {
       if (num_extensions > 0) {
          VkExtensionProperties *extensions = MALLOC(sizeof(VkExtensionProperties) * num_extensions);
          if (!extensions) goto fail;
-         if (screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, &num_extensions, extensions) != VK_SUCCESS) {
-            mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed");
+         result = screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, &num_extensions, extensions);
+         if (result != VK_SUCCESS) {
+            mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed (%s)", vk_Result_to_str(result));
          }
 
          for (uint32_t i = 0; i < num_extensions; ++i) {
diff --git a/src/gallium/drivers/zink/zink_fence.c b/src/gallium/drivers/zink/zink_fence.c
index 067a3d5bef7..91f1499ea00 100644
--- a/src/gallium/drivers/zink/zink_fence.c
+++ b/src/gallium/drivers/zink/zink_fence.c
@@ -242,8 +242,9 @@ zink_create_fence_fd(struct pipe_context *pctx, struct pipe_fence_handle **pfenc
 
    *pfence = NULL;
 
-   if (VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &mfence->sem) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateSemaphore failed");
+   VkResult result = VKSCR(CreateSemaphore)(screen->dev, &sci, NULL, &mfence->sem);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateSemaphore failed (%s)", vk_Result_to_str(result));
       FREE(mfence);
       return;
    }
diff --git a/src/gallium/drivers/zink/zink_instance.py b/src/gallium/drivers/zink/zink_instance.py
index 9bc4b320a93..1e2bce75e80 100644
--- a/src/gallium/drivers/zink/zink_instance.py
+++ b/src/gallium/drivers/zink/zink_instance.py
@@ -118,9 +118,9 @@ struct pipe_resource;
 """
 
 impl_code = """
+#include "vk_enum_to_str.h"
 #include "zink_instance.h"
 #include "zink_screen.h"
-#include "vk_enum_to_str.h"
 
 bool
 zink_create_instance(struct zink_screen *screen)
diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c
index 95963e296a3..3c97c0e8fd3 100644
--- a/src/gallium/drivers/zink/zink_kopper.c
+++ b/src/gallium/drivers/zink/zink_kopper.c
@@ -27,7 +27,6 @@
 #include "zink_screen.h"
 #include "zink_resource.h"
 #include "zink_kopper.h"
-#include "vk_enum_to_str.h"
 
 static void
 zink_kopper_set_present_mode_for_interval(struct kopper_displaytarget *cdt, int interval)
@@ -283,8 +282,9 @@ kopper_CreateSwapchain(struct zink_screen *screen, struct kopper_displaytarget *
    if (error == VK_ERROR_NATIVE_WINDOW_IN_USE_KHR) {
       if (util_queue_is_initialized(&screen->flush_queue))
          util_queue_finish(&screen->flush_queue);
-      if (VKSCR(QueueWaitIdle)(screen->queue) != VK_SUCCESS)
-         debug_printf("vkQueueWaitIdle failed\n");
+      VkResult result = VKSCR(QueueWaitIdle)(screen->queue);
+      if (result != VK_SUCCESS)
+         mesa_loge("ZINK: vkQueueWaitIdle failed (%s)", vk_Result_to_str(result));
       zink_kopper_deinit_displaytarget(screen, cdt);
       error = VKSCR(CreateSwapchainKHR)(screen->dev, &cswap->scci, NULL,
                                    &cswap->swapchain);
diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c
index 1e76d3501f5..3884c90b6b4 100644
--- a/src/gallium/drivers/zink/zink_pipeline.c
+++ b/src/gallium/drivers/zink/zink_pipeline.c
@@ -376,9 +376,10 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
    pci.stageCount = num_stages;
 
    VkPipeline pipeline;
-   if (VKSCR(CreateGraphicsPipelines)(screen->dev, prog->base.pipeline_cache,
-                                      1, &pci, NULL, &pipeline) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateGraphicsPipelines failed");
+   VkResult result = VKSCR(CreateGraphicsPipelines)(screen->dev, prog->base.pipeline_cache,
+                                                    1, &pci, NULL, &pipeline);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateGraphicsPipelines failed (%s)", vk_Result_to_str(result));
       return VK_NULL_HANDLE;
    }
 
@@ -417,9 +418,10 @@ zink_create_compute_pipeline(struct zink_screen *screen, struct zink_compute_pro
    pci.stage = stage;
 
    VkPipeline pipeline;
-   if (VKSCR(CreateComputePipelines)(screen->dev, comp->base.pipeline_cache,
-                                     1, &pci, NULL, &pipeline) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateComputePipelines failed");
+   VkResult result = VKSCR(CreateComputePipelines)(screen->dev, comp->base.pipeline_cache,
+                                                   1, &pci, NULL, &pipeline);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateComputePipelines failed (%s)", vk_Result_to_str(result));
       return VK_NULL_HANDLE;
    }
    zink_screen_update_pipeline_cache(screen, &comp->base);
diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c
index 53dcec1c8f1..d7a3a77f826 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -389,8 +389,9 @@ zink_pipeline_layout_create(struct zink_screen *screen, struct zink_program *pg,
    plci.pPushConstantRanges = &pcr[0];
 
    VkPipelineLayout layout;
-   if (VKSCR(CreatePipelineLayout)(screen->dev, &plci, NULL, &layout) != VK_SUCCESS) {
-      mesa_loge("vkCreatePipelineLayout failed");
+   VkResult result = VKSCR(CreatePipelineLayout)(screen->dev, &plci, NULL, &layout);
+   if (result != VK_SUCCESS) {
+      mesa_loge("vkCreatePipelineLayout failed (%s)", vk_Result_to_str(result));
       return VK_NULL_HANDLE;
    }
 
diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c
index 81dc4e41799..49978f610be 100644
--- a/src/gallium/drivers/zink/zink_query.c
+++ b/src/gallium/drivers/zink/zink_query.c
@@ -174,7 +174,7 @@ find_or_allocate_qp(struct zink_context *ctx,
 
    VkResult status = VKSCR(CreateQueryPool)(screen->dev, &pool_create, NULL, &new_pool->query_pool);
    if (status != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateQueryPool failed");
+      mesa_loge("ZINK: vkCreateQueryPool failed (%s)", vk_Result_to_str(status));
       FREE(new_pool);
       return NULL;
    }
@@ -1254,12 +1254,13 @@ zink_get_query_result_resource(struct pipe_context *pctx,
       unsigned src_offset = result_size * get_num_results(query);
       if (zink_batch_usage_check_completion(ctx, query->batch_uses)) {
          uint64_t u64[4] = {0};
-         if (VKCTX(GetQueryPoolResults)(screen->dev, start->vkq[0]->pool->query_pool, query_id, 1, sizeof(u64), u64,
-                                   0, size_flags | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | flag) == VK_SUCCESS) {
+         VkResult result = VKCTX(GetQueryPoolResults)(screen->dev, start->vkq[0]->pool->query_pool, query_id, 1,
+                                   sizeof(u64), u64, 0, size_flags | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | flag);
+         if (result == VK_SUCCESS) {
             tc_buffer_write(pctx, pres, offset, result_size, (unsigned char*)u64 + src_offset);
             return;
          } else {
-            mesa_loge("ZINK: vkGetQueryPoolResults failed");
+            mesa_loge("ZINK: vkGetQueryPoolResults failed (%s)", vk_Result_to_str(result));
          }
       }
       struct pipe_resource *staging = pipe_buffer_create(pctx->screen, 0, PIPE_USAGE_STAGING, src_offset + result_size);
@@ -1314,8 +1315,9 @@ zink_get_timestamp(struct pipe_screen *pscreen)
       VkCalibratedTimestampInfoEXT cti = {0};
       cti.sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT;
       cti.timeDomain = VK_TIME_DOMAIN_DEVICE_EXT;
-      if (VKSCR(GetCalibratedTimestampsEXT)(screen->dev, 1, &cti, &timestamp, &deviation) != VK_SUCCESS) {
-         mesa_loge("ZINK: vkGetCalibratedTimestampsEXT failed");
+      VkResult result = VKSCR(GetCalibratedTimestampsEXT)(screen->dev, 1, &cti, &timestamp, &deviation);
+      if (result != VK_SUCCESS) {
+         mesa_loge("ZINK: vkGetCalibratedTimestampsEXT failed (%s)", vk_Result_to_str(result));
       }
    } else {
       struct pipe_context *pctx = &screen->copy_context->base;
diff --git a/src/gallium/drivers/zink/zink_render_pass.c b/src/gallium/drivers/zink/zink_render_pass.c
index 8134237eb74..1467d001212 100644
--- a/src/gallium/drivers/zink/zink_render_pass.c
+++ b/src/gallium/drivers/zink/zink_render_pass.c
@@ -221,8 +221,9 @@ create_render_pass2(struct zink_screen *screen, struct zink_render_pass_state *s
    rpci.pDependencies = input_count ? fbfetch_deps : deps;
 
    VkRenderPass render_pass;
-   if (VKSCR(CreateRenderPass2)(screen->dev, &rpci, NULL, &render_pass) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateRenderPass2 failed");
+   VkResult result = VKSCR(CreateRenderPass2)(screen->dev, &rpci, NULL, &render_pass);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateRenderPass2 failed (%s)", vk_Result_to_str(result));
       return VK_NULL_HANDLE;
    }
 
diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c
index fa9673b61d3..cc8da454cd0 100644
--- a/src/gallium/drivers/zink/zink_resource.c
+++ b/src/gallium/drivers/zink/zink_resource.c
@@ -785,7 +785,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
          }
       }
       if (result != VK_SUCCESS) {
-         mesa_loge("ZINK: vkCreateImage failed");
+         mesa_loge("ZINK: vkCreateImage failed (%s)", vk_Result_to_str(result));
          goto fail1;
       }
 
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index d455fd514d9..41093f61e66 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -217,8 +217,9 @@ cache_put_job(void *data, void *gdata, int thread_index)
    struct zink_program *pg = data;
    struct zink_screen *screen = gdata;
    size_t size = 0;
-   if (VKSCR(GetPipelineCacheData)(screen->dev, pg->pipeline_cache, &size, NULL) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkGetPipelineCacheData failed");
+   VkResult result = VKSCR(GetPipelineCacheData)(screen->dev, pg->pipeline_cache, &size, NULL);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkGetPipelineCacheData failed (%s)", vk_Result_to_str(result));
       return;
    }
    if (pg->pipeline_cache_size == size)
@@ -226,14 +227,15 @@ cache_put_job(void *data, void *gdata, int thread_index)
    void *pipeline_data = malloc(size);
    if (!pipeline_data)
       return;
-   if (VKSCR(GetPipelineCacheData)(screen->dev, pg->pipeline_cache, &size, pipeline_data) == VK_SUCCESS) {
+   result = VKSCR(GetPipelineCacheData)(screen->dev, pg->pipeline_cache, &size, pipeline_data);
+   if (result == VK_SUCCESS) {
       pg->pipeline_cache_size = size;
 
       cache_key key;
       disk_cache_compute_key(screen->disk_cache, pg->sha1, sizeof(pg->sha1), key);
       disk_cache_put_nocopy(screen->disk_cache, key, pipeline_data, size, NULL);
    } else {
-      mesa_loge("ZINK: vkGetPipelineCacheData failed");
+      mesa_loge("ZINK: vkGetPipelineCacheData failed (%s)", vk_Result_to_str(result));
    }
 }
 
@@ -264,8 +266,10 @@ cache_get_job(void *data, void *gdata, int thread_index)
    disk_cache_compute_key(screen->disk_cache, pg->sha1, sizeof(pg->sha1), key);
    pcci.pInitialData = disk_cache_get(screen->disk_cache, key, &pg->pipeline_cache_size);
    pcci.initialDataSize = pg->pipeline_cache_size;
-   if (VKSCR(CreatePipelineCache)(screen->dev, &pcci, NULL, &pg->pipeline_cache) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreatePipelineCache failed");
+
+   VkResult res = VKSCR(CreatePipelineCache)(screen->dev, &pcci, NULL, &pg->pipeline_cache);
+   if (res != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreatePipelineCache failed (%s)", vk_Result_to_str(res));
    }
    free((void*)pcci.pInitialData);
 }
@@ -1306,7 +1310,7 @@ choose_pdev(struct zink_screen *screen)
    bool is_cpu = false;
    VkResult result = VKSCR(EnumeratePhysicalDevices)(screen->instance, &pdev_count, NULL);
    if (result != VK_SUCCESS) {
-      mesa_loge("ZINK: vkEnumeratePhysicalDevices failed");
+      mesa_loge("ZINK: vkEnumeratePhysicalDevices failed (%s)", vk_Result_to_str(result));
       return is_cpu;
    }
 
@@ -1573,14 +1577,16 @@ check_have_device_time(struct zink_screen *screen)
 {
    uint32_t num_domains = 0;
    VkTimeDomainEXT domains[8]; //current max is 4
-   if (VKSCR(GetPhysicalDeviceCalibrateableTimeDomainsEXT)(screen->pdev, &num_domains, NULL) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkGetPhysicalDeviceCalibrateableTimeDomainsEXT failed");
+   VkResult result = VKSCR(GetPhysicalDeviceCalibrateableTimeDomainsEXT)(screen->pdev, &num_domains, NULL);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkGetPhysicalDeviceCalibrateableTimeDomainsEXT failed (%s)", vk_Result_to_str(result));
    }
    assert(num_domains > 0);
    assert(num_domains < ARRAY_SIZE(domains));
 
-   if (VKSCR(GetPhysicalDeviceCalibrateableTimeDomainsEXT)(screen->pdev, &num_domains, domains) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkGetPhysicalDeviceCalibrateableTimeDomainsEXT failed");
+   result = VKSCR(GetPhysicalDeviceCalibrateableTimeDomainsEXT)(screen->pdev, &num_domains, domains);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkGetPhysicalDeviceCalibrateableTimeDomainsEXT failed (%s)", vk_Result_to_str(result));
    }
 
    /* VK_TIME_DOMAIN_DEVICE_EXT is used for the ctx->get_timestamp hook and is the only one we really need */
@@ -1654,12 +1660,13 @@ create_debug(struct zink_screen *screen)
 
    VkDebugUtilsMessengerEXT vkDebugUtilsCallbackEXT = VK_NULL_HANDLE;
 
-   if (VKSCR(CreateDebugUtilsMessengerEXT)(
+   VkResult result = VKSCR(CreateDebugUtilsMessengerEXT)(
            screen->instance,
            &vkDebugUtilsMessengerCreateInfoEXT,
            NULL,
-           &vkDebugUtilsCallbackEXT) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDebugUtilsMessengerEXT failed");
+           &vkDebugUtilsCallbackEXT);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateDebugUtilsMessengerEXT failed (%s)", vk_Result_to_str(result));
    }
 
    screen->debugUtilsCallbackHandle = vkDebugUtilsCallbackEXT;
@@ -1750,7 +1757,7 @@ populate_format_props(struct zink_screen *screen)
                                                                 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
                                                                 0, &image_props);
    if (ret != VK_SUCCESS && ret != VK_ERROR_FORMAT_NOT_SUPPORTED) {
-      mesa_loge("ZINK: vkGetPhysicalDeviceImageFormatProperties failed");
+      mesa_loge("ZINK: vkGetPhysicalDeviceImageFormatProperties failed (%s)", vk_Result_to_str(ret));
    }
    screen->need_2D_zs = ret != VK_SUCCESS;
 
@@ -1805,10 +1812,11 @@ zink_get_loader_version(struct zink_screen *screen)
    GET_PROC_ADDR_INSTANCE_LOCAL(screen, NULL, EnumerateInstanceVersion);
    if (vk_EnumerateInstanceVersion) {
       uint32_t loader_version_temp = VK_API_VERSION_1_0;
-      if (VK_SUCCESS == (*vk_EnumerateInstanceVersion)(&loader_version_temp)) {
+      VkResult result = (*vk_EnumerateInstanceVersion)(&loader_version_temp);
+      if (VK_SUCCESS == result) {
          loader_version = loader_version_temp;
       } else {
-         mesa_loge("ZINK: vkEnumerateInstanceVersion failed");
+         mesa_loge("ZINK: vkEnumerateInstanceVersion failed (%s)", vk_Result_to_str(result));
       }
    }
 
@@ -2016,9 +2024,10 @@ zink_create_logical_device(struct zink_screen *screen)
    dci.ppEnabledExtensionNames = screen->info.extensions;
    dci.enabledExtensionCount = screen->info.num_extensions;
 
-   if (VKSCR(CreateDevice)(screen->pdev, &dci, NULL, &dev) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateDevice failed");
-   }
+   VkResult result = VKSCR(CreateDevice)(screen->pdev, &dci, NULL, &dev);
+   if (result != VK_SUCCESS)
+      mesa_loge("ZINK: vkCreateDevice failed (%s)", vk_Result_to_str(result));
+   
    return dev;
 }
 
diff --git a/src/gallium/drivers/zink/zink_surface.c b/src/gallium/drivers/zink/zink_surface.c
index aee2f3a1882..15a3e8ec9a6 100644
--- a/src/gallium/drivers/zink/zink_surface.c
+++ b/src/gallium/drivers/zink/zink_surface.c
@@ -172,9 +172,10 @@ create_surface(struct pipe_context *pctx,
    if (!actually)
       return surface;
    assert(ivci->image);
-   if (VKSCR(CreateImageView)(screen->dev, ivci, NULL,
-                         &surface->image_view) != VK_SUCCESS) {
-      mesa_loge("ZINK: vkCreateImageView failed");
+   VkResult result = VKSCR(CreateImageView)(screen->dev, ivci, NULL,
+                                            &surface->image_view);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: vkCreateImageView failed (%s)", vk_Result_to_str(result));
       FREE(surface);
       return NULL;
    }
@@ -363,8 +364,9 @@ zink_rebind_surface(struct zink_context *ctx, struct pipe_surface **psurface)
    assert(entry);
    _mesa_hash_table_remove(&res->surface_cache, entry);
    VkImageView image_view;
-   if (VKSCR(CreateImageView)(screen->dev, &ivci, NULL, &image_view) != VK_SUCCESS) {
-      mesa_loge("ZINK: failed to create new imageview");
+   VkResult result = VKSCR(CreateImageView)(screen->dev, &ivci, NULL, &image_view);
+   if (result != VK_SUCCESS) {
+      mesa_loge("ZINK: failed to create new imageview (%s)", vk_Result_to_str(result));
       simple_mtx_unlock(&res->surface_mtx);
       return false;
    }



More information about the mesa-commit mailing list