[PATCH 5/5] vulkan-1: Implement vkGetInstanceProcAddr.

Roderick Colenbrander thunderbird2k at gmail.com
Tue Mar 27 02:00:06 CDT 2018


Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
---
 dlls/vulkan-1/vulkan.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/dlls/vulkan-1/vulkan.c b/dlls/vulkan-1/vulkan.c
index 879504f6ee..a4c91087d0 100644
--- a/dlls/vulkan-1/vulkan.c
+++ b/dlls/vulkan-1/vulkan.c
@@ -108,8 +108,25 @@ VkResult WINAPI vkEnumerateInstanceLayerProperties(uint32_t *count, VkLayerPrope
 
 PFN_vkVoidFunction WINAPI vkGetInstanceProcAddr(VkInstance instance, const char *name)
 {
-    FIXME("stub: %p %s\n", instance, debugstr_a(name));
-    return NULL;
+    TRACE("%p %s\n", instance, debugstr_a(name));
+
+    if (!strcmp(name, "vkCreateInstance"))
+        return (PFN_vkVoidFunction)vkCreateInstance;
+
+    if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
+        return (PFN_vkVoidFunction)vkEnumerateInstanceExtensionProperties;
+
+    if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
+        return (PFN_vkVoidFunction)vkEnumerateInstanceLayerProperties;
+
+    if (!strcmp(name, "vkGetInstanceProcAddr"))
+        return (PFN_vkVoidFunction)vkGetInstanceProcAddr;
+
+    if (!instance)
+        return NULL;
+
+    /* Go straight to ICD, no need to incur loader thunk overhead. */
+    return vk_funcs.p_vkGetInstanceProcAddr(instance, name);
 }
 
 BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, void *reserved)
-- 
2.14.3




More information about the wine-devel mailing list