winevulkan: Implement vkGetDeviceProcAddr.
Signed-off-by: Roderick Colenbrander <thunderbird2k@gmail.com> Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6eacdf38e2
commit
a2a53bb618
|
@ -94,7 +94,7 @@ FUNCTION_OVERRIDES = {
|
|||
"vkEnumeratePhysicalDevices" : {"dispatch" : True, "driver" : False, "thunk" : False},
|
||||
|
||||
# Device functions
|
||||
"vkGetDeviceProcAddr" : {"dispatch" : True, "driver" : True, "thunk" : True},
|
||||
"vkGetDeviceProcAddr" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -352,6 +352,28 @@ VkResult WINAPI wine_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *d
|
|||
return res;
|
||||
}
|
||||
|
||||
PFN_vkVoidFunction WINAPI wine_vkGetDeviceProcAddr(VkDevice device, const char *name)
|
||||
{
|
||||
void *func;
|
||||
TRACE("%p, %s\n", device, debugstr_a(name));
|
||||
|
||||
/* The spec leaves return value undefined for a NULL device, let's just return NULL. */
|
||||
if (!device || !name)
|
||||
return NULL;
|
||||
|
||||
/* Per the spec, we are only supposed to return device functions as in functions
|
||||
* for which the first parameter is vkDevice or a child of vkDevice like a
|
||||
* vkCommandBuffer or vkQueue.
|
||||
* Loader takes are of filtering of extensions which are enabled or not.
|
||||
*/
|
||||
func = wine_vk_get_device_proc_addr(name);
|
||||
if (func)
|
||||
return func;
|
||||
|
||||
TRACE("Function %s not found\n", debugstr_a(name));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PFN_vkVoidFunction WINAPI wine_vkGetInstanceProcAddr(VkInstance instance, const char *name)
|
||||
{
|
||||
void *func;
|
||||
|
|
|
@ -690,12 +690,6 @@ static void WINAPI wine_vkGetDeviceMemoryCommitment(VkDevice device, VkDeviceMem
|
|||
FIXME("stub: %p, 0x%s, %p\n", device, wine_dbgstr_longlong(memory), pCommittedMemoryInBytes);
|
||||
}
|
||||
|
||||
static PFN_vkVoidFunction WINAPI wine_vkGetDeviceProcAddr(VkDevice device, const char *pName)
|
||||
{
|
||||
FIXME("stub: %p, %p\n", device, pName);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void WINAPI wine_vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue)
|
||||
{
|
||||
FIXME("stub: %p, %u, %u, %p\n", device, queueFamilyIndex, queueIndex, pQueue);
|
||||
|
|
|
@ -17,6 +17,7 @@ VkResult WINAPI wine_vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDev
|
|||
void WINAPI wine_vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator) DECLSPEC_HIDDEN;
|
||||
VkResult WINAPI wine_vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) DECLSPEC_HIDDEN;
|
||||
VkResult WINAPI wine_vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices) DECLSPEC_HIDDEN;
|
||||
PFN_vkVoidFunction WINAPI wine_vkGetDeviceProcAddr(VkDevice device, const char *pName) DECLSPEC_HIDDEN;
|
||||
|
||||
typedef struct VkImageFormatProperties_host
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue