[PATCH 9/9] winevulkan: Add instance funcs stubs.

Roderick Colenbrander thunderbird2k at gmail.com
Mon Nov 6 02:08:25 CST 2017


Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
---
 dlls/winevulkan/Makefile.in      |   3 +-
 dlls/winevulkan/vulkan.c         |  10 ++--
 dlls/winevulkan/vulkan_private.h |  15 ++++++
 dlls/winevulkan/vulkan_thunks.c  | 105 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 126 insertions(+), 7 deletions(-)
 create mode 100644 dlls/winevulkan/vulkan_private.h
 create mode 100644 dlls/winevulkan/vulkan_thunks.c

diff --git a/dlls/winevulkan/Makefile.in b/dlls/winevulkan/Makefile.in
index 859c731c6e..a3c40bd398 100644
--- a/dlls/winevulkan/Makefile.in
+++ b/dlls/winevulkan/Makefile.in
@@ -2,6 +2,7 @@ MODULE    = winevulkan.dll
 IMPORTS   = user32 gdi32
 
 C_SRCS = \
-	vulkan.c
+	vulkan.c \
+	vulkan_thunks.c
 
 RC_SRCS = version.rc
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c
index 887351f187..a4139dd816 100644
--- a/dlls/winevulkan/vulkan.c
+++ b/dlls/winevulkan/vulkan.c
@@ -24,6 +24,7 @@
 #include "wine/debug.h"
 #include "wine/vulkan.h"
 #include "wine/vulkan_driver.h"
+#include "vulkan_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
 
@@ -40,12 +41,6 @@ static VkResult WINAPI wine_vkEnumerateInstanceExtensionProperties(const char *p
         VkExtensionProperties* pProperties);
 static PFN_vkVoidFunction WINAPI wine_vkGetInstanceProcAddr(VkInstance instance, const char* pName);
 
-struct vulkan_func
-{
-    const char *name;
-    void *func;
-};
-
 const struct vulkan_func vk_global_dispatch_table[] = {
     {"vkCreateInstance", &wine_vkCreateInstance},
     {"vkEnumerateInstanceExtensionProperties", &wine_vkEnumerateInstanceExtensionProperties},
@@ -118,6 +113,9 @@ static PFN_vkVoidFunction WINAPI wine_vkGetInstanceProcAddr(VkInstance instance,
         return NULL;
     }
 
+    func = wine_vk_get_instance_proc_addr(pName);
+    if (func) return func;
+
     FIXME("Unsupported device or instance function: '%s'\n", pName);
     return NULL;
 }
diff --git a/dlls/winevulkan/vulkan_private.h b/dlls/winevulkan/vulkan_private.h
new file mode 100644
index 0000000000..4b9e328a04
--- /dev/null
+++ b/dlls/winevulkan/vulkan_private.h
@@ -0,0 +1,15 @@
+#ifndef __WINE_VULKAN_PRIVATE_H
+#define __WINE_VULKAN_PRIVATE_H
+
+#include "wine/vulkan.h"
+
+struct vulkan_func
+{
+    const char *name;
+    void *func;
+};
+
+/* For use by vk_icdGetInstanceProcAddr / vkGetInstanceProcAddr */
+void *wine_vk_get_instance_proc_addr(const char *name) DECLSPEC_HIDDEN;
+
+#endif /* __WINE_VULKAN_PRIVATE_H */
diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c
new file mode 100644
index 0000000000..e426384931
--- /dev/null
+++ b/dlls/winevulkan/vulkan_thunks.c
@@ -0,0 +1,105 @@
+/* Automatically generated from Vulkan vk.xml; DO NOT EDIT! */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include "wine/debug.h"
+#include "wine/vulkan.h"
+#include "wine/vulkan_driver.h"
+#include "vulkan_private.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
+
+static VkResult wine_vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDevice *pDevice)
+{
+    TRACE("%p, %p, %p, %p\n", physicalDevice, pCreateInfo, pAllocator, pDevice);
+    return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static void wine_vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator)
+{
+    TRACE("%p, %p\n", instance, pAllocator);
+}
+
+static VkResult wine_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties)
+{
+    TRACE("%p, %p, %p, %p\n", physicalDevice, pLayerName, pPropertyCount, pProperties);
+    return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static VkResult wine_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount, VkLayerProperties *pProperties)
+{
+    TRACE("%p, %p, %p\n", physicalDevice, pPropertyCount, pProperties);
+    return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static VkResult wine_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices)
+{
+    TRACE("%p, %p, %p\n", instance, pPhysicalDeviceCount, pPhysicalDevices);
+    return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static void wine_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures *pFeatures)
+{
+    TRACE("%p, %p\n", physicalDevice, pFeatures);
+}
+
+static void wine_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties *pFormatProperties)
+{
+    TRACE("%p, %d, %p\n", physicalDevice, format, pFormatProperties);
+}
+
+static VkResult wine_vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties *pImageFormatProperties)
+{
+    TRACE("%p, %d, %d, %d, %#x, %#x, %p\n", physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
+    return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static void wine_vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties *pMemoryProperties)
+{
+    TRACE("%p, %p\n", physicalDevice, pMemoryProperties);
+}
+
+static void wine_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties *pProperties)
+{
+    TRACE("%p, %p\n", physicalDevice, pProperties);
+}
+
+static void wine_vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount, VkQueueFamilyProperties *pQueueFamilyProperties)
+{
+    TRACE("%p, %p, %p\n", physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+}
+
+static void wine_vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t *pPropertyCount, VkSparseImageFormatProperties *pProperties)
+{
+    TRACE("%p, %d, %d, %d, %#x, %d, %p, %p\n", physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
+}
+
+static const struct vulkan_func vk_instance_dispatch_table[] = {
+    {"vkCreateDevice", &wine_vkCreateDevice},
+    {"vkDestroyInstance", &wine_vkDestroyInstance},
+    {"vkEnumerateDeviceExtensionProperties", &wine_vkEnumerateDeviceExtensionProperties},
+    {"vkEnumerateDeviceLayerProperties", &wine_vkEnumerateDeviceLayerProperties},
+    {"vkEnumeratePhysicalDevices", &wine_vkEnumeratePhysicalDevices},
+    {"vkGetPhysicalDeviceFeatures", &wine_vkGetPhysicalDeviceFeatures},
+    {"vkGetPhysicalDeviceFormatProperties", &wine_vkGetPhysicalDeviceFormatProperties},
+    {"vkGetPhysicalDeviceImageFormatProperties", &wine_vkGetPhysicalDeviceImageFormatProperties},
+    {"vkGetPhysicalDeviceMemoryProperties", &wine_vkGetPhysicalDeviceMemoryProperties},
+    {"vkGetPhysicalDeviceProperties", &wine_vkGetPhysicalDeviceProperties},
+    {"vkGetPhysicalDeviceQueueFamilyProperties", &wine_vkGetPhysicalDeviceQueueFamilyProperties},
+    {"vkGetPhysicalDeviceSparseImageFormatProperties", &wine_vkGetPhysicalDeviceSparseImageFormatProperties},
+};
+
+void *wine_vk_get_instance_proc_addr(const char *name)
+{
+    int i;
+    for (i = 0; i < sizeof(vk_instance_dispatch_table) / sizeof(vk_instance_dispatch_table[0]); i++)
+    {
+        if (strcmp(name, vk_instance_dispatch_table[i].name) == 0)
+        {
+            TRACE("Found pName=%s in instance table\n", name);
+            return vk_instance_dispatch_table[i].func;
+        }
+    }
+    return NULL;
+}
-- 
2.13.6




More information about the wine-patches mailing list