On Fedora 22 with SNA I encountered the following rendering artifacts when used emerald decorator:
graphics: Card: Intel Haswell-ULT Integrated Graphics Controller
Display Server: Fedora X.org 117.4 drivers: intel (unloaded: fbdev,vesa)
GLX Renderer: Mesa DRI Intel Haswell Mobile
GLX Version: 3.0 Mesa 10.6.9 (git-8957b69)
It seems the problem was caused by the following commit:
It works correctly in UXA. It works in SNA if I use git snapshot before the above mentioned commit or even with the latest git head with the reverted above mentioned commit.
It also works correctly with different drivers (e.g. nvidia).
I think it should work the same in UXA/SNA, thus filling this bug.
Downstream Fedora bugzilla:
That's quite peculiar. The blitter should be quite capable and is well used...
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 1c420a7..e896816 100644
@@ -54,7 +54,7 @@
#define NO_COMPOSITE 0
#define NO_COMPOSITE_SPANS 0
#define NO_COPY 0
-#define NO_COPY_BOXES 0
+#define NO_COPY_BOXES 1
#define NO_FILL 0
#define NO_FILL_BOXES 0
#define NO_FILL_ONE 0
Will force all of these paths through the blitter. Would also be good to check with Option "AccelMethod" "blt". If you could undo the small_copy() one by one to identify the path that fails, that would also be useful. Once you have that,
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 3341851..1dccc65 100644
@@ -1087,8 +1087,12 @@ sna_pixmap_create_scratch(ScreenPtr screen,
static unsigned small_copy(const RegionRec *region)
- if ((region->extents.x2 - region->extents.x1)*(region->extents.y2 - regi
+ if ((region->extents.x2 - region->extents.x1)*(region->extents.y2 - regi
+ DBG(("%s: region:%dx%d\n", __FUNCTION__,
+ (region->extents.x2 - region->extents.x1),
+ (region->extents.y2 - region->extents.y1));
and recompiling with ./configure --enable-debug=full will generate a huge log file that I would hopefully be able to find the bug.
Sorry for delay, I haven't access to the affected machine. I will try to provide the requested debug information during today.
Also this doesn't seem to be reproducible on all intel adapters.
I played with this for few days and it's weird. With debugging enabled the UI is drawn apparently slower, but there are no artifacts. The artifacts starts appearing with debugging disabled. Maybe some race is encountered with the faster draw, I don't know. If this is user space problem, I can't understand why it is not reproducible with different drivers/graphics cards. I will try to prepare stripped down reproducer and let's see.
Emerald upstream acknowledged the problem and as an workaround moved from the Xlib surfaces to Cairo image surfaces in this commit:
But Xlib surfaces shouldn't behave differently in comparison to the Cairo image surfaces.
This problem seems reproducible only with some Intel adapters in SNA mode.