#!/usr/bin/env bash
echo "--- Force-stopping any old processes..."
pkill -9 -f com.termux.x11 || true
pkill -9 virgl_test_server_android || true
sleep 1
echo "--- Starting services..."
export TMPDIR=/data/data/com.termux/files/usr/tmp
export XDG_RUNTIME_DIR=/data/data/com.termux/files/usr/tmp
termux-x11 :0 &
virgl_test_server_android &
echo "--- Waiting for X socket..."
COUNT=0
while [ ! -e "$XDG_RUNTIME_DIR/.X11-unix/X0" ] && [ $COUNT -lt 15 ]; do
sleep 1; echo -n "."; COUNT=$((COUNT+1))
done
echo
if [ ! -e "$XDG_RUNTIME_DIR/.X11-unix/X0" ]; then
echo "Error: X server failed to start." >&2; exit 1
fi
echo "--- X socket ready! Granting access..."
sleep 1
export DISPLAY=:0
xhost +
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
echo "--- Logging into Debian environment..."
proot-distro login --user debian debian \
--shared-tmp \
--bind "$XDG_RUNTIME_DIR/.X11-unix:/tmp/.X11-unix" \
-- /bin/bash -lc '
export DISPLAY=:0
export GALLIUM_DRIVER=virpipe
export PULSE_SERVER=127.0.0.1
echo "--- Checking OpenGL Renderer ---"
glxinfo | grep "OpenGL renderer string"
echo "--- Launching xfce4---"
dbus-launch --exit-with-session startxfce4
'
echo "--- Session finished. Cleaning up. ---"
echo "--- Session finished. Cleaning up. ---"
pkill -9 termux-x11 || true
pkill -9 virgl_test_server_android || true
$ vulkaninfo --summary
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.327
Instance Extensions: count = 14
-------------------------------
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_GOOGLE_surfaceless_query : extension revision 2
VK_KHR_android_surface : extension revision 6
VK_KHR_device_group_creation : extension revision 1
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 1
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
Instance Layers:
----------------
Devices:
========
GPU0:
apiVersion = 1.3.128
driverVersion = 0.676.67
vendorID = 0x5143
deviceID = 0x43050a01
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = Adreno (TM) 740
driverID = DRIVER_ID_QUALCOMM_PROPRIETARY
driverName = Qualcomm Technologies Inc. Adreno Vulkan Driver
driverInfo = Driver Build: a6844907d4, Ie667bba6d9, 1733827973
Date: 12/10/24
Compiler Version: E031.41.03.58
Driver Branch:
conformanceVersion = 1.3.1.0
deviceUUID = 43510000-0600-0000-10c5-6000140010c5
driverUUID = 04000000-0100-0000-0100-000000000000
$ glxgears
1548 frames in 5.0 seconds = 309.429 FPS
1577 frames in 5.0 seconds = 315.331 FPS
1550 frames in 5.0 seconds = 309.881 FPS
1571 frames in 5.0 seconds = 314.200 FPS
1577 frames in 5.0 seconds = 315.225 FPS
1632 frames in 5.0 seconds = 326.332 FPS