-
Notifications
You must be signed in to change notification settings - Fork 177
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
Don't accumulate damage from surfaces below opaque surfaces #864
Comments
Seems like there was an attempt to do this, I wonder what went wrong: wayfire/src/output/render-manager.cpp Lines 1199 to 1202 in a31d9d7
|
@myfreeweb That code avoids repainting below opaque surfaces. However, at this point the damage is already scheduled. The issue however is about ignoring client damage as a whole if it comes from below an opaque surface. For example, you have an animated background and fullscreen client on top. Currently, we'd repaint only the fullscreen client, however, we shouldn't repaint at all unless the fullscreen client itself commits. |
Ah, hm, seems like that does work now. I remember somehow seeing full screen damage for my wallpaper plugin when moving an opaque window, but now it's clearly only thin rectangles where it's actually needed. Maybe it was just some mistake on my end. But in the "animated background and fullscreen client on top" situation, why wouldn't that code essentially reduce the actually-repainted damage area to zero? |
That code is executed top-down with the total damage already computed. |
Fixes #864 The optimization is hidden behind a flag for now, needs more testing.
Fixes #864 The optimization is hidden behind a flag for now, needs more testing.
Currently, wayfire does unnecessary repainting, behind surface opaque regions. This can be seen by placing a surface with opaque region set, in front of a client with constant damage like video playback, with showrepaint plugin enabled.
Actual: Wayfire repaints the entire surface damage region, even if opaque surfaces that are not being damaged exist in front/above.
Expected: Wayfire does not repaint the opaque regions (except for valid surface damage) of surfaces that are in front of other damage behind/under it.
The text was updated successfully, but these errors were encountered: