vkd3d: Introduce VKD3D_FILTER_DEVICE_NAME.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
This commit is contained in:
Georg Lehmann 2021-01-23 19:12:51 +01:00 committed by Hans-Kristian Arntzen
parent 326d1cde60
commit c76f37d41c
2 changed files with 10 additions and 0 deletions

View File

@ -155,6 +155,7 @@ commas or semicolons.
- `VKD3D_LOG_FILE` - If set, redirects `VKD3D_DEBUG` logging output to a file instead.
- `VKD3D_VULKAN_DEVICE` - a zero-based device index. Use to force the selected
Vulkan device.
- `VKD3D_FILTER_DEVICE_NAME` - skips devices that don't include this substring.
- `VKD3D_DISABLE_EXTENSIONS` - a list of Vulkan extensions that vkd3d-proton should
not use even if available.
- `VKD3D_TEST_DEBUG` - enables additional debug messages in tests. Set to 0, 1

View File

@ -1597,10 +1597,13 @@ static HRESULT vkd3d_select_physical_device(struct vkd3d_instance *instance,
VkPhysicalDeviceProperties device_properties;
VkPhysicalDevice device = VK_NULL_HANDLE;
VkPhysicalDevice *physical_devices;
const char *filter;
uint32_t count;
unsigned int i;
VkResult vr;
filter = getenv("VKD3D_FILTER_DEVICE_NAME");
count = 0;
if ((vr = VK_CALL(vkEnumeratePhysicalDevices(vk_instance, &count, NULL))) < 0)
{
@ -1640,6 +1643,12 @@ static HRESULT vkd3d_select_physical_device(struct vkd3d_instance *instance,
if (i == device_index)
device = physical_devices[i];
if (filter && !strstr(device_properties.deviceName, filter))
{
INFO("Device %s doesn't match filter %s, skipping.\n", device_properties.deviceName, filter);
continue;
}
if (device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU && !dgpu_device)
dgpu_device = physical_devices[i];
else if (device_properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU && !igpu_device)