GskInsetShadowNode with blur and rounded corners is broken when clipped
clip {
clip: 10 0 80 100;
child: inset-shadow {
dx: 0;
dy: 0;
color: red;
blur: 10;
outline: 0 0 100 100 / 5;
}
}
On one machine (Fedora 38, Intel graphics), I get completely empty output, but notice the correct output on the right:
On another machine (Windows 10, probably Intel graphics as well), I get the full unclipped square (and the previews on the right are still correct!):
Things work as expected if I drop the rounded corners (/ 5
in outline
).
I can see that gsk_gl_render_job_visit_blurred_inset_shadow_node ()
has a special code path for handling rounded corners, where it pushes another clip if the outline is not rectilinear. Perhaps that interacts badly with clips up the stack.
This is on GTK main at the time of filing (2da9d586 to be exact). There are no warnings, and a quick Valgrind check doesn't point at anything either.
Edited by Sergey Bugaev