From 0bb66be5cb1214aafbc422b203b8a443cf50297a Mon Sep 17 00:00:00 2001 From: Joseph Mattiello Date: Sun, 1 Nov 2026 17:33:29 -0500 Subject: [PATCH] fix(windows): reject the Basic Render Driver by vendor id and name, not only by flag The hosted ARM64 runner enumerates "Microsoft Basic Render Driver" through IDXGIFactory1 without DXGI_ADAPTER_FLAG_SOFTWARE, so the probe accepted it as hardware and the retry ran on WARP again. Also treat Microsoft's vendor id 0x1414 and a description containing "Basic Render" as software. Co-Authored-By: Claude Fable 5.1 --- app/src/platform/software_gl_windows.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/platform/software_gl_windows.cpp b/app/src/platform/software_gl_windows.cpp index f09ad41c..c6366ec8 100644 --- a/app/src/platform/software_gl_windows.cpp +++ b/app/src/platform/software_gl_windows.cpp @@ -39,9 +39,15 @@ std::wstring hardwareD3D12Adapter() { IDXGIAdapter1* adapter = nullptr; for (UINT i = 0; found.empty() && factory->EnumAdapters1(i, &adapter) != DXGI_ERROR_NOT_FOUND; ++i) { DXGI_ADAPTER_DESC1 desc = {}; - if (SUCCEEDED(adapter->GetDesc1(&desc)) && !(desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) && - SUCCEEDED(createDevice(adapter, D3D_FEATURE_LEVEL_11_0, __uuidof(ID3D12Device), nullptr))) - found = desc.Description; + // DXGI_ADAPTER_FLAG_SOFTWARE is not reliably set on the Basic Render + // Driver (the hosted ARM64 runner enumerates it without the flag), so + // also reject Microsoft's vendor id 0x1414 and the name itself. + if (SUCCEEDED(adapter->GetDesc1(&desc))) { + const bool software = (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) || desc.VendorId == 0x1414 || + std::wcsstr(desc.Description, L"Basic Render") != nullptr; + if (!software && SUCCEEDED(createDevice(adapter, D3D_FEATURE_LEVEL_11_0, __uuidof(ID3D12Device), nullptr))) + found = desc.Description; + } adapter->Release(); adapter = nullptr; }