[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