Theme Catppuccin
Make yourself at homeCatppuccin

A softer light for long learning sessions.

Appearance

Loading your preference…

Dark palette

Choose a dark palette to try it.

Light uses Latte. Your choices stay in this browser.

← All six courses

Volume 04 · 16 flexible weeks

Renderer Engineering

Keep the picture alive under pressure.

Give a renderer dependable boundaries: bounded work, ownership, cancellation, asset generations, allocation budgets, profiling, and reproducible releases.

Open my weekly workbench ↗
THE PROJECT / The Living Gallery
Where you’ll work

C++ concurrency · macOS & Linux

Hardware & toolchain notes ↗
Your finish line

Load and replace assets without stale results or unbounded queues, and explain shutdown and failure paths.

Your sketchbook / 8 chapters

Two weeks per chapter: understand and build, then investigate and finish. Repeat any week.

01
The gallery contract ↗

Define a small renderer application using explicit owners, borrowed interfaces, validated work, and meaningful failure boundaries.

This chapter’s project

An ownership diagram, a bounded work API, and tests for rejected and failed work.

Weeks 1–2
02
Scratch with an exit ↗

Use PMR only where its allocation and reset contracts are visible, and keep worker lifetimes inside scratch lifetimes.

This chapter’s project

A PMR lifetime diagram, exhaustion test, and promoted result that survives reset.

Weeks 3–4
03
A finite number of workers ↗

Run bounded owned jobs with std::jthread, cooperative cancellation, deterministic synchronization tests, and explicit joining.

This chapter’s project

A bounded worker experiment with cancellation ordering, failure outcomes, and a shutdown diagram.

Weeks 5–6
04
Assets have revisions ↗

Model asset preparation and publication with generations, explicit states, owning results, and stable prior assets on failure.

This chapter’s project

An original state diagram, a stale-completion regression, and a failure-preserves-current test.

Weeks 7–8
05
Waiting is not a runtime ↗

Distinguish future completion, cooperative stop, coroutine syntax, scheduler behavior, and awaitable lifetime without building an unsafe runtime.

This chapter’s project

A runnable timer success/cancel/failure trace, a frame-lifetime check, and a CP.51–53 review.

Weeks 9–10
06
Two kinds of completion ↗

Design a backend-neutral resource-retirement model while clearly distinguishing it from real API synchronization.

This chapter’s project

A two-timeline diagram, a bounded retirement policy, and a clearly labeled pure state-model test.

Weeks 11–12
07
Measure one bottleneck ↗

Build reproducible correctness and performance evidence without conflating throughput, latency, memory, and device timing.

This chapter’s project

A measurement protocol, repeated results, a correctness check, and an explained tradeoff.

Weeks 13–14
08
The Living Gallery release ↗

Release an original bounded gallery subset with ownership, shutdown, failure, measurement, and contribution evidence.

This chapter’s project

A reproducible application subset, owner/shutdown diagrams, failure tests, one measurement, and a contribution statement.

Weeks 15–16

Keep your hands on the work

Read the source.
Change one decision.

The companion explains its build steps, tested behavior, and remaining learner work. Keep your own contribution clear as the project grows.