<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hej Keith,<br>
</p>
I've been working on this, too, for the XWayland case. It's only a
proof of concept, but I tested it successfully with a couple of
fullscreen apps (read: games).<br>
When asking people in the IRC channel, the general consensus seemed
to be to go for option one, by making use of viewporter wayland
protocol, which is why implemented it for gnomes mutter (see 1,
won't make it before gnome 3.32).<br>
<br>
There are also patches to expose all modes send by the compositor in
XWayland ( see 2) and to make XWayland use randr 1.2 hooks, which
makes things quite a bit easier (see 3).<br>
<br>
I can post my WIP work (will have to clean it up and rebase to
current master).<br>
That said, I'm very interested to see this go forward and am very
willing to help :)<br>
<br>
Best regards,<br>
Robert<br>
<br>
1) <a class="moz-txt-link-freetext" href="https://gitlab.gnome.org/GNOME/mutter/merge_requests/121">https://gitlab.gnome.org/GNOME/mutter/merge_requests/121</a><br>
2) <a class="moz-txt-link-freetext" href="https://patchwork.freedesktop.org/patch/191035/">https://patchwork.freedesktop.org/patch/191035/</a><br>
3) <a class="moz-txt-link-freetext" href="https://bugs.freedesktop.org/show_bug.cgi?id=104644">https://bugs.freedesktop.org/show_bug.cgi?id=104644</a><br>
<br>
<div class="moz-cite-prefix">On 27.08.2018 08:24, Keith Packard
wrote:<br>
</div>
<blockquote type="cite" cite="mid:87o9dominq.fsf@keithp.com">
<pre wrap="">
I'm doing a bit of work to help support applications that want to run at
a small fixed size. The 'usual' way to make them visible on our modern
desktops is to flip video modes, but that means everything runs at low
resolution, plus you get the adventure of switching modes, which can
take a long time in complex monitor environments.
<a class="moz-txt-link-freetext" href="https://keithp.com/blogs/window-scaling/">https://keithp.com/blogs/window-scaling/</a>
The basic plan is to make the size-as-seen-by-the-owner different from
the size seen by the rest of the system, and then to either have the
server scale the output or get the compositing manager to do it.
This solves one of the main use cases for 'composite redirection' that I
talked about a long time ago and could never get to work. Restricting
the problem space to simple application scaling, instead of arbitrary
transformation, meant that I could place the input event scaling right
inside the X server, allowing it to be synchronous, instead of
attempting to have some external agent perform the transformation.
When there's no compositing manager running, the window is placed into
automatic compositing mode and the X server performs the necessary
output scaling.
When there is a compositing manager running, I've thought of three
possible ways to make it work:
1. The compositing manager can be extended to handle the scaling
operation. This seems like the best plan; just a single copy from
the native application size to the scanout buffer.
2. Alternatively, another window might be interposed between the scaled
client and the compositor to provide a place for the X server to do
the scaling; although that would naturally introduce a bunch more
expense and delay in the process.
3. It would also be possible to have the X server provide a scaled
version of the window pixmap to the compositing manager until it
advertised support for built-in scaling. Same rendering delay as
with an interposed window, but no changes required in the
environment, although a bit of work to be done in the X server. That
might be a good transition plan so that things didn't break when you
started a compositing manager without the required support.
I'm wondering if there are others who would find this useful, and if
some of them might help get this into reasonable shape. Suggestions are
welcome!
</pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
<a class="moz-txt-link-abbreviated" href="mailto:xorg-devel@lists.x.org">xorg-devel@lists.x.org</a>: X.Org development
Archives: <a class="moz-txt-link-freetext" href="http://lists.x.org/archives/xorg-devel">http://lists.x.org/archives/xorg-devel</a>
Info: <a class="moz-txt-link-freetext" href="https://lists.x.org/mailman/listinfo/xorg-devel">https://lists.x.org/mailman/listinfo/xorg-devel</a></pre>
</blockquote>
<br>
</body>
</html>