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

Author: Erik Faye-Lund <[email protected]>
Date:   Wed Jun 23 08:15:42 2021 +0200

zink: call vk-functions through dispatch-table

This is going to make it possible to avoid linking directly to the
vulkan-loader.

Reviewed-by: Hoe Hao Cheng <[email protected]>
Reviewed-By: Mike Blumenkrantz <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11550>

---

 src/gallium/drivers/zink/zink_device_info.py |  8 ++++----
 src/gallium/drivers/zink/zink_pipeline.c     |  8 ++++----
 src/gallium/drivers/zink/zink_screen.c       | 20 ++++++++++----------
 3 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_device_info.py 
b/src/gallium/drivers/zink/zink_device_info.py
index 7aecee236c4..0fe8f469883 100644
--- a/src/gallium/drivers/zink/zink_device_info.py
+++ b/src/gallium/drivers/zink/zink_device_info.py
@@ -363,16 +363,16 @@ zink_get_physical_device_info(struct zink_screen *screen)
    uint32_t num_extensions = 0;
 
    // get device memory properties
-   vkGetPhysicalDeviceMemoryProperties(screen->pdev, &info->mem_props);
+   screen->vk.GetPhysicalDeviceMemoryProperties(screen->pdev, 
&info->mem_props);
 
    // enumerate device supported extensions
