Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
memset( &devmode->dmDriverExtra, 0, devmode->dmSize - offsetof(DEVMODEW, dmDriverExtra) );
if (index == ENUM_REGISTRY_SETTINGS) ret = read_registry_settings( adapter_path, devmode ); - else ret = user_driver->pEnumDisplaySettingsEx( device_name, index, devmode, flags ); + else ret = user_driver->pEnumDisplaySettingsEx( device_name, ENUM_CURRENT_SETTINGS, devmode, flags ); + + if (index != ENUM_CURRENT_SETTINGS && index != ENUM_REGISTRY_SETTINGS && ret) + { + for (ret = FALSE, mode = modes; mode && mode->dmSize; mode = NEXT_DEVMODEW(mode)) + { + if (!(flags & EDS_ROTATEDMODE)) + { + if ((mode->dmFields & DM_DISPLAYORIENTATION) != (devmode->dmFields & DM_DISPLAYORIENTATION)) continue;
All available display modes and the current display modes must have DM_DISPLAYORIENTATION. So you can simply this condition. Don't forget to set DM_DISPLAYORIENTATION for the current mode from other drivers, which can be a separate patch. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/551#note_5241