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>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user