[PATCH 3/5] vulkan-1: Implement vkEnumerateInstanceExtensionProperties.
Roderick Colenbrander
thunderbird2k at gmail.com
Tue Mar 27 02:00:04 CDT 2018
Signed-off-by: Roderick Colenbrander <thunderbird2k at gmail.com>
---
dlls/vulkan-1/vulkan.c | 36 +++++++++++++++++++++++++++++++++---
1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/dlls/vulkan-1/vulkan.c b/dlls/vulkan-1/vulkan.c
index b8db08a312..e3981b63ef 100644
--- a/dlls/vulkan-1/vulkan.c
+++ b/dlls/vulkan-1/vulkan.c
@@ -27,6 +27,32 @@
WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
+static VkResult (WINAPI *p_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *);
+static void * (WINAPI *p_vk_icdGetInstanceProcAddr)(VkInstance, const char *);
+
+static BOOL vk_loader_init(void)
+{
+ HMODULE icd_handle = NULL;
+
+ icd_handle = LoadLibraryA("winevulkan.dll");
+ if (!icd_handle)
+ {
+ ERR("Failed to load Vulkan ICD (winevulkan.dll).\n");
+ return FALSE;
+ }
+
+ p_vk_icdGetInstanceProcAddr = (void *)GetProcAddress(icd_handle, "vk_icdGetInstanceProcAddr");
+ if (!p_vk_icdGetInstanceProcAddr)
+ return FALSE;
+
+ p_vkEnumerateInstanceExtensionProperties = p_vk_icdGetInstanceProcAddr(NULL,
+ "vkEnumerateInstanceExtensionProperties");
+ if (!p_vkEnumerateInstanceExtensionProperties)
+ return FALSE;
+
+ return TRUE;
+}
+
VkResult WINAPI vkCreateInstance(const VkInstanceCreateInfo *create_info,
const VkAllocationCallbacks *allocator, VkInstance *instance)
{
@@ -37,8 +63,12 @@ VkResult WINAPI vkCreateInstance(const VkInstanceCreateInfo *create_info,
VkResult WINAPI vkEnumerateInstanceExtensionProperties(const char *layer_name,
uint32_t *count, VkExtensionProperties *properties)
{
- FIXME("stub: %p %p %p\n", layer_name, count, properties);
- return VK_ERROR_OUT_OF_HOST_MEMORY;
+ TRACE("%p %p %p\n", layer_name, count, properties);
+
+ if (layer_name)
+ return VK_ERROR_LAYER_NOT_PRESENT;
+
+ return p_vkEnumerateInstanceExtensionProperties(NULL, count, properties);
}
VkResult WINAPI vkEnumerateInstanceLayerProperties(uint32_t *count, VkLayerProperties *properties)
@@ -64,7 +94,7 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, void *reserved)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinst);
- return TRUE;
+ return vk_loader_init();
}
return TRUE;
}
--
2.14.3
More information about the wine-devel
mailing list