Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
if (!adapter->mode_count) continue;
mode->dmSize = sizeof(DEVMODEW);
if (devname)
{
if (!wcsicmp( devname, adapter->dev.device_name ))
memcpy( mode, fullmode, mode->dmSize + fullmode->dmDriverExtra );
else
{
if (!(ret = user_driver->pCurrentDisplaySettingsEx( adapter->dev.device_name, mode ))) goto done;
if (!(full = find_display_mode( adapter->modes, mode ))) goto done;
mode->dmDriverExtra = full->dmDriverExtra;
memcpy( mode + 1, full + 1, full->dmDriverExtra );
}
}
else if (!(ret = read_registry_settings( adapter->config_key, mode ))) goto done;
You removed the get_full_mode() code in winex11.drv's apply_display_settings(). This means you lost the dmDriverExtra for modes read from the registry. You still need to call find_display_mode() for modes from the registry.