[PATCH 3/3] dxgi: Prefer vkGet*ProcAddr() for loading Vulkan functions.

Józef Kucia jkucia at codeweavers.com
Wed Aug 15 05:03:25 CDT 2018


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/dxgi/swapchain.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 241db3b10b10..83e0f256748f 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -846,7 +846,6 @@ struct dxgi_vk_funcs
     PFN_vkDestroySwapchainKHR p_vkDestroySwapchainKHR;
     PFN_vkEndCommandBuffer p_vkEndCommandBuffer;
     PFN_vkFreeMemory p_vkFreeMemory;
-    PFN_vkGetDeviceProcAddr p_vkGetDeviceProcAddr;
     PFN_vkGetImageMemoryRequirements p_vkGetImageMemoryRequirements;
     PFN_vkGetInstanceProcAddr p_vkGetInstanceProcAddr;
     PFN_vkGetPhysicalDeviceMemoryProperties p_vkGetPhysicalDeviceMemoryProperties;
@@ -1640,19 +1639,7 @@ static BOOL init_vk_funcs(struct dxgi_vk_funcs *dxgi, VkInstance vk_instance, Vk
         return FALSE;
     }
 
-    dxgi->p_vkCreateSwapchainKHR = vk->p_vkCreateSwapchainKHR;
-    dxgi->p_vkCreateWin32SurfaceKHR = vk->p_vkCreateWin32SurfaceKHR;
-    dxgi->p_vkDestroySurfaceKHR = vk->p_vkDestroySurfaceKHR;
-    dxgi->p_vkDestroySwapchainKHR = vk->p_vkDestroySwapchainKHR;
-    dxgi->p_vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)vk->p_vkGetDeviceProcAddr;
     dxgi->p_vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)vk->p_vkGetInstanceProcAddr;
-    dxgi->p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = vk->p_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
-    dxgi->p_vkGetPhysicalDeviceSurfaceFormatsKHR = vk->p_vkGetPhysicalDeviceSurfaceFormatsKHR;
-    dxgi->p_vkGetPhysicalDeviceSurfacePresentModesKHR = vk->p_vkGetPhysicalDeviceSurfacePresentModesKHR;
-    dxgi->p_vkGetPhysicalDeviceSurfaceSupportKHR = vk->p_vkGetPhysicalDeviceSurfaceSupportKHR;
-    dxgi->p_vkGetPhysicalDeviceWin32PresentationSupportKHR = vk->p_vkGetPhysicalDeviceWin32PresentationSupportKHR;
-    dxgi->p_vkGetSwapchainImagesKHR = vk->p_vkGetSwapchainImagesKHR;
-    dxgi->p_vkQueuePresentKHR = vk->p_vkQueuePresentKHR;
 
 #define LOAD_INSTANCE_PFN(name) \
     if (!(dxgi->p_##name = vk->p_vkGetInstanceProcAddr(vk_instance, #name))) \
@@ -1660,7 +1647,14 @@ static BOOL init_vk_funcs(struct dxgi_vk_funcs *dxgi, VkInstance vk_instance, Vk
         ERR("Failed to get instance proc "#name".\n"); \
         return FALSE; \
     }
+    LOAD_INSTANCE_PFN(vkCreateWin32SurfaceKHR)
+    LOAD_INSTANCE_PFN(vkDestroySurfaceKHR)
     LOAD_INSTANCE_PFN(vkGetPhysicalDeviceMemoryProperties)
+    LOAD_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)
+    LOAD_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceFormatsKHR)
+    LOAD_INSTANCE_PFN(vkGetPhysicalDeviceSurfacePresentModesKHR)
+    LOAD_INSTANCE_PFN(vkGetPhysicalDeviceSurfaceSupportKHR)
+    LOAD_INSTANCE_PFN(vkGetPhysicalDeviceWin32PresentationSupportKHR)
 #undef LOAD_INSTANCE_PFN
 
 #define LOAD_DEVICE_PFN(name) \
@@ -1680,13 +1674,17 @@ static BOOL init_vk_funcs(struct dxgi_vk_funcs *dxgi, VkInstance vk_instance, Vk
     LOAD_DEVICE_PFN(vkCreateFence)
     LOAD_DEVICE_PFN(vkCreateImage)
     LOAD_DEVICE_PFN(vkCreateSemaphore)
+    LOAD_DEVICE_PFN(vkCreateSwapchainKHR)
     LOAD_DEVICE_PFN(vkDestroyCommandPool)
     LOAD_DEVICE_PFN(vkDestroyFence)
     LOAD_DEVICE_PFN(vkDestroyImage)
     LOAD_DEVICE_PFN(vkDestroySemaphore)
+    LOAD_DEVICE_PFN(vkDestroySwapchainKHR)
     LOAD_DEVICE_PFN(vkEndCommandBuffer)
     LOAD_DEVICE_PFN(vkFreeMemory)
     LOAD_DEVICE_PFN(vkGetImageMemoryRequirements)
+    LOAD_DEVICE_PFN(vkGetSwapchainImagesKHR)
+    LOAD_DEVICE_PFN(vkQueuePresentKHR)
     LOAD_DEVICE_PFN(vkQueueSubmit)
     LOAD_DEVICE_PFN(vkQueueWaitIdle)
     LOAD_DEVICE_PFN(vkResetFences)
-- 
2.16.4




More information about the wine-devel mailing list