Darkroom: Compiling high-level image processing code into hardware pipelines

James Hegarty, John Brunhaver, Zachary DeVito, Jonathan Ragan-Kelley, Noy Cohen, Steven Bell, Artem Vasilyev, Mark Horowitz, Pat Hanrahan

Research output: Contribution to journalConference articlepeer-review

118 Scopus citations


Specialized image signal processors (ISPs) exploit the structure of image processing pipelines to minimize memory bandwidth using the architectural pattern of line-buffering, where all intermediate data between each stage is stored in small on-chip buffers. This provides high energy efficiency, allowing long pipelines with tera-op/sec. image processing in battery-powered devices, but traditionally requires painstaking manual design in hardware. Based on this pattern, we present Darkroom, a language and compiler for image processing. The semantics of the Darkroom language allow it to compile programs directly into line-buffered pipelines, with all intermediate values in local line-buffer storage, eliminating unnecessary communication with off-chip DRAM. We formulate the problem of optimally scheduling line-buffered pipelines to minimize buffering as an integer linear program. Finally, given an optimally scheduled pipeline, Darkroom synthesizes hardware descriptions for ASIC or FPGA, or fast CPU code. We evaluate Darkroom implementations of a range of applications, including a camera pipeline, low-level feature detection algorithms, and deblurring. For many applications, we demonstrate gigapixel/sec. performance in under 0.5mm2 of ASIC silicon at 250 mW (simulated on a 45nm foundry process), realtime 1080p/60 video processing using a fraction of the resources of a modern FPGA, and tens of megapixels/sec. of throughput on a quad-core x86 processor.

Original languageEnglish (US)
Article number144
JournalACM Transactions on Graphics
Issue number4
StatePublished - Jan 1 2014
Externally publishedYes
Event41st International Conference and Exhibition on Computer Graphics and Interactive Techniques, ACM SIGGRAPH 2014 - Vancouver, BC, Canada
Duration: Aug 10 2014Aug 14 2014


  • Domain-specific languages
  • FPGAs
  • Hardware synthesis
  • Image processing
  • Video processing.

ASJC Scopus subject areas

  • Computer Graphics and Computer-Aided Design


Dive into the research topics of 'Darkroom: Compiling high-level image processing code into hardware pipelines'. Together they form a unique fingerprint.

Cite this