From 6cb74deed485ed98d6f57f5977c4e3c4b6f57713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Tue, 23 Aug 2022 08:28:29 -0700 Subject: [PATCH] VK: Fixed GPU selection. --- src/renderer_vk.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 8145c4e2e..cfb229d1f 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -1385,7 +1385,8 @@ VK_IMPORT_INSTANCE BX_TRACE("\t API version: %d.%d.%d" , VK_API_VERSION_MAJOR(pdp.apiVersion) , VK_API_VERSION_MINOR(pdp.apiVersion) - , VK_API_VERSION_PATCH(pdp.apiVersion) ); + , VK_API_VERSION_PATCH(pdp.apiVersion) + ); BX_TRACE("\t API variant: %d", VK_API_VERSION_VARIANT(pdp.apiVersion) ); BX_TRACE("\tDriver version: %x", pdp.driverVersion); BX_TRACE("\t VendorId: %x", pdp.vendorID); @@ -1400,11 +1401,21 @@ VK_IMPORT_INSTANCE && (BGFX_PCI_ID_NONE == g_caps.vendorId || pdp.vendorID == g_caps.vendorId) && (0 == g_caps.deviceId || pdp.deviceID == g_caps.deviceId) ) { - if (BX_ENABLED(BGFX_CONFIG_PREFER_DISCRETE_GPU) && (pdp.deviceType != VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) ) + if (pdp.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU + || pdp.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU) { fallbackPhysicalDeviceIdx = ii; } - else + + physicalDeviceIdx = ii; + } + else + { + if (pdp.deviceType == VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU) + { + fallbackPhysicalDeviceIdx = ii; + } + else if (pdp.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU) { physicalDeviceIdx = ii; } @@ -1417,10 +1428,10 @@ VK_IMPORT_INSTANCE for (uint32_t jj = 0; jj < pdmp.memoryTypeCount; ++jj) { BX_TRACE("\t%3d: flags 0x%08x, index %d" - , jj - , pdmp.memoryTypes[jj].propertyFlags - , pdmp.memoryTypes[jj].heapIndex - ); + , jj + , pdmp.memoryTypes[jj].propertyFlags + , pdmp.memoryTypes[jj].heapIndex + ); } BX_TRACE("\tMemory heap count: %d", pdmp.memoryHeapCount); @@ -1429,10 +1440,10 @@ VK_IMPORT_INSTANCE char size[16]; bx::prettify(size, BX_COUNTOF(size), pdmp.memoryHeaps[jj].size); BX_TRACE("\t%3d: flags 0x%08x, size %10s" - , jj - , pdmp.memoryHeaps[jj].flags - , size - ); + , jj + , pdmp.memoryHeaps[jj].flags + , size + ); } bx::memCopy(&physicalDeviceExtensions[ii][0], &s_extension[0], sizeof(s_extension) );