User reports already indicate that running Qt Quick with QRhi in virtual machines is not straightforward: QTBUG-78648 for example reports that D3D on Win10 in VMWare on macOS does not work. (perhaps it should use the sw rasterizer instead, as VMWare has no DX11 support, it seems?)
As the use of virtual machines is (unfortunately) widespread among customers too, we must make sure we can run:
- OpenGL on Linux and Windows virtual machines running on various hosts
- D3D11 on Windows virtual machines running on various hosts
- Metal on macOS virtual machines
Where applicable (e.g. D3D), we may want to introduce logic to automatically switch to the software implementation. That way users running apps with the rhi and d3d in vmware and others will not need to fiddle with environment variables like QT_D3D_ADAPTER_INDEX or QSG_RHI_PREFER_SOFTWARE_RENDERER.
However, watch out for what's described in the Remarks section of https://docs.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgiadapter-checkinterfacesupport : creating a ID3D11Device does not mean D3D11 works. As QTBUG-78648 shows, the fact that D3D11 is not supported only becomes apparent when trying to create an actual ID3D11 resource, such as a vertex shader. So correctly recognizing that D3D11 is not supported may be trickier than expected.