Files
Faset_Engine/docs/validation/p1-iteration-2026-09-24/final-release
Emil 2c1cf2fecc
Native and manual checks / native (ubuntu-24.04) (push) Failing after 36s
Native and manual checks / manual (push) Successful in 30s
Native and manual checks / native (windows-2025) (push) Canceled after 0s
Windows editor and software Vulkan / windows-graphics (push) Canceled after 0s
Record final combined P1 Release reference and memory miss
2026-09-24 05:18:03 +03:00
..

Final combined P1/P3 Release reference — 2026-09-24

This is the clean-source, physical-GPU reference for the checked-in playable collect-2d, collect-3d, and Lua-only games at 4a3453e2b1868555d833f578d43f48b8bc47d41a. The real Release Editor exported each project to a self-contained package. The packages were copied to Unicode-named paths outside their disposable source projects, and those source paths were hidden while each Player ran from an unrelated empty working directory. The 3D export imported and packaged the Blender exit arch. All three games passed standalone CPU validation and rendered 120/120 offscreen Vulkan frames on the physical NVIDIA GeForce RTX 2080 Ti with the Khronos validation layer active and zero validation errors. The verifier report, 2D manifest, 3D manifest, and Lua manifest retain input, package and binary hashes. The toolchain supplement binds the unmodified report and 240-frame summary to the exact Editor, CMake, Ninja, Clang and Slang binaries. The verifier recorded a clean checkout at its start, and the second profiles used the same relocated Player binaries.

Relocated package Runtime Frames GPU validation Source paths hidden
collect-2d C++ 120/120 active, 0 errors yes
collect-3d C++ with Blender asset 120/120 active, 0 errors yes
lua Lua-only 120/120 active, 0 errors yes

The two same relocated C++ executables then ran a second, sequential 240-frame profile. For each run, the disposable source-project paths were again hidden and restored afterward. These exact 2D/3D samples used default Direct visibility and temporal Off, 1280×720 offscreen Vulkan, synchronous readback, the active Khronos validation layer and synthetic fixed-step simulation. No frame was discarded as a warm-up: the table uses nearest-rank p95 over all 240 completed frames, including the first. Both profiles report zero validation errors. Raw 2D and 3D profiles, exact 2D invocation and 3D invocation, and the machine-readable budget comparison support every value below.

Exact-scene observation Initial P1 tracking budget 2D 3D
Frame wall p95 ≤4 ms 2.694 ms 3.036 ms
GPU timestamp p95 ≤1 ms 0.573 ms 0.617 ms
Readback CPU p95 ≤1 ms 0.559 ms 0.561 ms
Simulation p95 ≤0.5 ms 0.242 ms 0.300 ms
Scene snapshot p95 ≤0.5 ms 0.197 ms 0.288 ms
main() to first frame ≤500 ms 295.4 ms 248.3 ms
Maximum explicit Vulkan allocation ≤20 MiB 43.022 MiB — miss 43.118 MiB — miss

The memory miss is real, not a profile rounding artifact: 2D used 45,112,032 bytes and 3D used 45,212,272 bytes, while the earlier threshold was 20,971,520 bytes. Each run counted a 16 MiB sun atlas and a 16 MiB local-light atlas inside the live Vulkan allocation total. The 2D sprites produced no sun-shadow raster work; the 3D meshes rendered four sun cascades. Neither sample used a local shadow face. Both 2048² D32 atlases are currently allocated when the Renderer is created, even when the scene never uses them. The remaining explicit allocations were 11.022 MiB (2D) and 11.118 MiB (3D). Lazy local-atlas allocation is a sensible follow-up, but alone it would still leave the 3D scene above 20 MiB with its current 2048² sun atlas. We have kept the physical counter and shadow resolution intact and recorded the miss rather than silently changing either to satisfy an older threshold. The 20 MiB value is an initial tracking budget for tiny pre-P3 scenes, not a functional export gate; any revised shadow-memory budget needs its own measured baseline.

The Lua run establishes relocated Release execution, not a 2D/3D latency budget. The 2026-09-18 Release reference used these scenes on the same GPU but an evolving earlier working tree; its numbers are historical context, not this clean combined revision. This run measures small scenes on one active Linux desktop and one driver (NVIDIA 595.84). GPU timestamps exclude CPU work, renderer_readback_cpu is a map/copy/unmap duration inside the renderer call, and the explicit allocation counter excludes driver-internal memory. It does not establish production-game scaling, whole-process VRAM usage, display-paced FPS, physical Windows GPU performance or absence of all leaks.

Reproduce and inspect

From this repository with the dependencies configured:

cmake --preset linux-release
cmake --build --preset linux-release --target faset_editor --parallel 2
python3 tools/verify_playable_exports.py \
  --editor build/linux-release/faset_editor \
  --output /tmp/faset-p1-release-new \
  --standalone-root /tmp/faset-p1-packages-new \
  --include-lua
python3 docs/validation/p1-iteration-2026-09-24/final-release/profile_exact_scenes.py \
  --verification /tmp/faset-p1-release-new/report.json \
  --output /tmp/faset-p1-release-new/reference-240

Use new, empty output and standalone directories. The second helper refuses an incomplete or dirty-tree verifier report, hides the disposable source projects during each 240-frame run, checks exact settings and validation, then restores them. The original verifier log, 240-frame log, raw 120-frame profiles for 2D, 3D and Lua, PPM captures, and the SHA-256 file list are retained here. The large disposable native build directories and relocated executable packages remain under /tmp; their input, manifest and executable hashes are in the reports.

Relocated 2D sample

Relocated 3D sample with Blender asset

Relocated Lua sample