From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winevulkan/vulkan.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index ce34e484d65..11c60223ec2 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -751,7 +751,7 @@ static VkResult wine_vk_instance_convert_create_info(struct conversion_context * }
/* Helper function which stores wrapped physical devices in the instance object. */ -static VkResult wine_vk_instance_init_physical_devices(struct wine_instance *instance) +static VkResult wine_vk_instance_init_physical_devices(struct wine_instance *instance, struct wine_phys_dev *physical_devices, VkInstance client_instance) { VkPhysicalDevice *host_handles; uint32_t phys_dev_count; @@ -767,12 +767,12 @@ static VkResult wine_vk_instance_init_physical_devices(struct wine_instance *ins if (!phys_dev_count) return res;
- if (phys_dev_count > instance->handle->phys_dev_count) + if (phys_dev_count > client_instance->phys_dev_count) { - instance->handle->phys_dev_count = phys_dev_count; + client_instance->phys_dev_count = phys_dev_count; return VK_ERROR_OUT_OF_POOL_MEMORY; } - instance->handle->phys_dev_count = phys_dev_count; + client_instance->phys_dev_count = phys_dev_count;
if (!(host_handles = calloc(phys_dev_count, sizeof(*host_handles)))) return VK_ERROR_OUT_OF_HOST_MEMORY; @@ -787,8 +787,8 @@ static VkResult wine_vk_instance_init_physical_devices(struct wine_instance *ins /* Wrap each host physical device handle into a dispatchable object for the ICD loader. */ for (i = 0; i < phys_dev_count; i++) { - struct wine_phys_dev *phys_dev = instance->phys_devs + i; - res = wine_vk_physical_device_init(phys_dev, host_handles[i], &instance->handle->phys_devs[i], instance); + struct wine_phys_dev *phys_dev = physical_devices + i; + res = wine_vk_physical_device_init(phys_dev, host_handles[i], &client_instance->phys_devs[i], instance); if (res != VK_SUCCESS) goto err; } @@ -798,19 +798,19 @@ static VkResult wine_vk_instance_init_physical_devices(struct wine_instance *ins return VK_SUCCESS;
err: - while (i) wine_phys_dev_cleanup(&instance->phys_devs[--i]); + while (i) wine_phys_dev_cleanup(&physical_devices[--i]); free(host_handles); return res; }
-static struct wine_phys_dev *wine_vk_instance_wrap_physical_device(struct wine_instance *instance, - VkPhysicalDevice host_handle) +static struct wine_phys_dev *wine_vk_instance_wrap_physical_device(struct wine_phys_dev *physical_devices, + uint32_t physical_device_count, VkPhysicalDevice host_handle) { unsigned int i;
- for (i = 0; i < instance->phys_dev_count; ++i) + for (i = 0; i < physical_device_count; ++i) { - struct wine_phys_dev *current = instance->phys_devs + i; + struct wine_phys_dev *current = physical_devices + i; if (current->host_physical_device == host_handle) return current; }
@@ -999,7 +999,7 @@ VkResult wine_vkCreateInstance(const VkInstanceCreateInfo *create_info, * the host physical devices and present those to the application. * Cleanup happens as part of wine_vkDestroyInstance. */ - res = wine_vk_instance_init_physical_devices(instance); + res = wine_vk_instance_init_physical_devices(instance, instance->phys_devs, client_instance); if (res != VK_SUCCESS) { ERR("Failed to load physical devices, res=%d\n", res); @@ -1330,7 +1330,7 @@ static VkResult wine_vk_enumerate_physical_device_groups(struct wine_instance *i for (j = 0; j < current->physicalDeviceCount; ++j) { VkPhysicalDevice host_handle = current->physicalDevices[j]; - struct wine_phys_dev *phys_dev = wine_vk_instance_wrap_physical_device(instance, host_handle); + struct wine_phys_dev *phys_dev = wine_vk_instance_wrap_physical_device(instance->phys_devs, instance->phys_dev_count, host_handle); if (!phys_dev) return VK_ERROR_INITIALIZATION_FAILED; current->physicalDevices[j] = phys_dev->handle;