diff --git a/spike/01-s1-plasma-mobile.sh b/spike/01-s1-plasma-mobile.sh index 5b4af94..0e7fe6f 100755 --- a/spike/01-s1-plasma-mobile.sh +++ b/spike/01-s1-plasma-mobile.sh @@ -92,16 +92,35 @@ hint "Steht es weiterhin dort, hat der X-Server keine Verbindung bekommen." # ── GPU-Server ─────────────────────────────────────────────────────────────── section "GPU-Pfad vorbereiten ($GPU_PROFIL)" -if [ "$GPU_PROFIL" = "virgl" ] && have virgl_test_server_android; then - virgl_test_server_android >>"$LOG" 2>&1 & - sleep 1 - ok "virgl-Server gestartet" -elif [ "$GPU_PROFIL" = "turnip" ]; then - ok "Turnip greift direkt auf KGSL zu — kein Proxy nötig" -else - warn "Kein GPU-Server aktiv, Software-Rendering wahrscheinlich" +# Wichtige Korrektur gegenüber der ersten Fassung: Turnip lebt in Termux' +# Verzeichnis, nicht im Debian-Rootfs. Im Container GALLIUM_DRIVER=zink zu setzen +# geht deshalb ins Leere — Zink bräuchte dort einen Vulkan-Treiber, und da ist +# keiner. Ergebnis war gar kein OpenGL, und ohne das kann QtQuick nichts zeichnen. +# +# Der tragfähige Weg führt über virgl: der Server läuft in TERMUX und nutzt dort +# den schnellen Pfad (Zink auf Turnip), der Container spricht nur virpipe mit ihm. +# Turnip bleibt also im Spiel — nur eine Ebene tiefer als gedacht. +if ! have virgl_test_server_android; then + fail "virgl_test_server_android fehlt — ohne ihn gibt es im Container kein OpenGL." + hint "Nachinstallieren: pkg install -y virglrenderer-android" + exit 1 fi +pkill -f virgl_test_server 2>/dev/null; sleep 1 +if [ "$GPU_PROFIL" = "turnip" ]; then + # Der Server selbst rendert über Zink auf Turnip — dort ist der Treiber ja. + GALLIUM_DRIVER=zink MESA_LOADER_DRIVER_OVERRIDE=zink \ + virgl_test_server_android >>"$LOG" 2>&1 & + ok "virgl-Server gestartet, rendert über Zink auf Turnip" +else + virgl_test_server_android >>"$LOG" 2>&1 & + ok "virgl-Server gestartet" +fi +VIRGL_PID=$! +sleep 2 +kill -0 "$VIRGL_PID" 2>/dev/null && ok "läuft (PID $VIRGL_PID)" \ + || warn "virgl-Server sofort beendet — siehe Protokoll" + # ── Audio, damit der Desktop nicht schon daran scheitert ───────────────────── section "PulseAudio" pulseaudio --kill 2>/dev/null || true diff --git a/spike/inner/s1-plasma.sh b/spike/inner/s1-plasma.sh index 1dec311..2e04886 100755 --- a/spike/inner/s1-plasma.sh +++ b/spike/inner/s1-plasma.sh @@ -27,20 +27,14 @@ export KDE_FULL_SESSION=true export XCURSOR_THEME=breeze_cursors export XCURSOR_SIZE=24 -case "$GPU_PROFIL" in - turnip) - # Zink übersetzt OpenGL auf Vulkan, Turnip liefert Vulkan direkt aus dem - # Adreno-Treiber — zusammen der schnellste Weg ohne Root. - export MESA_LOADER_DRIVER_OVERRIDE=zink - export GALLIUM_DRIVER=zink - export TU_DEBUG=noconform - ;; - virgl) - export GALLIUM_DRIVER=virpipe - export MESA_GL_VERSION_OVERRIDE=4.3 - ;; -esac -echo " GPU-Profil: $GPU_PROFIL" +# Im Container immer virpipe, unabhängig vom Profil. Der Vulkan-Treiber liegt in +# Termux' Verzeichnis und ist hier drinnen nicht erreichbar — Zink hätte also +# nichts, worauf es aufsetzen könnte. Der schnelle Pfad (Zink auf Turnip) wird +# eine Ebene tiefer genutzt, vom virgl-Server auf der Termux-Seite. +export GALLIUM_DRIVER=virpipe +export MESA_GL_VERSION_OVERRIDE=4.3 +export MESA_GLES_VERSION_OVERRIDE=3.2 +echo " GPU-Profil: $GPU_PROFIL (im Container über virpipe)" # ── Pakete ─────────────────────────────────────────────────────────────────── # Bewusst ohne empfohlene Pakete: sonst zieht Plasma Mobile eine komplette @@ -116,8 +110,20 @@ fi # Wenn hier schon nichts kommt, ist ein Fehlschlag von Plasma keine Aussage über # Plasma, sondern über den GPU-Pfad. Deshalb vorher messen. echo "── GPU-Nachweis ──" -timeout 20 glxinfo -B 2>&1 | grep -Ei 'OpenGL (renderer|version)|Device' || echo " ! glxinfo lieferte nichts" -timeout 20 vulkaninfo --summary 2>&1 | grep -Ei 'driverName|deviceName' || echo " ! vulkaninfo lieferte nichts" +# Das ist kein Nebenschauplatz: ohne funktionierendes OpenGL kann QtQuick keine +# Szene aufbauen, plasmashell lädt seine Shell nicht und fällt wortlos auf die +# Voreinstellung zurück. Ein schwarzer Bildschirm sieht dann nach einem +# Compositor-Problem aus, ist aber eines der Grafikanbindung. +GLXAUS=$(timeout 25 glxinfo -B 2>&1) +if printf '%s' "$GLXAUS" | grep -qi 'OpenGL renderer'; then + printf '%s\n' "$GLXAUS" | grep -Ei 'OpenGL (renderer|version)' | sed 's/^/ /' + echo " ✓ OpenGL steht" +else + echo " ✗ Kein OpenGL im Container:" + printf '%s\n' "$GLXAUS" | head -6 | sed 's/^/ /' + echo " Läuft virgl_test_server_android auf der Termux-Seite?" + echo " Ohne OpenGL wird plasmashell die Shell nicht laden können." +fi # ── D-Bus ──────────────────────────────────────────────────────────────────── if [ ! -e /run/dbus/system_bus_socket ]; then