etnaviv, modesetting, glamor: some parts of the screen won't update
I was testing this on the Librem5 devkit, with modesetting+glamor+etnaviv+mxsfb, with a non-compositing window manager. I'm seeing some parts of the screen not update when they should (Video).
I've been using xserver git master (xorg/xserver@96d19e89) and mesa git master (79368ab3).
This is with the environment variables ETNA_MESA_DEBUG=nir
or MESA_GL_VERSION_OVERRIDE=2.1
set.
My Xorg config looks like this:
Section "Device"
Identifier "DSI-1"
Driver "modesetting"
Option "kmsdev" "/dev/dri/by-path/platform-30320000.lcd-controller-card"
Option "Atomic" "On"
EndSection
Section "ServerFlags"
Option "AutoAddGPU" "false"
Option "DRI" "3"
EndSection
Interestingly enough, it seams to work fine on the external monitor (which uses dcss), but only if atomic is enabled, for which I applied this patch:
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index 6549ef8e1..bd8576f81 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -1216,7 +1216,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
}
if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_ATOMIC, FALSE)) {
- ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
+ ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 2);
ms->atomic_modeset = (ret == 0);
} else {
ms->atomic_modeset = FALSE;
(This doesn't make it work for the display on the device (mxsfb), though)
I wasn't able to figure out what causes this yet, but would appreciate any hint what to look for.