All games

Trigger Rally

Rust ยท 84 0.1 h played, 0 crashes

A 3D rally racing game: drive a rally car over dirt tracks against the clock.

Genre
racing
Players
single player
Input
made for keyboard and mouse
View
3D

How it's built, patched and set up for its played test. The numbers are under Test runs.

Trigger Rally 0.6.6.1 runs fullscreen at 1920x1080. On the desert stages it races at about 58 frames a second on the game’s own settings, with the picture right.

Status

Debian’s Trigger Rally 0.6.6.1 (trigger-rally, -data, 116 MB). Smoke runs on 2026-10-28 (kernel .874, Mesa ps3.924, the VRAM swap on): the menus are mouse-only (Return and the arrows do nothing there), so the recipe (benchmark/recipe.sh) clicks through them by XTEST (xkeys.py @X,Y): single race, Aegyptian, race, the car (Return), then holds the throttle a few times. The race runs, the picture right (desert, sky, the car, the HUD, the offroad sign; xwd and webcam):

Settings Steady fps 1% low Frames over 100 ms in 90 s Peak RSS Run
the recipe’s cheap ones (no foliage, weather, dirt, anisotropy) 65 47 4 (the stage load, 12.9 s, and 3 short) 52 MB ps3-bench-20261028T213802Z
the game’s defaults (fresh configuration: foliage, weather, anisotropy 4) 58 30 4 (the stage load, 12.4 s) 51 MB ...-smoke-trigger-rally-freshrace

A fresh configuration is already fullscreen at the screen’s size (automatic="yes" in /etc/trigger-rally.config.defs: geom=1920x1080+0+0 fs=1), so no console default needs a patch. Sound running, no audible dropouts. The game found the DualShock 3 (“Found 1 joystick: Sony PLAYSTATION(R)3 Controller”); whether its own joystick mapping drives the car is not tried. Not checked: the sound by ear, a whole stage.

In the first played session (ps3-bench-20261029T205633Z-session-trigger-rally-base, Mesa ps3.924, vsync as shipped) the user found the menus unusable: after opening a menu, the TV alternated between it and the menu before it. The xwd at 60 s is a clean main menu, since it reads one buffer.

The game is not the cause. In 0.6.6.1 the level screen (MainApp::renderStateLevel) draws a full-screen background quad and the whole GUI every frame, PApp::run swaps every frame (SDL_GL_SwapWindow after glFinish), and nothing draws to GL_FRONT or skips frames. The session’s dmesg has ps3rsx: out of VRAM for a 8100 KiB BO about 58 times a second for the whole session: one 1920x1080 back buffer per frame. X page-flips the fullscreen window, so Mesa’s DRI3 loader wants a third back buffer (dri3_update_max_num_back: 3 with vsync, 4 without), and with the VRAM full of the game’s textures it never gets one. dri3_find_back picks the empty slot every frame and the allocation fails. getBuffers returns false, so the frontend keeps drawing into the back buffer it validated last, while the swap presents whichever buffer is idle, one of which holds an old frame. A static menu shows it plainly. In a race it would be a frame from the past every other frame. The smoke runs (vblank_mode=0) logged the same failures in bursts and drew right in their screenshots.

The fix is in Mesa, for every game that fills the VRAM: patch 0054 (docs/DRIVER.md’s table) caps the loader at the two back buffers it has once a third can’t be allocated, and waits for one of them. There is no per-game switch: Mesa 26 has no DRI2 for GLX, and the only way to stop the flips is xorg’s Option "PageFlip" "off", which applies to every game. The two Race finished in invalid state 30 lines are from quitting (state 30 is the quit dialog, and endGame runs at shutdown). They are harmless.

Played session 2026-10-29: textures missing, the pad unused

The first imported session (ps3-bench-20261029T221408Z-session-trigger-rally-base, rating/sessions/2026-10-29-session; Mesa ps3.1139~dev with 0052 and 0054 but not 0053, ps3rsx 0.924, kernel .874): 5.3 min, three Trigger Cup stages (warmup, operation, old), quit from the menu. Rust 84 (the player saw the picture broken; provisional), 58 fps median, 1% low 24, longest frame 448 ms, fullscreen 1920x1080, sound heard (no music in the race), 0 audible dropouts. The menus held still: 0054 works (dri3: no memory for back buffer 3, keeping 2 once in the game log, and only 10 8100 KiB out of VRAM lines in dmesg instead of a stream).

The player’s notes: no textures, a grey gradient sky, a black car, no gamepad at all, the menus mouse-only. The screenshots agree: the terrain, the HUD, the minimap and the co-driver signs are textured; the car, the buildings and rocks and the sky are not. dmesg has a steady stream of ps3rsx: out of VRAM (about 400 a second; printed: 252 of 5464 KiB, a 1024x1024 RGBA texture with its mips, 144 of 1368 KiB, 104 of 344 KiB). Both are open items in todo.toml.

Threads in the stall frames

Checked on 2026-10-29 after Luanti’s stalls turned out to be its render thread waiting for the CPU its own worker threads had (luanti 0010 puts them at nice 10). From the stall record (stalls.py’s stall_main_pct and stall_rest_pct: the CPU of the main thread and of the game’s other threads in the stall frames, in % of their time, 100 being one PPE thread; Luanti before its fix: 22 and 83) and the profile (bench/analysis/stallperf.py). Run ps3-bench-20261029T171249Z-smoke-trigger-rally-freshrace (STALLS=1 PERF=1, the game’s defaults; batch 2026-10-29-worker-threads): 59 fps steady, 1% low 32, 3 frames over 100 ms in the 90 s smoke window, one of them the stage load (13.9 s: glTexImage2D, PhysFS reads, libjpeg), which the smoke window doesn’t leave out. In those frames the main thread ran 74% of the time and the other threads 8% (OpenAL’s mixer); the race itself has no worker threads that compete with the drawing.

Build

Packagestrigger-rally, trigger-rally-data
Suitenot in the game suite yet
Game datacomes with the packages

Our source packages

None: the game runs from Debian's packages as they are.

Played test

What a played session sets up (rating/test.toml); the medal comes from these sessions only.

Processtrigger-rally
Set aside~/.local/share/trigger-rally (the game starts on fresh defaults)
Command/usr/games/trigger-rally