Skip to content

v1.9 — experimental GL1 surface batcher (off by default) + deploy tooling

Choose a tag to compare

@matthewdeaves matthewdeaves released this 31 May 22:15
· 27 commits to master since this release

What's new in v1.9

No change to default rendering behavior — every machine's shipping configuration is byte-identical to v1.8. This release stamps the port version into the binary, adds an off-by-default experimental rendering knob, and fixes a dev-tooling paper-cut.

  • The binary now self-identifies as the port release. It previously reported only the upstream engine version ("QuakeSpasm 0.97.0"), so a fresh install was indistinguishable from any prior one. It now reads "QuakeSpasm 0.97.0-oldmac-v1.9" in the console, window title, and -version, stamped automatically by the build from the git release tag.
  • New gl_surfbatch cvar (default 0 / off). An experimental GL 1.x fixed-function surface batcher: when enabled, it coalesces consecutive same-lightmap world surfaces into a single glDrawElements call (a back-port of the technique the Quake II sister port uses, and of a batcher QuakeSpasm already has but only on the modern GLSL path that never runs on this hardware). It was benched same-machine across the whole fleet and came out neutral-to-slightly-negative — G3 demo2 −4.8%, Lion demo1 −4.2%, G4/G5 neutral — because the Rage 128's immediate-mode fast path beats indexed draws over an un-cached vertex pool. So it ships off, fully toggleable. Flip with gl_surfbatch 1 (rebuilds the world vertex pool on the next map load). Full per-machine A/B table in docs/KNOBS.md.
  • Dev tooling: deploy-dmg.sh now removes previously-shipped release DMGs from a bench machine before installing the new one, so they no longer accumulate across releases.

Why the experimental knob ships anyway

The batcher doesn't pay on this fleet, but the plumbing it adds — an auto-built, arch-independent client vertex pool that any draw path can index, gated behind a runtime cvar — is reusable foundation. As more techniques get back-ported from the Quake II sister port, this configurable groundwork is positioned to enable gains on other/future hardware where the draw-call-overhead trade-off lands differently (a GL-1.x target with a driver that handles indexed client arrays well). Shipping it off-by-default and documented keeps the lever available without touching what works today.

Same universal binary as before: PowerPC G3 + G4/AltiVec + G5/970 + Intel x86_64, with per-machine visual/perf config auto-selected at launch. DMG verified installing + production-launching on G3 Panther (Rage 128), G4 Tiger (Radeon 9200), G5 Leopard (Radeon 9600), and Intel Lion (GMA 950), with contents byte-identical to source.

Install

Mount the DMG, copy Quakespasm.app + quakespasm.pak into a folder, add your own id1/pak0.pak (+ pak1.pak for registered), and double-click. Supported: Mac OS X 10.3.9 Panther (G3) → modern Intel macOS.