Give outputs A and B of arbitrary differing resolutions, if you want to clone A to B then B will simply display a potentially scaled and letterboxed image of A. To achieve this you would simply set B's logical position and logical size to that of A.
In Xorg you can already do something like that:
xrandr --output B -pos (A.X)x(A.Y) --scale-from (A.WIDTH)x(A.HEIGHT)
So then you have arbitrary cloning of any display to any display even if they have different physical resolutions.
What's missing in Mir right now is the API for setting the arbitrary logical size for an output. Although our default GL renderer already supports arbitrary logical sizes it might still be missing letterbox support to avoid distortion.
OK, I've got a basic plan for this...
Give outputs A and B of arbitrary differing resolutions, if you want to clone A to B then B will simply display a potentially scaled and letterboxed image of A. To achieve this you would simply set B's logical position and logical size to that of A.
In Xorg you can already do something like that: x(A.HEIGHT)
xrandr --output B -pos (A.X)x(A.Y) --scale-from (A.WIDTH)
So then you have arbitrary cloning of any display to any display even if they have different physical resolutions.
What's missing in Mir right now is the API for setting the arbitrary logical size for an output. Although our default GL renderer already supports arbitrary logical sizes it might still be missing letterbox support to avoid distortion.