Repeat P3 Release gate with pinned shader bundle
Native and manual checks / native (ubuntu-24.04) (push) Failing after 33s
Native and manual checks / manual (push) Successful in 25s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Native and manual checks / native (windows-2025) (push) Canceled after 0s

This commit is contained in:
Emil
2026-09-24 03:16:11 +03:00
parent 029ccb181a
commit 530af9e542
111 changed files with 8168 additions and 8148 deletions
@@ -1,13 +1,14 @@
# P3 light scaling and Forward+ decision (2026-09-24)
The first Release measurement of P3 lighting crosses the planned Forward+ gate. On the Linux reference RTX 2080 Ti, 32 local lights added about 0.50 ms of forward raster work, over 28% of the zero-light GPU frame in every visibility mode. At 64 lights the added raster time was about 1.02 ms. The result requires a measured tiled Forward+ implementation under [the P3 plan](../superpowers/plans/2026-09-24-p3-lighting.md); it does not establish a speedup until that implementation is compared on the same workload.
The first Release measurement of P3 lighting crosses the planned Forward+ gate. On the Linux reference RTX 2080 Ti, 32 local lights added about 0.50 ms of forward raster work, over 27% of the zero-light GPU frame in every visibility mode. At 64 lights the added raster time was about 1.0 ms. The result requires a measured tiled Forward+ implementation under [the P3 plan](../superpowers/plans/2026-09-24-p3-lighting.md); it does not establish a speedup until that implementation is compared on the same workload.
## Reproduction and scope
| Field | Recorded value |
| --- | --- |
| Source revision | `05906054cf5c4f6a9346ce0b4c507f256566e43e`, clean at the start and end of the sweep |
| Benchmark executable SHA-256 | `946850c2354e848a72212a4f15292c8e5564747f4bc60e010a307904d38db8e3` |
| Source revision | `029ccb181a7a6352856df564cc98815a34397388`, clean at the start and end of the sweep |
| Benchmark executable SHA-256 | `8959c1d0eb289072cb1647ed63813214362f0d879a163107b61b8a96cb275cb6` |
| Shader bundle | Seventeen SPIR-V/reflection artifacts, each SHA-256 recorded in the summary and verified unchanged after the sweep |
| Host and device | Linux, NVIDIA GeForce RTX 2080 Ti; NVIDIA driver 595.84; physical Vulkan GPU selected by the renderer |
| Build | Clang/CMake `linux-release`, 1920 × 1080, Vulkan validation disabled for timing |
| Workload | Fixed camera, ten meshes, 0/4/16/32/64/128 point lights; local shadows both off and on; Direct, GPU frustum and GPU occlusion |
@@ -18,11 +19,11 @@ The exact command was:
```sh
python3 tools/benchmark_p3_lighting.py --sweep \
--executable build/linux-release/faset_p3_lighting_benchmark \
--output /tmp/faset-p3-release-2026-09-24 \
--output /tmp/faset-p3-release-hashed-2026-09-24 \
--driver NVIDIA-595.84 --validation off
```
The [summary](data/p3-lighting-2026-09-24/forward/summary.json), [merged per-frame CSV](data/p3-lighting-2026-09-24/forward/merged.csv), and [individual raw files](data/p3-lighting-2026-09-24/forward/raw/shadows-off_direct_lights-000_run-1.csv) retain the counters and acquisition order. All 108 individual files are in the adjacent `raw/` directory. The wrapper rejects a dirty source checkout, a changed benchmark binary, a Debug executable, mixed devices/drivers/lighting paths, visibility fallback, validation errors, nonzero omitted-light counts, or inconsistent shadow-face counts. The driver name supplied to the benchmark was cross-checked against `nvidia-smi` and `vulkaninfo`; the device name is reported by Vulkan. This remains a single-machine synthetic scene measurement.
The [summary](data/p3-lighting-2026-09-24/forward/summary.json), [merged per-frame CSV](data/p3-lighting-2026-09-24/forward/merged.csv), and [individual raw files](data/p3-lighting-2026-09-24/forward/raw/shadows-off_direct_lights-000_run-1.csv) retain the counters and acquisition order. All 108 individual files are in the adjacent `raw/` directory. The wrapper rejects a dirty source checkout, a changed benchmark binary or shader bundle, a Debug executable, mixed devices/drivers/lighting paths, visibility fallback, validation errors, nonzero omitted-light counts, or inconsistent shadow-face counts. The driver name supplied to the benchmark was cross-checked against `nvidia-smi` and `vulkaninfo`; the device name is reported by Vulkan. This remains a single-machine synthetic scene measurement.
## Gate result
@@ -30,12 +31,12 @@ Each configuration's p50 is the median of three run medians. The overhead compar
| Shadow setting | Visibility | Added raster at 32 lights | At 64 lights | At 128 lights |
| --- | --- | ---: | ---: | ---: |
| Off | Direct | 0.502 ms (31.0%) | 1.012 ms (62.4%) | 2.033 ms (125.5%) |
| Off | GPU frustum | 0.507 ms (32.3%) | 1.017 ms (64.8%) | 2.030 ms (129.4%) |
| Off | GPU occlusion | 0.507 ms (28.9%) | 1.020 ms (58.2%) | 2.028 ms (115.7%) |
| On | Direct | 0.534 ms (35.3%) | 1.046 ms (69.1%) | 2.074 ms (137.0%) |
| On | GPU frustum | 0.538 ms (34.9%) | 1.056 ms (68.5%) | 2.077 ms (134.7%) |
| On | GPU occlusion | 0.539 ms (30.7%) | 1.057 ms (60.2%) | 2.079 ms (118.4%) |
| Off | Direct | 0.501 ms (31.8%) | 1.008 ms (63.9%) | 2.026 ms (128.5%) |
| Off | GPU frustum | 0.506 ms (34.6%) | 1.017 ms (69.7%) | 2.033 ms (139.2%) |
| Off | GPU occlusion | 0.507 ms (27.5%) | 1.021 ms (55.3%) | 2.032 ms (110.0%) |
| On | Direct | 0.535 ms (35.6%) | 1.046 ms (69.6%) | 2.071 ms (138.0%) |
| On | GPU frustum | 0.536 ms (34.5%) | 1.050 ms (67.6%) | 2.066 ms (133.1%) |
| On | GPU occlusion | 0.536 ms (30.7%) | 1.051 ms (60.1%) | 2.064 ms (118.2%) |
All 3,240 frames submitted the requested local-light count, reported zero Vulkan errors, and retained the requested visibility mode. Validation was **off** during the performance sweep; zero reported errors here is not a validation-layer pass. Separate GPU tests exercise validation and image correctness.