kde/qemu: KWIN_DRM_USE_MODIFIERS=0 — mata la pantalla negra (FB rechazado por virtio)
Con el segfault ya resuelto, el escritorio salía NEGRO: kwin encontraba el conector (1280x800) pero "Failed to create a framebuffer: Invalid argument" ⇒ "Failed to find a working output layer" ⇒ sin scanout. Se veía el wallpaper un instante (el modeset inicial usa un buffer dumb sin modifiers) y luego negro (los buffers del compositor van por drmModeAddFB2WithModifiers). virtio-gpu ADVIERTE el CAP de modifiers pero rechaza el modifier explícito (aún LINEAR=0) con EINVAL. Fix: KWIN_DRM_USE_MODIFIERS=0 ⇒ kwin usa drmModeAddFB2 plano (modifier implícito) que virtio sí acepta. "Failed to create a framebuffer" pasó de 2526 a 0; input Qt fluyendo; sin crash. También: quitado KWIN_DRM_NO_AMS (era corazonada del segfault; atomic es el path sólido en virtio) y arreglado el stream vivo del kwin.log al serial (busybox sed no soporta -u ⇒ tail -f directo, sin sed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
1 qillqakuna · +12 −4
diff --git a/scripts/kde/plasma-start-qemu.sh b/scripts/kde/plasma-start-qemu.sh
index 29293725..7bec0a00 100644
--- a/scripts/kde/plasma-start-qemu.sh
+++ b/scripts/kde/plasma-start-qemu.sh
@@ -47,7 +47,16 @@ export QT_QUICK_BACKEND=software
# llvmpipe segfaultea al componer la 1ra superficie en esta VM. KWIN_DRM_NO_AMS=1: desactiva atomic
# modesetting (algunos virtio-gpu lo rompen). Ambos son fixes conocidos de kwin/llvmpipe en VMs.
export LP_NUM_THREADS=1
-export KWIN_DRM_NO_AMS=1
+# KWIN_DRM_NO_AMS (legacy modeset) fue una corazonada del segfault (que resultó ser GBM_ALWAYS_SOFTWARE).
+# Dejamos atomic (virtio soporta atomic nativo; legacy es el frágil).
+# export KWIN_DRM_NO_AMS=1
+#
+# EL FIX DEL NEGRO: virtio-gpu ADVIERTE soportar drmModeAddFB2WithModifiers pero RECHAZA el modifier
+# explícito (aún LINEAR=0) con EINVAL ⇒ "Failed to create a framebuffer" ⇒ sin output layer ⇒ NEGRO.
+# El modeset inicial usa un buffer dumb (sin modifiers) y SÍ pinta (por eso se ve el wallpaper un instante),
+# pero los buffers del compositor van por AddFB2WithModifiers y fallan ⇒ vuelve a negro. KWIN_DRM_USE_MODIFIERS=0
+# fuerza a kwin a usar drmModeAddFB2 plano (modifier implícito) que virtio-gpu sí acepta.
+export KWIN_DRM_USE_MODIFIERS=0
# KWIN_COMPOSE: con llvmpipe (GL de software COMPLETO) dejamos que kwin use su compositor OpenGL por
# defecto — forzar QPainter (=Q) sobre una salida DRM/EGL con GL disponible segfaultea al componer la
# 1ra superficie. Si el GL-llvmpipe resultara inestable, KWIN_COMPOSE=Q es el fallback.
@@ -124,9 +133,8 @@ fi
say "lanzando kwin_wayland (DRM virtio, software GL)..."
/usr/bin/kwin_wayland --drm >/tmp/kwin.log 2>&1 &
KWIN=$!
-# stream EN VIVO del kwin.log al serial: el volcado post-mortem se trunca porque el getty respawnea y
-# pisa el serial ⇒ con tail -f la última línea antes del segfault llega al host pase lo que pase.
-( tail -f /tmp/kwin.log 2>/dev/null | sed -u 's/^/kwin> /' > /dev/ttyS0 2>/dev/null ) &
+# stream EN VIVO del kwin.log al serial (busybox sed NO soporta -u ⇒ nada de sed/pipes: tail -f directo).
+( echo "==== kwin.log (stream vivo) ===="; tail -f /tmp/kwin.log ) > /dev/ttyS0 2>/dev/null &
TAILPID=$!
i=0
while [ $i -lt 60 ]; do