Skip to content

[indirect display driver (IDD)] Question: dynamic resolution support and selection at runtime #1400

Description

@z0Kng

I have an IDD (non remote) that is supposed to support and select new resolutions at runtime. The idea is that the user resizes their local window, the IDD receives the new resolution, which, of course, can be any value and sets it. But i still want to keep a few defaul resolution e.g: 1280x720, 1600x1200, 1920x1080... so the user can select those manually. So my two options to archive this would be:

  1. Hot Plug the monitor with a new preferred resolution in the EDID. But every hot plug seems to create new registry entries. Windows automatically sets the preferred resolution for a while until there are too many registry entries; then a random resolution is set. Another downside is that since the monitor is gone for a short amount, a msft display is enabled and open application windows get thrown around.
Image
  1. Use IddCxMonitorUpdateModes to update the modes at runtime and use a userspace app to select the resolution. I never got this properly to work. If I call IddCxMonitorUpdateModes with the list of old(static) and the new resolution, the monitor goes black for a blink and then is back. But the new resolution does not appear in the windows display settings menu. Also, if I try to set the resolution with SetDisplayConfig, I can only set the sourceMode and not targetMode otherwise the function throws an error. But it seems I also have to set it to targetMode, otherwise the image is distorted. Am I missing something here? The only way this somewhat works is by only sending the preferred resolution, but not the static ones.
    I assume that the second option makes more sense. if it works?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions