The AMD vendor baseline set was committed in 5d776ba (4 renderer goldens under tests/golden/amd/, 13 Atmosphere captures under tests/visual/amd/). It was baked on AMD/Mesa only, and until it is cross-checked on NVIDIA it is a set of recordings, not references.
Why this is urgent
A golden makes the nightly green. It does not establish that the render is correct — and once baked, the nightly will actively defend whatever was captured, including a defect.
This is not hypothetical. On this same branch, integer-format textures were sampled with GL_LINEAR; GL requires NEAREST for integer formats, so on Mesa the texture was incomplete and read as all-zero through texelFetch, while NVIDIA tolerated it. The result: every glyph in the engine was invisible on AMD, while the font loaded (191 glyphs), SlugFontProcessor packed it (189 glyphs, 13535 band texels), DrawString emitted 852 quads across 4 draw calls, and nothing logged an error. Only a test asserting on rasterised pixels caught it.
Had the baselines been baked before that fix, a blank UI would now be the reference.
The window matters: every day these sit unverified, they accumulate authority — later diffs get judged against them, and a wrong baseline gets harder to distinguish from a real regression.
What to do
On the NVIDIA machine, rebake and compare rather than overwrite:
OLOENGINE_GOLDEN_REBASE=1 with OLOENGINE_GOLDEN_VENDOR=nvidia (or to a scratch dir) — do not rebake into the shared baselines yet.
- Diff each NVIDIA capture against its AMD counterpart in
tests/{golden,visual}/amd/.
- Judge per image: last-bit rounding is agreement; a structural difference is a conformance bug in one of the two and must be diagnosed, not averaged away.
Expected result, and what would falsify it
On the 4 renderer goldens, AMD vs the existing baseline is already measured: fxaa_hard_edge byte-identical, the other three RMSE 0.16–0.40, max |diff| = 1. If the Atmosphere set lands equally close, the two vendors agree and vendor scoping should be dropped entirely — comparing AMD against shared baselines is strictly stronger, because it catches the next conformance bug instead of letting each vendor validate itself.
If instead the Atmosphere captures diverge structurally, that is a live conformance bug and this issue becomes its diagnosis.
Two known-changed areas — do not mistake these for vendor divergence
The night captures contain content deliberately changed on this branch, so the shared baselines are stale for them regardless of vendor:
- Star positions —
fract(sin(dot(p,k)) * 43758.5453) was not portable (sin() at arguments in the tens of thousands amplifies a 1-ULP input difference across a large fraction of a period, so NVIDIA and Mesa placed stars in genuinely different locations, and the C++ mirror using std::sin matched neither). Replaced with an integer PCG hash over the lattice cell in f4fef24. The cross-check is what confirms that fix — it is the one claim that cannot be measured from a single vendor.
- Grid lines — the
InfiniteGrid coplanar depth bias (dfd100e) shifts which grid pixels win the depth tie; this dominates the night RMSE (ground band 15–21 vs the star band's 13.9).
Related
The AMD vendor baseline set was committed in 5d776ba (4 renderer goldens under
tests/golden/amd/, 13 Atmosphere captures undertests/visual/amd/). It was baked on AMD/Mesa only, and until it is cross-checked on NVIDIA it is a set of recordings, not references.Why this is urgent
A golden makes the nightly green. It does not establish that the render is correct — and once baked, the nightly will actively defend whatever was captured, including a defect.
This is not hypothetical. On this same branch, integer-format textures were sampled with
GL_LINEAR; GL requiresNEARESTfor integer formats, so on Mesa the texture was incomplete and read as all-zero throughtexelFetch, while NVIDIA tolerated it. The result: every glyph in the engine was invisible on AMD, while the font loaded (191 glyphs),SlugFontProcessorpacked it (189 glyphs, 13535 band texels),DrawStringemitted 852 quads across 4 draw calls, and nothing logged an error. Only a test asserting on rasterised pixels caught it.Had the baselines been baked before that fix, a blank UI would now be the reference.
The window matters: every day these sit unverified, they accumulate authority — later diffs get judged against them, and a wrong baseline gets harder to distinguish from a real regression.
What to do
On the NVIDIA machine, rebake and compare rather than overwrite:
OLOENGINE_GOLDEN_REBASE=1withOLOENGINE_GOLDEN_VENDOR=nvidia(or to a scratch dir) — do not rebake into the shared baselines yet.tests/{golden,visual}/amd/.Expected result, and what would falsify it
On the 4 renderer goldens, AMD vs the existing baseline is already measured:
fxaa_hard_edgebyte-identical, the other three RMSE 0.16–0.40, max |diff| = 1. If the Atmosphere set lands equally close, the two vendors agree and vendor scoping should be dropped entirely — comparing AMD against shared baselines is strictly stronger, because it catches the next conformance bug instead of letting each vendor validate itself.If instead the Atmosphere captures diverge structurally, that is a live conformance bug and this issue becomes its diagnosis.
Two known-changed areas — do not mistake these for vendor divergence
The night captures contain content deliberately changed on this branch, so the shared baselines are stale for them regardless of vendor:
fract(sin(dot(p,k)) * 43758.5453)was not portable (sin()at arguments in the tens of thousands amplifies a 1-ULP input difference across a large fraction of a period, so NVIDIA and Mesa placed stars in genuinely different locations, and the C++ mirror usingstd::sinmatched neither). Replaced with an integer PCG hash over the lattice cell in f4fef24. The cross-check is what confirms that fix — it is the one claim that cannot be measured from a single vendor.InfiniteGridcoplanar depth bias (dfd100e) shifts which grid pixels win the depth tie; this dominates the night RMSE (ground band 15–21 vs the star band's 13.9).Related