Skip to content

Releases: atomozero/HaikuBench

HaikuBench v1.1.0

18 May 21:32

Choose a tag to compare

What's New in v1.1.0

New Features

  • 2D hardware acceleration detection — identifies the active accelerant driver via BScreen::GetDeviceInfo() and ioctl B_GET_ACCELERANT_SIGNATURE, reports FillRect/ScreenBlit/InvertRect hook availability
  • Adaptive benchmark runner — statistical analysis with CoV, trimmed mean, p50/p95, automatic outlier detection (2-10 runs per test)
  • CPU warm-up phase before each test for stable frequency governor
  • Real-time temperature overlay on GL benchmark windows
  • CPU database for brand string detection
  • HaikuPorts recipe for package distribution
  • Proper rdef resource file with app_signature, version, and vector icon

Improvements

  • Benchmark results now include stddev, median, p95, CoV per test
  • zink/NVK compatibility (glFinish before SwapBuffers)
  • Fixed race condition in 2D benchmark result caching

Download

  • HaikuBench-v1.1.0-x86_64.zip — prebuilt binary for Haiku x86_64
  • Or build from source: make && rc -o HaikuBench.rsrc HaikuBench.rdef && xres -o HaikuBench HaikuBench.rsrc

v1.0.1-rc1 — Internal Test Build

27 Mar 06:59

Choose a tag to compare

Pre-release

Test Build — zink/NVK fix

Changes since v1.0.0

  • Add glFinish() before SwapBuffers() in all OpenGL windows (Teapot 3D, GPU Benchmark)
  • Add StatsCollector class for system stats monitoring

What to test

  • Utenti con zink/NVK (Mesa Vulkan): verificare che le finestre OpenGL (Teapot 3D e GPU OpenGL Benchmark) non siano più bianche
  • Utenti con softpipe/llvmpipe: verificare che non ci siano regressioni di performance nella finestra Teapot

Known issues

  • CPU Float benchmark counts transcendental functions as single FLOPs (fix planned for v1.1.0)

Build instructions

make clean && make

HaikuBench V.1.0.0

26 Mar 21:19

Choose a tag to compare

Changelog

1.0.0 — 2026-03-26

First public release.

System Benchmark (20 tests, 3 runs each)

  • CPU: Integer (MOPS), Float (MFLOPS), Multi-thread speedup ratio
  • Memory: Sequential Read/Write, Copy (MB/s), Latency (ns)
    • Pointer-chasing with random chain to defeat prefetchers
    • ASM barriers to prevent compiler optimization
  • Cache: L1/L2/L3 bandwidth with 8 independent accumulators
    • Batched passes to minimize system_time() overhead on small buffers
  • Kernel: Semaphore create/delete/acquire/release/contention,
    Thread spawn, Port send/recv, Area create/delete, Atomic ops,
    Syscall overhead
  • Messaging: BMessage flatten/unflatten, BLooper ping-pong

2D Benchmark (24 tests, 6 levels)

  • Level 1: FillRect, StrokeRect, FillRoundRect, StrokeLine
  • Level 2: FillTriangle, FillEllipse, FillPolygon, DrawString
  • Level 3: BShape, gradients, alpha blending, bitmap scaling
  • Level 4: 24-point star, clipped regions, conic gradients, text storm
  • Level 5: Nebula particles, fractal trees, plasma renderer, everything combined
  • Level 6: Full software 3D teapot renderer (wireframe, flat-shaded, x4, x16)
  • Two-column layout matching main window style

GPU Benchmark (6 tests, OpenGL)

  • Fill rate, geometry, texture upload, alpha blending, stencil, combined stress
  • Live rotating teapot preview (Phong shading, 30 FPS animation)
  • Fixed 320x240 rendering viewport for consistent results
  • GPU Device panel with Vendor, Renderer, OpenGL version, Mesa/driver version

Vulkan Benchmark (4 tests)

  • Memory bandwidth (host-visible buffer write)
  • Compute shader (1M invocations, 256 FMA/thread, GFLOPS)
  • Buffer copy (device-to-device vkCmdCopyBuffer)
  • Buffer fill rate (vkCmdFillBuffer)
  • Vulkan loaded dynamically via load_add_on (works without Vulkan installed)
  • Shader compiled at runtime via glslc (shaderc)

Teapot 3D Benchmark

  • 1-64 Utah Teapots via BGLView + glutSolidTeapot
  • Real-time FPS counter, add/remove with +/- buttons

Statistics

  • Each system test runs 3 times (configurable via kBenchRuns)
  • Mean and standard deviation computed per test
  • Results displayed as mean +/- stddev in UI and exports

Export

  • Markdown (.md) with full results table, machine ID, version, overall score
  • JSON (.json) with mean/stddev per test for machine parsing and leaderboards
  • Machine ID: FNV-1a hash of CPU + cores + RAM for hardware fingerprinting
  • Overall composite score (CPU, Memory, Cache, Kernel, Messaging sub-scores)

Temperature Monitoring

  • ACPI thermal zone readout in real-time
  • Displayed in main window and as overlay on OpenGL benchmark windows
  • Color-coded: green (< 65 C), yellow (65-80 C), red (> 80 C)

UI

  • Dark theme (#0D1117) with consistent color palette across all windows
  • Monospaced font (be_fixed_font 11pt) for aligned result columns
  • BBox panels with titled sections (System, Benchmark Results)
  • Section-colored headers, white result rows
  • Unified style across System, 2D, GPU, and Vulkan benchmark windows

Packaging

  • HVIF icon on binary
  • Makefile with src/obj directory structure
  • Application signature: application/x-vnd.HaikuBench