Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows→Windows connection: unwanted window transparency #3633

Closed
karlkleinpaste opened this issue Oct 2, 2022 · 6 comments
Closed

Windows→Windows connection: unwanted window transparency #3633

karlkleinpaste opened this issue Oct 2, 2022 · 6 comments
Labels
bug Something isn't working shadow win32 MS Windows OS

Comments

@karlkleinpaste
Copy link

Windows to Windows testing. r32011 at both ends.
xpra shadow ssh://winhost from either a cmd window or cygwin bash.

The client window opens and operates as expected. However, it keeps fading into transparency.

As long as the mouse stays in motion, the window stays opaque. But as soon as the mouse stops, the client window fades into transparency so as to see the client machine's desktop. It will just about disappear completely. Move the mouse again, and it goes immediately opaque, until the mouse stops moving. The obvious workaround is to keep jiggling the mouse, but that's obviously not a real solution.

@karlkleinpaste karlkleinpaste added the bug Something isn't working label Oct 2, 2022
@totaam totaam added shadow win32 MS Windows OS labels Oct 2, 2022
@totaam
Copy link
Collaborator

totaam commented Oct 3, 2022

However, it keeps fading into transparency.

I've left it running for a while (win10 to win10), no sign of the window going transparent here.
I have no idea what is going on.

You could try:

  • running with XPRA_ALPHA=0
  • running with -d metadata - I doubt that we're somehow updating the window's opacity, but who knows

If that doesn't show anything useful.. perhaps run both client and server with -d win32, maybe that will show something.

@karlkleinpaste
Copy link
Author

I was beginning to experiment with -d metadata, when I noticed that xpra_cmd was giving the warning:

Warning: vendor 'Intel' is greylisted,
  you may want to turn off OpenGL if you encounter bugs

Huh. Howzaboutthat.

Both Win10 machines in question (client & server) are low-end devices. The server has a Radeon iGPU, the client has an Intel UHD iGPU. And apparently you've noticed funniness about Intel GPUs in the past, so as to give this warning.

I added --opengl=no and the transparency silliness stopped entirely.

I don't know if this is a further bug you want to continue to chase, or if it's just considered documented in the sense of the warning above. I'll leave it to you to decide whether to chase down the problem further or simply close it.

totaam added a commit that referenced this issue Oct 10, 2022
@totaam
Copy link
Collaborator

totaam commented Oct 10, 2022

We have an entire section dedicated to that: https://github.com/Xpra-org/xpra/blob/master/docs/Usage/Client-OpenGL.md#intel-driver-issues
(I have added a link to this ticket there)

@totaam totaam closed this as completed Oct 10, 2022
@totaam
Copy link
Collaborator

totaam commented Oct 10, 2022

I am re-opening this because I think I know the cause.

It's an Intel OpenGL bug alright, but:

@totaam totaam reopened this Oct 10, 2022
@totaam
Copy link
Collaborator

totaam commented Oct 11, 2022

@karlkleinpaste can you reproduce the problem with -d compress on the server and -d opengl on the client?
I would like to see what pixel format the server is sending. (it should be BGRX - that's what I get when I test)
Depending on the quality setting used, the opengl client should be displaying it using either:

  • for lower quality settings: gl_paint_planar(0, 'webp', webp.YUVImageWrapper(YUV420P:(0, 0, 1600, 1200, 24):3_PLANES), ...
  • for higher quality settings: RGB update at (0,0) size 1600x1200 (7680000 bytes) to 1600x1200, using GL zerocopy:memoryview format=RGB / UNSIGNED_BYTE to internal format=RGB8

In both cases, we don't upload any alpha channel, so the window should remain 100% opaque.

The only code path that I am unable to test without having a native MS Windows system to test on is:

if WIN32:
#these checks can't be forced ('opengl_force')
#win32 opengl just doesn't do alpha or undecorated windows properly:
if override_redirect:
return False
if metadata.boolget("has-alpha", False):
return False
if not metadata.boolget("decorations", True):
return False
hbl = (self.headerbar or "").lower().strip()
if hbl not in FALSE_OPTIONS:
#any risk that we may end up using headerbar,
#means we can't enable opengl
return False
return True

(the only check that could possibly trigger from this chunk is the window has-alpha flag which we can see with -d metadata - it should be False for shadow servers IIRC)

@totaam
Copy link
Collaborator

totaam commented Jul 4, 2023

Not heard back.

@totaam totaam closed this as not planned Won't fix, can't repro, duplicate, stale Jul 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working shadow win32 MS Windows OS
Projects
None yet
Development

No branches or pull requests

2 participants