Projects

Spinel: Accelerated Vector Graphics

Spinel is a high-performance GPU-accelerated vector graphics, compositing and image processing pipeline for Vulkan 1.2+ GPUs. Spinel differs from other vector graphics implementations by providing explicit APIs for defining: Paths: first-class standalone objects Rasters: transformed-to-screen-space rasterized Paths Compositions: an arrangement of Rasters on Layers Stylings: rendering instructions for each Layer in a Composition These new explicit sub-APIs allow new programming idioms that untangle the canonical immediate-mode 2D API. Spinel was first implemented using CUDA in 2012.

RadixSort: Vulkan Sorting Library

RadixSort is a high-performance sorting library for Vulkan 1.2+. Features include: Ultra-fast stable sorting of 32‑bit or 64‑bit keyvals Key size is declared at sort time Indirectly dispatchable Simple to integrate in a Vulkan 1.2 environment The Vulkan implementation of RadixSort is open source and available here in Google’s Fuchsia project repo.

HotSort: Vulkan Sorting Library

HotSort is a high-performance GPU-accelerated integer sorting library that has been implemented in CUDA, OpenCL, and now Vulkan. This sorting library was used in the Spinel graphics engine until 2022 when it was replaced with the even higher performance RadixSort library. HotSort’s advantages include: Ultra-fast sorting of 32‑bit or 64‑bit keys Reaches peak throughput on small arrays In-place sorting for low-memory environments Strong scaling with number of multiprocessors Low memory transactions relative to array size A concurrency-friendly dense kernel grid Support for GPU post-processing of sorted results Although HotSort is a comparison sort, it’s typically significantly faster than other GPU-accelerated algorithms when sorting arrays smaller than ~500K keyvals.