[PATCH 09/10] winex11: Add stubs for core Vulkan instance functions.
Roderick Colenbrander
thunderbird2k at gmail.com
Tue Oct 31 12:24:55 CDT 2017
Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
---
dlls/winex11.drv/vulkan.c | 24 +++++++++-
dlls/winex11.drv/vulkan_private.h | 2 +
dlls/winex11.drv/vulkan_thunks.c | 98 +++++++++++++++++++++++++++++++++++++++
3 files changed, 122 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c
index f1c41908d8..70adbe5a92 100644
--- a/dlls/winex11.drv/vulkan.c
+++ b/dlls/winex11.drv/vulkan.c
@@ -98,6 +98,20 @@ static void *wine_vk_get_global_proc_addr(const char* name)
return NULL;
}
+static void *wine_vk_get_instance_proc_addr(const char* name)
+{
+ int i;
+ for (i = 0; i < vk_instance_dispatch_table_size; 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;
+}
+
static void wine_vk_application_dump_info(const VkApplicationInfo *info)
{
TRACE("pApplicationName \"%s\", applicationVersion %d\n", info->pApplicationName, info->applicationVersion);
@@ -259,8 +273,14 @@ void* WINAPI X11DRV_vk_icdGetInstanceProcAddr(VkInstance instance, const char* p
return func;
}
- /* TODO: add loading of instance and device functions. */
- FIXME("Function %s not found\n", pName);
+ /* Now find any instance function. */
+ func = wine_vk_get_instance_proc_addr(pName);
+ if (func)
+ return func;
+
+ /* TODO: add device function loading. */
+
+ TRACE("Function %s not found\n", pName);
return NULL;
}
diff --git a/dlls/winex11.drv/vulkan_private.h b/dlls/winex11.drv/vulkan_private.h
index d3fa7be167..15c0b16fc8 100644
--- a/dlls/winex11.drv/vulkan_private.h
+++ b/dlls/winex11.drv/vulkan_private.h
@@ -63,6 +63,8 @@ struct vulkan_func
/* For use by vk_icdGetInstanceProcAddr / vkGetInstanceProcAddr */
extern const struct vulkan_func vk_global_dispatch_table[] DECLSPEC_HIDDEN;
extern const int vk_global_dispatch_table_size DECLSPEC_HIDDEN;
+extern const struct vulkan_func vk_instance_dispatch_table[] DECLSPEC_HIDDEN;
+extern const int vk_instance_dispatch_table_size DECLSPEC_HIDDEN;
VkResult WINAPI X11DRV_vkCreateInstance(const VkInstanceCreateInfo*, const VkAllocationCallbacks*, VkInstance*) DECLSPEC_HIDDEN;
VkResult WINAPI X11DRV_vkEnumerateInstanceExtensionProperties(const char*, uint32_t*, VkExtensionProperties*) DECLSPEC_HIDDEN;
diff --git a/dlls/winex11.drv/vulkan_thunks.c b/dlls/winex11.drv/vulkan_thunks.c
index fc3c65762a..653f10955d 100644
--- a/dlls/winex11.drv/vulkan_thunks.c
+++ b/dlls/winex11.drv/vulkan_thunks.c
@@ -5,9 +5,90 @@
#ifdef SONAME_LIBVULKAN
+#include "wine/debug.h"
#include "wine/vulkan.h"
#include "vulkan_private.h"
+WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
+
+static VkResult WINAPI X11DRV_vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo * pCreateInfo, const VkAllocationCallbacks * pAllocator, VkDevice * pDevice)
+{
+ FIXME("stub: %p, %p, %p, %p\n", physicalDevice, pCreateInfo, pAllocator, pDevice);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static void WINAPI X11DRV_vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks * pAllocator)
+{
+ FIXME("stub: %p, %p\n", instance, pAllocator);
+ return;
+}
+
+static VkResult WINAPI X11DRV_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char * pLayerName, uint32_t * pPropertyCount, VkExtensionProperties * pProperties)
+{
+ FIXME("stub: %p, %p, %p, %p\n", physicalDevice, pLayerName, pPropertyCount, pProperties);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static VkResult WINAPI X11DRV_vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t * pPropertyCount, VkLayerProperties * pProperties)
+{
+ FIXME("stub: %p, %p, %p\n", physicalDevice, pPropertyCount, pProperties);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static VkResult WINAPI X11DRV_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t * pPhysicalDeviceCount, VkPhysicalDevice * pPhysicalDevices)
+{
+ FIXME("stub: %p, %p, %p\n", instance, pPhysicalDeviceCount, pPhysicalDevices);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static PFN_vkVoidFunction WINAPI X11DRV_vkGetDeviceProcAddr(VkDevice device, const char * pName)
+{
+ FIXME("stub: %p, %p\n", device, pName);
+ return NULL;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures * pFeatures)
+{
+ FIXME("stub: %p, %p\n", physicalDevice, pFeatures);
+ return;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties * pFormatProperties)
+{
+ FIXME("stub: %p, %d, %p\n", physicalDevice, format, pFormatProperties);
+ return;
+}
+
+static VkResult WINAPI X11DRV_vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties * pImageFormatProperties)
+{
+ FIXME("stub: %p, %d, %d, %d, %#x, %#x, %p\n", physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties * pMemoryProperties)
+{
+ FIXME("stub: %p, %p\n", physicalDevice, pMemoryProperties);
+ return;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties * pProperties)
+{
+ FIXME("stub: %p, %p\n", physicalDevice, pProperties);
+ return;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t * pQueueFamilyPropertyCount, VkQueueFamilyProperties * pQueueFamilyProperties)
+{
+ FIXME("stub: %p, %p, %p\n", physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ return;
+}
+
+static void WINAPI X11DRV_vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t * pPropertyCount, VkSparseImageFormatProperties * pProperties)
+{
+ FIXME("stub: %p, %d, %d, %d, %#x, %d, %p, %p\n", physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
+ return;
+}
+
const struct vulkan_func vk_global_dispatch_table[] = {
{"vkCreateInstance", NULL, &X11DRV_vkCreateInstance},
{"vkEnumerateInstanceExtensionProperties", NULL, &X11DRV_vkEnumerateInstanceExtensionProperties},
@@ -15,4 +96,21 @@ const struct vulkan_func vk_global_dispatch_table[] = {
};
const int vk_global_dispatch_table_size = 3;
+const struct vulkan_func vk_instance_dispatch_table[] = {
+ {"vkCreateDevice", NULL, &X11DRV_vkCreateDevice},
+ {"vkDestroyInstance", NULL, &X11DRV_vkDestroyInstance},
+ {"vkEnumerateDeviceExtensionProperties", NULL, &X11DRV_vkEnumerateDeviceExtensionProperties},
+ {"vkEnumerateDeviceLayerProperties", NULL, &X11DRV_vkEnumerateDeviceLayerProperties},
+ {"vkEnumeratePhysicalDevices", NULL, &X11DRV_vkEnumeratePhysicalDevices},
+ {"vkGetDeviceProcAddr", NULL, &X11DRV_vkGetDeviceProcAddr},
+ {"vkGetPhysicalDeviceFeatures", NULL, &X11DRV_vkGetPhysicalDeviceFeatures},
+ {"vkGetPhysicalDeviceFormatProperties", NULL, &X11DRV_vkGetPhysicalDeviceFormatProperties},
+ {"vkGetPhysicalDeviceImageFormatProperties", NULL, &X11DRV_vkGetPhysicalDeviceImageFormatProperties},
+ {"vkGetPhysicalDeviceMemoryProperties", NULL, &X11DRV_vkGetPhysicalDeviceMemoryProperties},
+ {"vkGetPhysicalDeviceProperties", NULL, &X11DRV_vkGetPhysicalDeviceProperties},
+ {"vkGetPhysicalDeviceQueueFamilyProperties", NULL, &X11DRV_vkGetPhysicalDeviceQueueFamilyProperties},
+ {"vkGetPhysicalDeviceSparseImageFormatProperties", NULL, &X11DRV_vkGetPhysicalDeviceSparseImageFormatProperties},
+};
+const int vk_instance_dispatch_table_size = 13;
+
#endif /* SONAME_LIBVULKAN */
--
2.13.6
More information about the wine-patches
mailing list