Philip Rebohle : winevulkan: Fill LUID info in VkPhysicalDeviceVulkan11Properties.
Alexandre Julliard
julliard at winehq.org
Wed Jul 27 16:14:57 CDT 2022
Module: wine
Branch: master
Commit: ccf0f911e3b298369fc549d67b24abb1ad87cac5
URL: https://gitlab.winehq.org/wine/wine/-/commit/ccf0f911e3b298369fc549d67b24abb1ad87cac5
Author: Philip Rebohle <philip.rebohle at tu-dortmund.de>
Date: Fri Jul 22 15:11:48 2022 +0200
winevulkan: Fill LUID info in VkPhysicalDeviceVulkan11Properties.
Signed-off-by: Philip Rebohle <philip.rebohle at tu-dortmund.de>
---
dlls/winevulkan/loader.c | 36 +++++++++++++++++++++++++++++-------
1 file changed, 29 insertions(+), 7 deletions(-)
diff --git a/dlls/winevulkan/loader.c b/dlls/winevulkan/loader.c
index 61c583d5c13..86e6718adbd 100644
--- a/dlls/winevulkan/loader.c
+++ b/dlls/winevulkan/loader.c
@@ -327,15 +327,22 @@ static void wait_graphics_driver_ready(void)
static void fill_luid_property(VkPhysicalDeviceProperties2 *properties2)
{
+ VkPhysicalDeviceVulkan11Properties *vk11;
+ VkBool32 device_luid_valid = VK_FALSE;
VkPhysicalDeviceIDProperties *id;
+ uint32_t device_node_mask = 0;
SP_DEVINFO_DATA device_data;
+ const uint8_t* device_uuid;
DWORD type, device_idx = 0;
HDEVINFO devinfo;
HANDLE mutex;
GUID uuid;
LUID luid;
- if (!(id = wine_vk_find_struct(properties2, PHYSICAL_DEVICE_ID_PROPERTIES)))
+ vk11 = wine_vk_find_struct(properties2, PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES);
+ id = wine_vk_find_struct(properties2, PHYSICAL_DEVICE_ID_PROPERTIES);
+
+ if (!vk11 && !id)
return;
wait_graphics_driver_ready();
@@ -348,15 +355,30 @@ static void fill_luid_property(VkPhysicalDeviceProperties2 *properties2)
&type, (BYTE *)&uuid, sizeof(uuid), NULL, 0))
continue;
- if (!IsEqualGUID(&uuid, id->deviceUUID))
+ device_uuid = id ? id->deviceUUID : vk11->deviceUUID;
+
+ if (!IsEqualGUID(&uuid, device_uuid))
continue;
if (SetupDiGetDevicePropertyW(devinfo, &device_data, &DEVPROPKEY_GPU_LUID, &type,
(BYTE *)&luid, sizeof(luid), NULL, 0))
{
- memcpy(&id->deviceLUID, &luid, sizeof(id->deviceLUID));
- id->deviceLUIDValid = VK_TRUE;
- id->deviceNodeMask = 1;
+ device_luid_valid = VK_TRUE;
+ device_node_mask = 1;
+
+ if (id)
+ {
+ memcpy(&id->deviceLUID, &luid, sizeof(id->deviceLUID));
+ id->deviceLUIDValid = device_luid_valid;
+ id->deviceNodeMask = device_node_mask;
+ }
+
+ if (vk11)
+ {
+ memcpy(&vk11->deviceLUID, &luid, sizeof(vk11->deviceLUID));
+ vk11->deviceLUIDValid = device_luid_valid;
+ vk11->deviceNodeMask = device_node_mask;
+ }
break;
}
}
@@ -364,8 +386,8 @@ static void fill_luid_property(VkPhysicalDeviceProperties2 *properties2)
release_display_device_init_mutex(mutex);
TRACE("deviceName:%s deviceLUIDValid:%d LUID:%08lx:%08lx deviceNodeMask:%#x.\n",
- properties2->properties.deviceName, id->deviceLUIDValid, luid.HighPart, luid.LowPart,
- id->deviceNodeMask);
+ properties2->properties.deviceName, device_luid_valid, luid.HighPart, luid.LowPart,
+ device_node_mask);
}
void WINAPI vkGetPhysicalDeviceProperties2(VkPhysicalDevice phys_dev,
More information about the wine-cvs
mailing list