Redirect Intel GPUs to Vulkan on auto graphics API mode. (#1491)
Some checks failed
validate-internal / build (push) Failing after 2s

This commit is contained in:
Skyth (Asilkan) 2025-03-30 19:06:03 +03:00 committed by GitHub
parent f7c823eeaf
commit 8370312454
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1712,6 +1712,8 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry)
#ifdef UNLEASHED_RECOMP_D3D12
if (interfaceFunction == CreateD3D12Interface)
{
bool redirectToVulkan = false;
if (deviceDescription.vendor == RenderDeviceVendor::AMD)
{
// AMD Drivers before this version have a known issue where MSAA resolve targets will fail to work correctly.
@ -1719,11 +1721,23 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry)
// just work incorrectly otherwise and result in visual glitches and 3D rendering not working in general.
constexpr uint64_t MinimumAMDDriverVersion = 0x1F00005DC2005CULL; // 31.0.24002.92
if ((Config::GraphicsAPI == EGraphicsAPI::Auto) && (deviceDescription.driverVersion < MinimumAMDDriverVersion))
{
g_device.reset();
g_interface.reset();
continue;
}
redirectToVulkan = true;
}
else if (deviceDescription.vendor == RenderDeviceVendor::INTEL)
{
// Intel drivers on D3D12 are extremely buggy, introducing various graphical glitches.
// We will redirect users to Vulkan until a workaround can be found.
if (Config::GraphicsAPI == EGraphicsAPI::Auto)
redirectToVulkan = true;
}
// Allow redirection to Vulkan only if we are not retrying after a crash,
// so the user can at least boot the game with D3D12 if Vulkan fails to work.
if (!graphicsApiRetry && redirectToVulkan)
{
g_device.reset();
g_interface.reset();
continue;
}
// Hardware resolve seems to be completely bugged on Intel D3D12 drivers.