Open lukiiimohh opened 1 year ago
it's an issue with the xrender
backend. you may try the glx
one but it probably won't work well in the vm.
What's the parameter for calling glx instead of xrender, for example 'rounded-corners: ' I suppose it is 'backend: glx'?
backend = "glx";
in the configuration file or --backend=glx
in the command line arguments.
@yshui, an insight for you: this is the same issue as #342 when we're adding transparent parts to a non-transparent window (that has 24-bit depth). the fix for the #342 is very specific so i can't easily expand it to cover this issue. maybe you will think of a way to fix this gracefully. here is the related code: https://github.com/yshui/picom/blob/23a29470e50ef1d68b9c99186b069659a793184c/src/backend/backend.c#L435-L483
Literally that backend crashed my entire system, I needed tty to restablish the file of picom.conf. So, obviously that is not working
duplicate of #808 ?
no, because in my case everything works well except the black corners ONLY in firefox
i think we just forgot to enable alpha blending in some cases, maybe for windows with 24-bit visuals.
duplicate of #808 ?
i don’t think so.
@absolutelynothelix The fix for #342 is here: https://github.com/yshui/picom/pull/650 :wink:
I agree that this is most likely an issue with 24-bit visuals (as it only happens to some windows). Can we reuse decouple_image()
when applying the rounded corners to enforce a 32-bit visual?
So I can do something to solve it, or just wait for you guys!?
@tryone144, ikr. i saw the decouple_image
function and the comment inside, i've just traced the logic to the beginning (the snippet i've provided). the problem is that decouple_image
is not a publicly available backend operation and it's only used when doing the IMAGE_OP_APPLY_ALPHA
operation so i can't think of an elegant fix for this issue. in theory, you may do the IMAGE_OP_APPLY_ALPHA
operation without changing opacity so it will just force the pixmap to have 32-bit depth, but it's more a hack rather than a proper fix.
So I can do something to solve it, or just wait for you guys!?
unfortunately, no. it's the xrender backend's issue, glx backend doesn't work for you and egl won't work at all (according to the provided diagnostic information).
i think we just forgot to enable alpha blending in some cases, maybe for windows with 24-bit visuals.
@yshui pretty close. We reused a potentially only 24-bit visual for the temporary picture to which we applied the rounded-corners mask. This made them obviously not transparent. :smile:
@absolutelynothelix no need for such a big change. :wink: Since we already create a temporary picture, we can just force it to a 32-bit visual.
So, then, notify me when it is fixed, thanks for the work, keep up guys!
Platform
Arch Linux
GPU, drivers, and screen setup
VMWare Drivers
Environment
I use kitty, firefox-gnome-theme, and bspwm
picom version
vgit-ce46b
Diagnostic
Configuration:
Expected behavior
This type of corners
Current Behavior
Works only in kitty, firefox is not working see this image. (I put 100 on rounded corners just for you to see what's happening)
Other details
Only happens in firefox