In this article, I test various graphics APIs and input event APIs on the stock OS of the 2025 batch: Debian trixie.

target triple: aarch64-linux-gnu

Graphics and input events

X11 works. xinput test-xi2 shows TouchStart TouchUpdate TouchEnd events. detail of these events is the touch point id.

Wayland works. libinput debug-events shows

# the `rotation` attr seem to work, but is garbage data
TABLET_TOOL_AXIS (tilt)
TABLET_TOOL_PROXIMITY (proximity-in/out)
TABLET_TOOL_TIP (up/down)
TOUCH_DOWN
TOUCH_FRAME
TOUCH_MOTION
TOUCH_UP

libinput record shows

    #   Event code 0 (ABS_X)
    #   Event code 1 (ABS_Y)
    #   Event code 2 (ABS_Z)
    #   Event code 24 (ABS_PRESSURE)
    #   Event code 26 (ABS_TILT_X)
    #   Event code 27 (ABS_TILT_Y)
    #   Event code 40 (ABS_MISC)

So there is no pen rotation at all.

Pen is RawMotion Motion. device: 2 (8) is pen tip. 2 (9) is pen end (“eraser”).

X11 patch (config.fish):

if status is-login
    set -x XAUTHORITY /run/user/1000/.mutter-Xwaylandauth.*
    if set -q XAUTHORITY[1]
        set -x DISPLAY :0
    end
end

Graphics driver

Mesa docs for panfrost

GPU: Mali-G52 r1. Is only OpenGL (ES) 3.1 conformant. Try with eglgears_wayland eglgears_x11.

Refresh rate is slow because e-ink.

Graphics library

Raylib+GLFW3: cmake -B build -DGRAPHICS=GRAPHICS_API_OPENGL_21 (default is 3.3, not available)

GLFW3+OpenGL+X11: YES

GLFW3+Wayland: the package from debian repo can’t use wayland. not even with libglfw3-wayland (it’s just a copyright file).

SDL3: YES

Cross-compile

Zig 0.15.1’s --sysroot is broken, because it will first use headers from local root directory, and then sysroot. (Github issue)

Go need C compiler for GLFW.