https://bugs.winehq.org/show_bug.cgi?id=51312
Bug ID: 51312 Summary: dxgi:dxgi: Wrong screen mode order on AMD GPUs (cw-rx460) Product: Wine Version: 6.10 Hardware: x86-64 OS: Windows Status: NEW Severity: normal Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com
dxgi:dxgi gets failures of the form:
https://test.winehq.org/data/patterns.html#dxgi:dxgi
dxgi.c:1460: Test failed: Mode 3: Modes should have been sorted, refresh rate 59.940060 < 85.000000. dxgi.c:1460: Test failed: Mode 22: Modes should have been sorted, refresh rate 59.940060 < 85.000000. dxgi.c:1460: Test failed: Mode 55: Modes should have been sorted, refresh rate 59.940060 < 75.000000.
* These failures happen on all available Windows versions (8.1 to 10 2009). * They also happen regardless of the Radeon driver version: 19.11.3 to 21.4.1. * They don't happen on machines with any other GPU (cw-gtx560 and QEmu VMs). * They also happen systematically so are not probably caused by a threading issue. * So this really looks like a Radeon-specific behavior.
The failing test was introduced by the following commit:
commit eb2028fa90c41d3b7b8b4f924cd86059c5ba1e0d Author: Andrew Eikum aeikum@codeweavers.com AuthorDate: Mon Oct 28 16:59:18 2019 +0330
dxgi: Sort reported output modes.
Sekiro: Shadows Die Twice depends on this for its mode switching.
Signed-off-by: Andrew Eikum aeikum@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
Does the application crash on Windows machines with an AMD GPU? Or does the Radeon driver return the wrong order only on some GPUs? If the application does not crash maybe our order specification is a bit too strict?
Given that an application depends on this we probably want Wine to respect the ordering. Just add a broken()?
https://bugs.winehq.org/show_bug.cgi?id=51312
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Regression SHA1| |eb2028fa90c41d3b7b8b4f924cd | |86059c5ba1e0d Keywords| |source, testcase
https://bugs.winehq.org/show_bug.cgi?id=51312
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |aeikum@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=51312
--- Comment #1 from Andrew Eikum aeikum@codeweavers.com --- I'll see if I can scare up an AMD Windows box to take a look at, but I think just removing the refresh rate test may be an appropriate fix.
https://bugs.winehq.org/show_bug.cgi?id=51312
--- Comment #2 from Andrew Eikum aeikum@codeweavers.com --- On a system with an RX 560 and AMD Drivers 22.5.1, I don't see this test failure. DXGI reports only one resolution that has two different rates, 800x600@56 and 800x600@60, and reports them in that order.
Maybe it's something to do with the monitor?
https://bugs.winehq.org/show_bug.cgi?id=51312
--- Comment #3 from François Gouget fgouget@codeweavers.com --- Created attachment 72362 --> https://bugs.winehq.org/attachment.cgi?id=72362 Dump the modes returned by IDXGIOutput_GetDisplayModeList()
The supported modes (including frequencies) definitely depend on the monitor. Their order however seems more related to the graphics card / driver.
cw-gtx560 and cw-rx460 are both hooked up to the KVM which may support more modes and refresh frequencies than regular (particularly laptop) monitors. I attached a patch to dump the modes returned by IDXGIOutput_GetDisplayModeList() and will provide the results for cw-rx460-1909 (I'll also attach the cw-gtx560-1909 results for the same KVM when I can reboot it).
https://bugs.winehq.org/show_bug.cgi?id=51312
--- Comment #4 from François Gouget fgouget@codeweavers.com --- Created attachment 72363 --> https://bugs.winehq.org/attachment.cgi?id=72363 GetDisplayModeList() result on cw-rx460-1909
https://bugs.winehq.org/show_bug.cgi?id=51312
--- Comment #5 from François Gouget fgouget@codeweavers.com --- Created attachment 72365 --> https://bugs.winehq.org/attachment.cgi?id=72365 GetDisplayModeList() result on cw-gtx56060-1909
So although they are connected to the same KVM the two machines list pretty different modes.
* rx460-only: @59.94 refresh rate (which, afaiu, is supposed to be the same as 60 Hz and is related to NTSC) * rx460-only: 720x400 resolution * gtx560-only: 1280x768 resolution * gtx560-only: 1280x800 resolution * gtx560-only: 1280x960 resolution * gtx560-only: somewhat random refresh rates: for 60 Hz we get 59.997, 60, 60.004, 60.02, 60.317
I suspect that AMD tacks the 59.94 refresh rate at the end because it's a legacy refresh rate, maybe only needed by some video editing software.