Repository navigation
Render samples on the CPU with colored terminal previews in CI - #100
Merged
Merged
Conversation
natevm
force-pushed
the
feat/terminal-rendering
branch
2 times, most recently
from
October 11, 2026 02:15
53b1e90 to
d34aa0e
Compare
natevm
force-pushed
the
feat/terminal-rendering
branch
from
October 11, 2026 02:16
d34aa0e to
bf1e443
Compare
natevm
marked this pull request as ready for review
October 11, 2026 03:09
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub Actions now renders 16 GPRT samples on the CPU with Mesa 26.2.4 Lavapipe and shows one final-frame preview in each sample's log group. The job still renders two frames per sample and saves both previews and PNGs in the
cpu-sample-images-and-logsartifact.Colored previews use solid blocks with 24-bit RGB colors. This preserves the filtered framebuffer colors without the saturation boost or dark background showing through shade characters. The terminal regression test checks RGB channel order, intermediate colors, all 256 gray levels, and filtering in linear space.
Headless runs use a fixed frame limit and advance time by 1/60 second per buffer presentation. The preview preserves mapped host edits.
GPRT_TERMINAL_COLOR=1enables colored Unicode blocks when output is redirected, without clearing earlier log output. Sample edits update comments for this behavior.The CPU run exposed an unsupported capture/replay requirement. GPRT now queries acceleration-structure addresses through Vulkan instead of requesting that they equal their backing buffer addresses. This correction is a separate commit with 8 insertions and 23 deletions.
Refits and rebuilds that reuse the allocation preserve acceleration-structure addresses. Compaction and allocation replacement require callers to refresh references, as before. A ray-tracing regression test retains cached BLAS and TLAS addresses while changing vertices and instance transforms, then checks hit distances after refits, same-size rebuilds, and refits of compacted trees.
The runner fails on crashes, 180-second timeouts, GPRT or Vulkan validation errors, unavailable validation, missing colored previews, missing PNGs, and uniform images. The solids sample starts its animation at one second so the first frames exercise distinct vertex values; its image check rejects the previous all-yellow output. These are rendering smoke tests; they do not compare against reference images.
Validation:
VK_NV_ray_tracing_motion_blur. The GUI and differentiable samples are excluded for existing GUI attachment synchronization errors; the differentiable sample also crashed on Lavapipe during the initial run. DLSS remains disabled.To run locally after building samples and tests, install Pillow and run
python tests/render_samples.py <build-directory>. Select the desired Vulkan driver throughVK_DRIVER_FILESand make the validation layer available throughVK_LAYER_PATH.