https://bugs.winehq.org/show_bug.cgi?id=45430
Bug ID: 45430 Summary: Improve diagnostics of 'D3DxxCreateDevice' failures for warp driver type (D3D10_DRIVER_TYPE_WARP or D3D_DRIVER_TYPE_WARP) Product: Wine Version: 3.11 Hardware: x86-64 OS: Linux Status: NEW Severity: enhancement Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
for improving diagnostics of unsupported drivers with 'D3DxxCreateDevice'.
While trying out some games which support the DX11 Warp software renderer on Windows platforms (https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/directx-wa...) using command line, the output was not super useful. In fact it's a bit inconsistent.
'D3D10CreateDevice1' -> handles 'D3D10_DRIVER_TYPE_WARP' explicitly in fixme trace
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/d3d10_1/d3d10_1_main....
'D3D11CreateDevice' -> default (error) case, only enum value printed
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/d3d11/d3d11_main.c#l1...
'D3D10CreateDevice' -> default (error) case, only enum value printed
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/d3d10/d3d10_main.c#l3...
--- snip --- ... 0030:Ret ucrtbase.memcpy() retval=0022ea88 ret=140e19601 0030:Call d3d11.D3D11CreateDeviceAndSwapChain(00000000,00000005,00000000,00000000,0022f3d8,00000003,00000007,0022f3f0,2127fb38,2127fb30,2127fb40,0022f3d0) ret=140b91f80 0030:Call dxgi.CreateDXGIFactory1(7f270d9df180,0022edf0) ret=7f270d975d1e 0030:trace:dxgi:CreateDXGIFactory1 iid {7b7166ec-21c7-44ae-b21a-c9ae321ae369}, factory 0x22edf0. ... 0030:trace:d3d:wined3d_create Created wined3d object 0xc6c620. 0030:Ret wined3d.wined3d_create() retval=00c6c620 ret=7f270d905c55 0030:Call wined3d.wined3d_mutex_unlock() ret=7f270d905c74 0030:Ret wined3d.wined3d_mutex_unlock() retval=00000000 ret=7f270d905c74 0030:trace:dxgi:dxgi_factory_create Created factory 0xc6c5d0. 0030:trace:dxgi:dxgi_factory_QueryInterface iface 0xc6c5d0, iid {7b7166ec-21c7-44ae-b21a-c9ae321ae369}, out 0x22edf0. 0030:trace:dxgi:dxgi_factory_AddRef 0xc6c5d0 increasing refcount to 2. 0030:trace:dxgi:dxgi_factory_Release 0xc6c5d0 decreasing refcount to 1. 0030:Ret dxgi.CreateDXGIFactory1() retval=00000000 ret=7f270d975d1e 0030:fixme:d3d11:D3D11CreateDevice Unhandled driver type 0x5. ... 0030:Ret d3d11.D3D11CreateDeviceAndSwapChain() retval=80004005 ret=140b91f80 ... --- snip ---
It later crashes, likely due to missing WARP driver support.
Having the unhandled WARP driver type explicitly "stringified" could improve the situation of diagnosing end user problems. I actually had to look up the enum value.
Might be a bit off-topic to this ticket: Is Direct3D 11 WARP driver support ever considered in Wine? I guess getting DX11+ feature support with hardware drivers to work perfectly (tm) is much higher priority. The MS website (https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/directx-wa...) lists some interesting use-cases though.
Regards