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 if (index != ENUM_CURRENT_SETTINGS) ret = user_driver->pEnumDisplaySettingsEx( device_name, index, devmode, flags ); + /* if EDS_ROTATEDMODE is not specified, enumerate modes with the same display orientation as current */ + else if (index != ENUM_CURRENT_SETTINGS && (flags & EDS_ROTATEDMODE)) ret = TRUE; else ret = user_driver->pGetCurrentDisplaySettings( device_name, devmode );
It's probably alright, but with this patch, we're touching the user-specified devmode when index > available modes. And maybe it's time to change devmode to be some thing more appropriate, like a current_mode/registry_mode pointer instead of devmode or mode everywhere. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/551#note_7848