-   if (vkEnumerateDeviceExtensionProperties(screen->pdev, NULL, 
&num_extensions, NULL) != VK_SUCCESS) {
+   if (screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, 
&num_extensions, NULL) != VK_SUCCESS) {
       mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed");
    } else {
       if (num_extensions > 0) {
          VkExtensionProperties *extensions = 
MALLOC(sizeof(VkExtensionProperties) * num_extensions);
          if (!extensions) goto fail;
-         if (vkEnumerateDeviceExtensionProperties(screen->pdev, NULL, 
&num_extensions, extensions) != VK_SUCCESS) {
+         if (screen->vk.EnumerateDeviceExtensionProperties(screen->pdev, NULL, 
&num_extensions, extensions) != VK_SUCCESS) {
             mesa_loge("ZINK: vkEnumerateDeviceExtensionProperties failed");
          }
 
@@ -427,7 +427,7 @@ zink_get_physical_device_info(struct zink_screen *screen)
 
       screen->vk.GetPhysicalDeviceFeatures2(screen->pdev, &info->feats);
    } else {
-      vkGetPhysicalDeviceFeatures(screen->pdev, &info->feats.features);
+      screen->vk.GetPhysicalDeviceFeatures(screen->pdev, 
&info->feats.features);
    }
 
    // check for device properties
diff --git a/src/gallium/drivers/zink/zink_pipeline.c 
b/src/gallium/drivers/zink/zink_pipeline.c
index 1823dbba296..b00b47ad0fd 100644
--- a/src/gallium/drivers/zink/zink_pipeline.c
+++ b/src/gallium/drivers/zink/zink_pipeline.c
@@ -356,8 +356,8 @@ zink_create_gfx_pipeline(struct zink_screen *screen,
    pci.stageCount = num_stages;
 
    VkPipeline pipeline;
-   if (vkCreateGraphicsPipelines(screen->dev, prog->base.pipeline_cache, 1, 
&pci,
-                                 NULL, &pipeline) != VK_SUCCESS) {
+   if (VKSCR(CreateGraphicsPipelines)(screen->dev, prog->base.pipeline_cache,
+                                      1, &pci, NULL, &pipeline) != VK_SUCCESS) 
{
       mesa_loge("ZINK: vkCreateGraphicsPipelines failed");
       return VK_NULL_HANDLE;
    }
@@ -397,8 +397,8 @@ zink_create_compute_pipeline(struct zink_screen *screen, 
struct zink_compute_pro
    pci.stage = stage;
 
    VkPipeline pipeline;
-   if (vkCreateComputePipelines(screen->dev, comp->base.pipeline_cache, 1, 
&pci,
-                                 NULL, &pipeline) != VK_SUCCESS) {
+   if (VKSCR(CreateComputePipelines)(screen->dev, comp->base.pipeline_cache,
+                                     1, &pci, NULL, &pipeline) != VK_SUCCESS) {
       mesa_loge("ZINK: vkCreateComputePipelines failed");
       return VK_NULL_HANDLE;
    }
diff --git a/src/gallium/drivers/zink/zink_screen.c 
b/src/gallium/drivers/zink/zink_screen.c
index 9e92284f6d5..7fde06bc438 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -1224,7 +1224,7 @@ zink_destroy_screen(struct pipe_screen *pscreen)
 
    simple_mtx_destroy(&screen->queue_lock);
    VKSCR(DestroyDevice)(screen->dev, NULL);
-   vkDestroyInstance(screen->instance, NULL);
+   VKSCR(DestroyInstance)(screen->instance, NULL);
    util_idalloc_mt_fini(&screen->buffer_ids);
 
    slab_destroy_parent(&screen->transfer_pool);
@@ -1238,7 +1238,7 @@ choose_pdev(struct zink_screen *screen)
    uint32_t i, pdev_count;
    VkPhysicalDevice *pdevs;
    bool is_cpu = false;
-   VkResult result = vkEnumeratePhysicalDevices(screen->instance, &pdev_count, 
NULL);
+   VkResult result = VKSCR(EnumeratePhysicalDevices)(screen->instance, 
&pdev_count, NULL);
    if (result != VK_SUCCESS) {
       mesa_loge("ZINK: vkEnumeratePhysicalDevices failed");
       return is_cpu;
@@ -1247,7 +1247,7 @@ choose_pdev(struct zink_screen *screen)
    assert(pdev_count > 0);
 
    pdevs = malloc(sizeof(*pdevs) * pdev_count);
-   result = vkEnumeratePhysicalDevices(screen->instance, &pdev_count, pdevs);
+   result = VKSCR(EnumeratePhysicalDevices)(screen->instance, &pdev_count, 
pdevs);
    assert(result == VK_SUCCESS);
    assert(pdev_count > 0);
 
@@ -1273,7 +1273,7 @@ choose_pdev(struct zink_screen *screen)
    unsigned idx = 0;
    int cur_prio = 0;
    for (i = 0; i < pdev_count; ++i) {
-      vkGetPhysicalDeviceProperties(pdevs[i], &props);
+      VKSCR(GetPhysicalDeviceProperties)(pdevs[i], &props);
 
       if (cpu) {
          /* if user wants cpu, only give them cpu */
@@ -1295,7 +1295,7 @@ choose_pdev(struct zink_screen *screen)
       goto out;
 
    screen->pdev = pdevs[idx];
-   vkGetPhysicalDeviceProperties(screen->pdev, &screen->info.props);
+   VKSCR(GetPhysicalDeviceProperties)(screen->pdev, &screen->info.props);
    screen->info.device_version = screen->info.props.apiVersion;
 
    /* runtime version is the lesser of the instance version and device version 
*/
@@ -1317,11 +1317,11 @@ static void
 update_queue_props(struct zink_screen *screen)
 {
    uint32_t num_queues;
-   vkGetPhysicalDeviceQueueFamilyProperties(screen->pdev, &num_queues, NULL);
+   VKSCR(GetPhysicalDeviceQueueFamilyProperties)(screen->pdev, &num_queues, 
NULL);
    assert(num_queues > 0);
 
    VkQueueFamilyProperties *props = malloc(sizeof(*props) * num_queues);
-   vkGetPhysicalDeviceQueueFamilyProperties(screen->pdev, &num_queues, props);
+   VKSCR(GetPhysicalDeviceQueueFamilyProperties)(screen->pdev, &num_queues, 
props);
 
    for (uint32_t i = 0; i < num_queues; i++) {
       if (props[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) {
@@ -1338,9 +1338,9 @@ static void
 init_queue(struct zink_screen *screen)
 {
    simple_mtx_init(&screen->queue_lock, mtx_plain);
-   vkGetDeviceQueue(screen->dev, screen->gfx_queue, 0, &screen->queue);
+   VKSCR(GetDeviceQueue)(screen->dev, screen->gfx_queue, 0, &screen->queue);
    if (screen->threaded && screen->max_queues > 1)
-      vkGetDeviceQueue(screen->dev, screen->gfx_queue, 1, 
&screen->thread_queue);
+      VKSCR(GetDeviceQueue)(screen->dev, screen->gfx_queue, 1, 
&screen->thread_queue);
    else
       screen->thread_queue = screen->queue;
 }
@@ -1951,7 +1951,7 @@ zink_create_logical_device(struct zink_screen *screen)
    dci.ppEnabledExtensionNames = screen->info.extensions;
    dci.enabledExtensionCount = screen->info.num_extensions;
 
-   if (vkCreateDevice(screen->pdev, &dci, NULL, &dev) != VK_SUCCESS) {
+   if (VKSCR(CreateDevice)(screen->pdev, &dci, NULL, &dev) != VK_SUCCESS) {
       mesa_loge("ZINK: vkCreateDevice failed");
    }
    return dev;

Reply via email to