Xpra-org / xpra

Persistent remote applications for X11; screen sharing for X11, MacOS and MSWindows.
https://xpra.org/
GNU General Public License v2.0
1.98k stars 169 forks source link

shadow desktop scaling broken for scaling < 100% #4324

Closed Lanchon closed 3 months ago

Lanchon commented 3 months ago

Describe the bug shadow desktop scaling is broken when using --desktop-scaling < 100%. this issue is worked-around if --opengl=off is specified (but then bug https://github.com/Xpra-org/xpra/issues/4323 hits, so workaround is also unusable).

what happens when scaling < 100% is used is:

To Reproduce Steps to reproduce the behavior:

  1. server command: none
  2. client command: xpra shadow ssh:XXX:0 --desktop-scaling=70%
  3. specific action to trigger the bug: none

System Information (please complete the following information):

Additional context on both sides: Desktop: Cinnamon v: 6.2.9 tk: GTK v: 3.24.41 wm: Muffin vt: 7 dm: LightDM v: 1.30.0 standard X11 session

client: Graphics: Intel Alder Lake-P GT2 [Iris Xe Graphics] vendor: Lenovo driver: i915 v: kernel arch: Gen-12.2

totaam commented 3 months ago

Can you try running version LTS 5.x instead? I have seen some corruption with opengl and scaling, bisected down to 8b73c2b181ec45eb2b79fcfab511da60a84067ed - this is one of the v6 key features, the v5.x branch should not be affected.

totaam commented 3 months ago

The fix is in 32d9008ce5be5071b30efaeca2e00ad53404ce40 + 617aa2e92bb6b10ed2e8b16c21b4341a77913a93 + 342dfa0bec7e6d16d3b277364bb0f52b160a209f

Works for me, this will be included in v6.1.2

Lanchon commented 3 months ago

Can you try running version LTS 5.x instead?

i downgraded only the client. opengl works but it downscales using nearest neighbor (no bilinear), so not really useful.

The fix is in 32d9008 + 617aa2e + 342dfa0

thanks! i will test once the fix is released. i'll come back to this issue in case of trouble.

totaam commented 3 months ago

i downgraded only the client. opengl works but it downscales using nearest neighbor (no bilinear), so not really useful.

In your case, the downscaling is done server-side, it should be possible to teach the module to use a different sampling algorithm when downscaling. Normally, this is driven by the speed option alone: https://github.com/Xpra-org/xpra/blob/474343fe09bf67ed7a73495e916af7e1c7028d2e/xpra/codecs/libyuv/converter.pyx#L183-L188

Another (less optimal) option would be to tell the server to not downscale before compression and let the opengl client apply the linear sampling: https://github.com/Xpra-org/xpra/blob/474343fe09bf67ed7a73495e916af7e1c7028d2e/xpra/opengl/backing.py#L566-L572


i will test once the fix is released.

I am afraid that I have found some more issues, so it could take a while.

Lanchon commented 3 months ago

for now im using v5.0.9-r0 client in non-GL mode against current 6.x server. it works fine like this (bilinear), so for me there is no need to debug the downscaling filtering in GL mode (unless you want to).

thanks again!

totaam commented 3 months ago

FYI: I have created a ticket for improving the scaling filters based on the window's content-type: #4326