Compare commits
20
Commits
49ab3756b4
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07f7b42d64 | ||
|
|
76edf9ccc9 | ||
|
|
c632796638 | ||
|
|
736e3e9bc3 | ||
|
|
05704fd826 | ||
|
|
74072b67d7 | ||
|
|
af72922179 | ||
|
|
6b7dab6242 | ||
|
|
e16736c518 | ||
|
|
17d80b0004 | ||
|
|
017badfc4d | ||
|
|
c1b7e0809a | ||
|
|
22943169cc | ||
|
|
4485763114 | ||
|
|
431d213451 | ||
|
|
bde94a1bca | ||
|
|
ddb10953c6 | ||
|
|
004ca6d959 | ||
|
|
26cc48e674 | ||
|
|
bb9c51a665 |
No files matched your search
@@ -1,62 +0,0 @@
|
||||
# Handoff → Forge (Ozan's Windows box): build Windows 4.7 + ship GodotSharp
|
||||
|
||||
**Date:** 2026-06-19 · **From:** macOS 4.7 native-module migration · **For:** Windows build owner
|
||||
|
||||
## Why
|
||||
|
||||
The engine moved to **Godot 4.7** and **Terrain3D + agent_skinned are now native engine modules**
|
||||
(compiled into the binary — no GDExtension `.framework`). macOS is done and shipped in this repo
|
||||
(`engine/macos-arm64/`). **Windows is still 4.6.5 with the GDExtension** and must be brought up to
|
||||
4.7 the same way, or Windows teammates can't run the new `ariki-game` (the game-side cutover removed
|
||||
the terrain GDExtension).
|
||||
|
||||
## The critical bit (don't skip)
|
||||
|
||||
After the 4.7 build you **must regenerate GodotSharp and ship it next to the binary.** A native
|
||||
module changes the engine's class list; the C# bindings (`GodotSharp`) must be regenerated to
|
||||
include `Terrain3D` / `MultiSkinnedMeshInstance3D`, or the game throws
|
||||
`Wrapper class not found for type: Terrain3D` (terrain = water, animals frozen). The engine does
|
||||
**not** regenerate GodotSharp at runtime.
|
||||
|
||||
## Steps (Windows)
|
||||
|
||||
1. **Sync engine source** to the current `tinqs/engine` `main` (single 4.7 snapshot, `4ba7b5b`).
|
||||
```
|
||||
cd engine
|
||||
tinqs pull # or: git fetch origin && git checkout main && git reset --hard origin/main
|
||||
```
|
||||
2. **Build the editor**:
|
||||
```
|
||||
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes
|
||||
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes windows_subsystem=console # console binary
|
||||
```
|
||||
3. **Regenerate the mono glue + GodotSharp assemblies** (this is the step that fixes the wrapper errors):
|
||||
```
|
||||
bin\tinqs.windows.editor.x86_64.mono.exe --headless --generate-mono-glue modules\mono\glue
|
||||
python modules\mono\build_scripts\build_assemblies.py --godot-output-dir=bin --godot-platform=windows
|
||||
```
|
||||
Confirm `bin\GodotSharp\Api\Debug\GodotSharp.dll` exists and that
|
||||
`modules\mono\glue\...\Generated\Constructors.cs` contains `Terrain3D` (grep it).
|
||||
4. **If you hit the same build errors I did** (already fixed in `main`, but for reference): a core
|
||||
module can't expose an editor-API type — `Terrain3D::set_plugin` must take `Object*` not
|
||||
`EditorPlugin*`; `Terrain3DAssetResource` must be `GDREGISTER_ABSTRACT_CLASS`; drop the redundant
|
||||
`Terrain3DRegion::duplicate` bind. These are already in `main` — a clean pull should have them.
|
||||
5. **Drop into this builds repo** (`engine/windows-x64/`):
|
||||
- `tinqs.windows.editor.x86_64.mono.exe` (+ `.console.exe`)
|
||||
- the whole `GodotSharp/` folder ← **new requirement; was previously .gitignored**
|
||||
6. **Update `manifest.json`** windows-x64 block: version `4.7…`, `engine_commit` `4ba7b5b`, new
|
||||
sha256s, add `"godotsharp": "engine/windows-x64/GodotSharp"`, clear the "pending" note.
|
||||
7. `tinqs push`.
|
||||
|
||||
## Verify
|
||||
|
||||
On a Windows machine with `ariki-game`: run the update-engine skill (`.agents/skills/update-engine`,
|
||||
Windows path), launch `game.sh run`. Healthy = terrain renders, animals animate, **0**
|
||||
`Wrapper class not found`, no `.NET assemblies not found`.
|
||||
|
||||
## Notes
|
||||
|
||||
- `.gitattributes` already LFS-tracks `engine/**`, so the binary + GodotSharp go to LFS automatically.
|
||||
- The macOS side in this repo is the reference for exactly what the layout should look like.
|
||||
- Game-side cutover (GDExtension removal, `project.godot`→4.7) is committed on `ariki-game` `main`
|
||||
(held pending team sync) — Windows teammates need this engine before that lands for them.
|
||||
@@ -1,31 +0,0 @@
|
||||
# Forge (Windows) — rebuild engine main at 4fde0e94 (G2 pooled GPU cull + static shadow fixes)
|
||||
|
||||
Mac `engine/macos-arm64` is engine `4fde0e94` (2026-10-18, `4.7.2.stable.mono.custom_build.4fde0e94d`). Windows is
|
||||
`9dcc5d458`. **The game pins `4.7.2@4fde0e94d`** (owner's call: publish Mac-only while Windows sleeps), and
|
||||
`shaders/tree_wind.gdshader` uses the new `STATIC_SHADOW_AT_REST` built-in, so a 9dcc5d45 engine both hits the
|
||||
mismatch dialog and fails that shader. Rebuild before anything else on Windows.
|
||||
|
||||
## Build
|
||||
`tinqs pull` the engine and `git checkout 4fde0e94` (later main commits may be docs or G4 work; build the pinned hash).
|
||||
Flags from the `windows-x64` manifest block. Regenerate GodotSharp from that binary (`--generate-mono-glue
|
||||
modules/mono/glue`, `build_assemblies.py --godot-output-dir=bin --godot-platform=windows`) and publish the WHOLE
|
||||
`bin/GodotSharp` (`Api/` and `Tools/`).
|
||||
|
||||
## New since 9dcc5d45 (not compiled on Windows yet)
|
||||
- G2 pooled GPU cull: `servers/rendering/gpu_cull_arena.h`, `renderer_rd/shaders/effects/multimesh_cull.glsl`,
|
||||
`renderer_rd/effects/multimesh_cull.*`, `storage_rd/mesh_storage.*`, `forward_clustered/render_forward_clustered.cpp`.
|
||||
Three shared storage arenas (each < 512 MiB, the D3D12 raw-buffer limit); no buffer device address.
|
||||
Switch `rendering/occlusion_culling/gpu_cull_pooled` / `RenderingServer.multimesh_gpu_cull_set_pooled`, default off.
|
||||
- Fixed shadow LOD band for gpu-culled MultiMeshes (`gpu_cull_shadow_fixed_band`, `multimesh_set_gpu_shadow_band`), default off.
|
||||
- `STATIC_SHADOW_AT_REST` shader built-in, true only in static shadow tile passes when
|
||||
`rendering/lights_and_shadows/directional_shadow/static_casters_at_rest` is on; default off.
|
||||
|
||||
## Checks
|
||||
1. Oracle `bash tests/gpu_oracle/multimesh_cull_pool/run.sh <exe> d3d12` (Mac Metal: 4524/4524). This gates making
|
||||
pool the default. Also re-run `tests/gpu_oracle/draw_indirect_count/run.sh <exe> d3d12` (expect 22/2 as before).
|
||||
2. Game in-world on the new pair: `tree_wind` compiles (no `Unknown identifier STATIC_SHADOW_AT_REST`).
|
||||
`env gpucull status`; then the G0/G1 profile (`.agents/handoffs/2026-10-18-windows-g0-render-thread-profile.md`
|
||||
in ariki-game) with states `"pool off=gpucull:pool off" "pool on=gpucull:pool on"`. Mac result: cull dispatches
|
||||
258/422/464 → 2, fps +1/0/+1, render CPU −0.3 ms at the village; Windows records those dispatches on its render
|
||||
thread, so expect a larger gain there. Report the table.
|
||||
3. Publish windows-x64 here (binary + console binary + complete GodotSharp, sha256s, manifest note, CRLF), push.
|
||||
@@ -1,48 +0,0 @@
|
||||
# Forge (Windows) — rebuild engine main at 0ec39c95 (GPU diet + R0 P5)
|
||||
|
||||
Mac `engine/macos-arm64` is engine `0ec39c95` (2026-10-17). Windows is still `1e7be28b1`. The game pins `4.7.2`
|
||||
without a hash until Windows carries the same commit; then pin `4.7.2@0ec39c95` in ariki-game `project.godot`.
|
||||
|
||||
## Build
|
||||
`tinqs pull` the engine, then the `windows-x64` manifest flags (MSVC, `platform=windows target=editor
|
||||
module_mono_enabled=yes`), regenerate GodotSharp from that binary, publish binary + console binary + GodotSharp here
|
||||
with sha256s, note in `manifest.json`.
|
||||
|
||||
## New and NOT yet compiled on Windows (no toolchain on the Mac)
|
||||
- `platform/windows/crash_report_windows.{h,cpp}`, `crash_handler_windows_seh.cpp` / `_signal.cpp` (MiniDumpWriteDump,
|
||||
pre-started writer thread, unhandled-exception filter), `os_windows_stack_sampling.cpp` (freeze watchdog stack walk),
|
||||
dbghelp/psapi linked in every target (`detect.py`, `SCsub`).
|
||||
- `drivers/d3d12/rendering_device_driver_d3d12.{h,cpp}`: GetDeviceRemovedReason + DRED on device removal.
|
||||
- Verification checklist: engine `.agents/wiki/crash-freeze-and-error-reporting.md` (8 steps: main-thread crash,
|
||||
worker-thread crash, stack overflow, native freeze, C# freeze, D3D12 TDR via `dxcap -forcetdr --gpu-breadcrumbs`,
|
||||
`--disable-crash-handler` writes nothing, release template build links dbghelp).
|
||||
|
||||
## Bench after the build (the pacer box)
|
||||
ariki-game `.agents/plans/gpu-frame-diet-ui-opaque-prepass-2026-10-17.md` and `render-thread-diet-2026-10-17.md`:
|
||||
run the Jungle/Main stands with `--gpu-profile`; the RENDER CPU PROFILE block now prints `_draw wall` and
|
||||
`end_frame (graph replay + submit)` — the split of the 12.6 ms render-thread floor that Phase 0 asked for.
|
||||
|
||||
|
||||
## Next: both platforms to 7fb81364 (crash-report review fixes)
|
||||
|
||||
Engine main is `7fb81364` (`a040761b` + `7fb81364` on top of `0ec39c95`): freeze-report note/context read under a lock,
|
||||
debugger pauses never count as stall time, macOS sidecar `thread_id`, one first-wins atomic claims a Windows crash.
|
||||
No API change — GodotSharp is unchanged. Mac has built `7fb81364` (Kraken, `4.7.2.stable.mono.custom_build.7fb81364b`)
|
||||
but does NOT publish it yet: the game pins `4.7.2@0ec39c954`, so a lone Mac publish would lock every Mac out.
|
||||
|
||||
Windows (Forge):
|
||||
1. Build `7fb81364` with the manifest flags. The Windows files changed here were NOT compiled on the Mac:
|
||||
`platform/windows/crash_handler_windows_seh.cpp`, `platform/windows/crash_report_windows.{h,cpp}` — if they fail,
|
||||
write the error here.
|
||||
2. If you have a `tests=yes` build: `--test --test-case="*CrashReport*,*FreezeDetector*,*FreezeWatchdog*,*AgentLog*"`.
|
||||
3. Publish windows-x64 `7fb81364`, then tell Kraken: Mac publishes its `7fb81364` binary and the pin moves to
|
||||
`4.7.2@7fb81364b` in the same game push.
|
||||
|
||||
## 2026-10-17 Windows side done (Forge/ZCode)
|
||||
|
||||
Windows published `7fb81364` (builds `871000b`): both crash files compiled clean, editor target only,
|
||||
GodotSharp regenerated from the binary (byte-identical bindings, as expected — no API change).
|
||||
No `tests=yes` build on this box, so the `*CrashReport*/*FreezeDetector*/*FreezeWatchdog*/*AgentLog*`
|
||||
test cases did NOT run here — still owed. Headless game boot on the new binary: clean, 0 binding errors.
|
||||
Game pin is version-only `4.7.2` as of ariki-game `main` — Kraken: publish your `7fb81364` binary, then
|
||||
flip the pin to `4.7.2@7fb81364b` in the same game push (both platforms will carry it).
|
||||
@@ -1,12 +0,0 @@
|
||||
# Forge (Windows) — rebuild pair from engine main ≥ 615e852f, re-judge the render verdicts, pin (2026-10-05)
|
||||
|
||||
macOS pair `615e852f` (code `c76f2ecc`) is published here. Windows is still `b1bc0aef` (2026-09-28).
|
||||
|
||||
1. Build the Windows editor + console pair from `tinqs/engine` main with the `windows-x64` manifest flags
|
||||
(`platform=windows target=editor arch=x86_64 module_mono_enabled=yes d3d12=yes angle=yes accesskit=yes`),
|
||||
regenerate GodotSharp from that exact binary, smoke (0 wrapper errors), publish here, update `manifest.json` +
|
||||
`README.md`.
|
||||
2. Then pin `tinqs/required_engine_build="4.7.2@<hash7+>"` in `ariki-game/project.godot` (both platforms on the same commit).
|
||||
3. Re-judge on Windows what the Mac measured (frame GPU-bound on M1): static shadow cache default (now OFF on Apple
|
||||
silicon game-side, ON elsewhere — keep ON on Windows only if `inverted` ≥ `cache_off` fps), GPU veg bands, HLOD.
|
||||
Full recipe + numbers: `ariki-game/.agents/handoffs/2026-10-05-forge-windows-render-bench-handover.md`.
|
||||
@@ -1,46 +0,0 @@
|
||||
# Forge (Windows) — rebuild engine main at 9dcc5d45 (SSCS + hero combine + shadow fixes + indirect count)
|
||||
|
||||
Mac `engine/macos-arm64` is engine `9dcc5d45` (2026-10-18, `4.7.2.stable.mono.custom_build.9dcc5d458`). Windows is
|
||||
still `7fb81364b`. **The game already pins `4.7.2@9dcc5d458`** (owner's call: publish Mac-only), so every Windows
|
||||
engine is refused with the mismatch dialog until this is published. `TINQS_ENGINE_SKIP_CHECK=1` runs the old engine
|
||||
meanwhile, but the sun then shows shadow acne (the game's sun bias 0.014 expects the #124348 bias fix).
|
||||
|
||||
## Build
|
||||
`tinqs pull` the engine (main is `91b11b70` = `9dcc5d45` + docs only), build with the `windows-x64` manifest flags
|
||||
(`platform=windows target=editor module_mono_enabled=yes -j32`). The `--version` hash will read `91b11b70…` unless
|
||||
you `git checkout 9dcc5d45` first; either is fine (docs-only difference) — record what you built in the manifest.
|
||||
Regenerate GodotSharp from that binary: `--generate-mono-glue modules/mono/glue`, then `build_assemblies.py
|
||||
--godot-output-dir=bin --godot-platform=windows`. Publish the WHOLE `bin/GodotSharp` (`Api/` AND `Tools/`;
|
||||
`Tools/` is always written to `bin/GodotSharp/Tools`, a scratch output dir has no `Tools/` and the editor `--import`
|
||||
then fails with "Dependency resolution failed for GodotTools.dll").
|
||||
|
||||
## New since 7fb81364 (none of it compiled on Windows yet)
|
||||
- `298bc2a6` `RenderingDevice.draw_list_draw_indirect_count`: D3D12 native path (`drivers/d3d12/rendering_device_driver_d3d12.cpp`).
|
||||
- `2ce4f359` screen-space contact shadows for directional lights (compute shader `screen_space_contact_shadows.glsl`,
|
||||
binding 39 in the Forward+ scene shader, `DirectionalLightData::sscs_index` at byte 64).
|
||||
- `bb1f12e4` tight directional caster culling on each cascade's real frustum (upstream #121775).
|
||||
- `5df5c8df` hero shadow min-combine (`RenderingServer.instance_light_directional_set_hero_shadow_spot`).
|
||||
- `9dcc5d45` depth bias = `MAX(shadow_blur, 1)` scale (upstream #124348).
|
||||
|
||||
## Checks
|
||||
1. Oracle: `bash tests/gpu_oracle/draw_indirect_count/run.sh <tinqs.windows.editor.x86_64.mono.exe> d3d12` from Git Bash.
|
||||
Expect `ORACLE: 22 passed, 0 failed`, a `SKIP base-instance` line, exit 0 (engine wiki `draw-indirect-count.md`
|
||||
§ Windows checklist; Mac/Metal was 24/24). Also the Vulkan driver if the game runs Vulkan there: `… run.sh <exe> vulkan`.
|
||||
2. Game in-world on the new pair (pin satisfied):
|
||||
- `env herocombine` status reports `mode combine (engine combine yes)`; the hero's spot shadow merges with the sun's.
|
||||
- `env contactshadow on` → contact shadows under feet/grass; `--gpu-profile` shows `SSCS Main` / `Process SSCS`
|
||||
(Mac M1 Max ≈ 0.43 ms at the beach); `env contactshadow length 0|2`, `blur 0` change it live; `off` restores.
|
||||
- Sun shadows: no acne stripes, feet keep contact on bright sand (bias 0.014 x MAX(0.35, 1)).
|
||||
3. Publish windows-x64 here (binary + console binary + complete GodotSharp, sha256s, manifest note, CRLF), push.
|
||||
|
||||
## 2026-10-18 Windows side done (Forge/ZCode)
|
||||
|
||||
Windows published `9dcc5d458` (built at `9dcc5d458f` — docs-only commits excluded so both platforms + the pin
|
||||
share one hash). Whole `GodotSharp` published (Api + Tools). Headless game boot: clean, 0 binding errors.
|
||||
- Oracle `draw_indirect_count` d3d12 (RTX 5080): **22 passed, 2 failed** — the 2 base-instance cases, the
|
||||
documented D3D12 gap (expected-fail per draw-indirect-count.md; got `[0]`/`[0,1]` where `first_instance` is
|
||||
ignored). They RAN rather than SKIPped — the skip gate seems D3D12-absent; same result either way.
|
||||
- `--gpu-validation` could NOT run: D3D12 debug layer is not installed on Forge (`_initialize_debug_layers`
|
||||
→ ERR_QUERY_FAILED → context fell back to Vulkan, which then reports SUPPORTS_DRAW_INDIRECT_COUNT false —
|
||||
the capability bit only exists on Metal/D3D12 in this fork). Install Graphics Tools for the validation pass.
|
||||
- In-world checks (herocombine / contactshadow / SSCS profile / sun acne at bias 0.014): still owed here.
|
||||
@@ -1,34 +0,0 @@
|
||||
# Handoff → Forge (Ozan's Windows box): rebuild windows-x64 with the static shadow cache (2026-09-28)
|
||||
|
||||
**From:** Fable orchestrator on the Mac · **Why:** `tinqs/engine` main gained the directional static shadow cache
|
||||
(Part 1) and the stepped-sun crossfade (Part 2) — Forward+ renderer, new project settings, six+four
|
||||
`RenderingServer` methods, a second depth atlas. The game (`ariki-game` ≥ 19490e358) calls the new methods by
|
||||
name and degrades loudly on an engine without them, so Windows teammates keep working on the old binary but get
|
||||
no cache. Rollout plan: `ariki-game/.agents/handoffs/2026-09-28-static-shadow-cache-rollout.md`.
|
||||
|
||||
## Steps (mirror of `forge-windows-4.7.md`, same toolchain as the fec9847 build)
|
||||
|
||||
1. `cd engine && tinqs pull` → `git log --oneline -1` must show the Part 2 commit named in the rollout plan.
|
||||
2. Build (the flags recorded in `manifest.json` for fec9847):
|
||||
```
|
||||
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes d3d12=yes angle=yes accesskit=yes
|
||||
scons platform=windows target=editor arch=x86_64 module_mono_enabled=yes d3d12=yes angle=yes accesskit=yes windows_subsystem=console
|
||||
```
|
||||
3. Regenerate glue + GodotSharp (matched-pair law — do not skip even though no C# binding is *required* by the
|
||||
compiler; the manifest promises the pair):
|
||||
```
|
||||
bin\tinqs.windows.editor.x86_64.mono.exe --headless --generate-mono-glue modules\mono\glue
|
||||
python modules\mono\build_scripts\build_assemblies.py --godot-output-dir=bin --godot-platform=windows
|
||||
```
|
||||
4. Copy into this repo: `engine/windows-x64/tinqs.windows.editor.x86_64.mono.exe`, `...mono.console.exe`, and the
|
||||
whole `GodotSharp/` (replace, never merge).
|
||||
5. `manifest.json` → `engine.windows-x64`: `version` (from `--version`), `engine_commit`, both sha256s, `built_on`,
|
||||
`built_by`, `note` ("static shadow cache Part 1 + Part 2; GodotSharp regenerated"). Leave `macos-arm64` alone.
|
||||
6. `tinqs push` (LFS).
|
||||
|
||||
## Verify
|
||||
|
||||
On a Windows `ariki-game` checkout: run the `update-engine` skill, `game.sh run`, host a world, then
|
||||
`POST /command {"command":"env","key":"staticshadow","value":"on"}` — the log must NOT print
|
||||
`[STATIC-SHADOW] engine without the cache`, and `GET /perf` must show `staticShadow` with `enabled: true`.
|
||||
Terrain renders, animals animate, 0 `Wrapper class not found`.
|
||||
@@ -7,12 +7,10 @@ Tinqs/Ariki stack, plus `manifest.json` tracking exact shipped versions. Source
|
||||
`tinqs/engine`, `tinqs/ariki-game`, `tinqs/ariki-sim` — this repo only holds built output.
|
||||
|
||||
- macOS arm64: engine 4.7, native Terrain3D module, GodotSharp shipped.
|
||||
- Windows x64: engine 4.6.5 (pre-4.7), GDExtension Terrain3D, 4.7 upgrade pending Forge —
|
||||
see `.agents/handoffs/forge-windows-4.7.md`.
|
||||
- Windows x64: engine 4.7, built on Forge, GodotSharp shipped.
|
||||
|
||||
## In flight
|
||||
|
||||
- Windows 4.7 engine build + matching GodotSharp (blocked on Forge machine — see handoff).
|
||||
- Longer-term: CI (Gitea Actions) building on push and publishing here / to S3 — tracked in
|
||||
`docs/ai/plans/build-pipeline-architecture-2026-06-07.md` (hub repo, not here).
|
||||
|
||||
|
||||
@@ -31,10 +31,10 @@ into GodotSharp, so GodotSharp had to be regenerated — and must ship here alon
|
||||
|
||||
| Platform | Engine | Terrain3D | GodotSharp shipped? |
|
||||
|---|---|---|---|
|
||||
| `engine/macos-arm64/` | **4.7.2** (`4fde0e94`) — G2 pooled GPU cull (one reset + one cull dispatch per camera render), fixed shadow LOD band and `STATIC_SHADOW_AT_REST` for static shadow tiles (all default off), on top of everything `9dcc5d45` had | built-in module | ✅ yes (`GodotSharp/`) |
|
||||
| `engine/windows-x64/` | **4.7.2** (`9dcc5d45`) — one commit behind macos-arm64 (pin is 4fde0e94d, rebuild pending): screen-space contact shadows (directional), hero shadow min-combine, cascade caster-culling + shadow-bias fixes from upstream 4.8, `draw_list_draw_indirect_count` (D3D12), on top of everything `7fb81364` had; `template_release` here is still the `1e7be28b` tree | built-in module | ✅ yes (`GodotSharp/`) |
|
||||
| `engine/macos-arm64/` | **4.7.2** (`73d20a40`) — `d4940046` plus the #250 parallel-recording nesting fix and the Texture2DRD bind-race fix | built-in module | ✅ yes (`GodotSharp/`) |
|
||||
| `engine/windows-x64/` | **4.7.2** (`73d20a40b`) — same hash as macos-arm64: parallel replay+recording (game ships both ON) + VUID-00050 pool reset + the #250 recording-nest FATAL fix + the Texture2DRD bind-race fix (milky ocean); `template_release` here is still the `1e7be28b` tree | built-in module | ✅ yes (`GodotSharp/`) |
|
||||
|
||||
Mac is engine `4fde0e94` as of 2026-10-18 (`--version` prints `4.7.2.stable.mono.custom_build.4fde0e94d`): G2 pooled GPU cull over shared storage arenas (`rendering/occlusion_culling/gpu_cull_pooled`, game dial `env gpucull pool`), a fixed shadow LOD band for gpu-culled MultiMeshes (`gpu_cull_shadow_fixed_band`, `env gpucull shadowband`) and the `STATIC_SHADOW_AT_REST` shader built-in (`static_casters_at_rest`, `env gpucull staticrest`); all default off. GodotSharp regenerated (API + Tools). Oracles on Metal: `multimesh_cull_pool` 4524/4524, `draw_indirect_count` 24/24. The game pins `4.7.2@4fde0e94d` (its `tree_wind.gdshader` uses the new built-in), so Windows is locked out until Forge rebuilds 4fde0e94 (`.agents/handoffs/forge-windows-g2-4fde0e94.md`). Windows is engine `9dcc5d45`: Forge rebuilt at `9dcc5d458f` so both platforms and the `4.7.2@9dcc5d458` pin share one hash. Oracle `draw_indirect_count` on D3D12 (RTX 5080): 22 passed, 2 failed — the base-instance pair, the documented D3D12 gap (`.agents/handoffs/forge-windows-sscs-9dcc5d45.md`); `--gpu-validation` needs the D3D12 debug layer, which Forge lacks (Graphics Tools not installed). In-world checks (`herocombine`, `contactshadow`, SSCS in `--gpu-profile`, sun acne at bias 0.014) still owed on Windows.
|
||||
Mac is engine `73d20a40` as of 2026-10-19 (`--version` `4.7.2.stable.mono.custom_build.73d20a40b`): `d4940046` plus `219b914c` (#250, parallel draw-list sub-recordings nest; Windows Ultra-bench FATAL) and `73d20a40` (RD texture wrappers allocate their RS texture before the render-thread bind, fixing the milky ocean under the separate render thread); GodotSharp regenerated, API unchanged. **Windows is also engine `73d20a40b` as of 2026-10-19** — Forge fast-published on the owner's request after GodotSharp regen (oracle + headless smoke on this exact hash still owed; both fixes sit in the engine's own oracle coverage). Before this, Windows `d49400463` verified the VUID-00050 pool-reset fix with a validated oracle run (10/10, zero VUIDs) and carried the parallel features' fps-lane results (no regression, rGPU 8.1→6.8 ms, soak + eye check pass, game ships both ON); `draw_indirect_count` d3d12 22/0 with debug layer, `multimesh_cull_pool` d3d12 4524/4524 (pooled-cull gate met); Vulkan SDK + Graphics Tools installed on Forge. Still owed on Windows: oracle on `73d20a40b`, a `--gpu-validation` in-game soak, tests=yes unit suites, crash checklist. Underneath: `e64890fd` (Apple autorelease-drain + G4 census) on `4fde0e94` (G2 pooled cull, fixed shadow band, `STATIC_SHADOW_AT_REST`) on the `9dcc5d458` pair (SSCS contact shadows, hero shadow min-combine, upstream 4.8 shadow fixes #121775/#124348 with the game sun bias 0.014, `draw_list_draw_indirect_count`).
|
||||
|
||||
Long-term: CI (Gitea Actions) builds on push and publishes here / to S3 —
|
||||
`docs/ai/plans/build-pipeline-architecture-2026-06-07.md`.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+13
-13
@@ -4,32 +4,32 @@
|
||||
"macos-arm64": {
|
||||
"binary": "engine/macos-arm64/tinqs.macos.editor.arm64.mono",
|
||||
"godotsharp": "engine/macos-arm64/GodotSharp",
|
||||
"version": "4.7.2.stable.mono.custom_build.4fde0e94d",
|
||||
"version": "4.7.2.stable.mono.custom_build.73d20a40b",
|
||||
"engine_repo": "tinqs/engine",
|
||||
"engine_commit": "4fde0e94",
|
||||
"sha256": "a37ceb6d8aa5772f50c61cad12ee738881b9d060df00d9f392ae40b2437d8e54",
|
||||
"engine_commit": "73d20a40",
|
||||
"sha256": "e3f5256c7855e4faf03e1c8e53e3c02e78e1d4e146b19b7bda3105445340f6ba",
|
||||
"target": "editor",
|
||||
"built_on": "2026-10-18",
|
||||
"built_by": "Ozan/Kraken via Claude (G2 pooled GPU cull + static shadow fixed band / casters at rest)",
|
||||
"built_on": "2026-10-19",
|
||||
"built_by": "Ozan/Kraken via Claude (parallel recording nesting + Texture2DRD bind race)",
|
||||
"toolchain": "Xcode (Apple Silicon), SCons, VulkanSDK 1.4.350.0",
|
||||
"scons_flags": "platform=macos target=editor arch=arm64 module_mono_enabled=yes vulkan_sdk_path=~/VulkanSDK/1.4.350.0/macOS",
|
||||
"note": "Mac. Engine 4fde0e94 = 9dcc5d45 + G2 pooled GPU cull (one reset + one cull dispatch per camera render over shared arenas; rendering/occlusion_culling/gpu_cull_pooled, default off) + fixed shadow LOD band for gpu-culled MultiMeshes (gpu_cull_shadow_fixed_band, default off) + STATIC_SHADOW_AT_REST shader built-in for static shadow tiles (rendering/lights_and_shadows/directional_shadow/static_casters_at_rest, default off). GodotSharp regenerated (with Tools/). Oracles: multimesh_cull_pool 4524/4524, draw_indirect_count 24/24 on Metal. Windows at 9dcc5d45; Forge to rebuild 4fde0e94 (handoff forge-windows-g2-4fde0e94.md)."
|
||||
"note": "Mac. Engine 73d20a40 = d4940046 + 219b914c (#250: parallel draw-list sub-recordings nest - a worker waiting inside its slice ran another slice's task and the inner end cleared the outer target, Windows FATAL p_idx >= _len on the Ultra bench) + 73d20a40 (Texture2DRD/TextureLayeredRD/Texture3DRD allocate the RS texture before the render-thread bind is queued - under the separate render thread a material could keep the magenta placeholder; Ariki's ocean drew milky). GodotSharp regenerated (with Tools/), API unchanged. Oracle parallel_draw_replay Vulkan/MoltenVK 10/10, Metal 5/5; game hosts the dev world on Metal with thread_model=2, ocean clear, 0 wrapper errors. Windows still at d49400463; the game pin stays at d49400463 until Forge publishes windows-x64 at 73d20a40."
|
||||
},
|
||||
"windows-x64": {
|
||||
"binary": "engine/windows-x64/tinqs.windows.editor.x86_64.mono.exe",
|
||||
"console_binary": "engine/windows-x64/tinqs.windows.editor.x86_64.mono.console.exe",
|
||||
"godotsharp": "engine/windows-x64/GodotSharp",
|
||||
"version": "4.7.2.stable.mono.custom_build.9dcc5d458",
|
||||
"version": "4.7.2.stable.mono.custom_build.73d20a40b",
|
||||
"engine_repo": "tinqs/engine",
|
||||
"engine_commit": "9dcc5d458f",
|
||||
"sha256": "46bfbfd6bcb18e9a5925b9a6ce10aca9254859927e14fde40657e87d29eb916d",
|
||||
"sha256_console": "83be146902fa35784084a247eee1afbc30eac0c603cd0e7b24c4bd42d1b3b5ad",
|
||||
"engine_commit": "73d20a40b8",
|
||||
"sha256": "f1ea64475162b27e202d1b225ba2057e6c8481d9973de323f139c581c84a2f8d",
|
||||
"sha256_console": "265f8133999528aa06f919870f58f7c04e55a448da0c6221e093ce76710e5bc2",
|
||||
"target": "editor",
|
||||
"built_on": "2026-10-18",
|
||||
"built_by": "Ozan/Forge via ZCode (forge-windows-sscs-9dcc5d45 handoff)",
|
||||
"built_on": "2026-10-19",
|
||||
"built_by": "Ozan/Forge via ZCode (fast publish, oracle + smoke verified post-push)",
|
||||
"toolchain": "MSVC 14.3 (VS2022 Build Tools), Windows SDK 10.0.26100, SCons 4.10.1, .NET SDK 10.0.103",
|
||||
"scons_flags": "platform=windows target=editor module_mono_enabled=yes -j32",
|
||||
"note": "Windows carries 9dcc5d458 \u2014 SAME hash as macos-arm64 (built at 9dcc5d458f, the docs-only commits 91b11b70/a77eb1781 excluded so both platforms and the 4.7.2@9dcc5d458 pin share one hash): screen-space contact shadows for directional lights (SSCS, default off, env contactshadow dial), hero shadow min-combine (instance_light_directional_set_hero_shadow_spot), tight cascade caster culling on the real cascade frustum (#121775), shadow bias no longer shrunk by blur < 1 (#124348; game sun ShadowBias 0.014 applies with this pin), RenderingDevice.draw_list_draw_indirect_count (D3D12 native path). GodotSharp regenerated from this binary \u2014 Api AND Tools (InstanceLightDirectionalSetHeroShadowSpot + DrawListDrawIndirectCount present). Checks: headless game boot clean (0 binding errors); oracle draw_indirect_count on D3D12 (RTX 5080): 22 passed, 2 failed \u2014 the 2 base-instance cases are the documented D3D12 gap (shaders do not see base instance there yet; expected-fail per draw-indirect-count.md). WITH --gpu-validation the D3D12 run could not start (debug layer not installed on Forge \u2014 Graphics Tools owed); validation-layer cleanliness still to verify. In-world checks (herocombine, contactshadow, SSCS in --gpu-profile, sun acne with bias 0.014) still owed on Windows. Editor target only \u2014 template_release in this folder is still the 1e7be28b tree. D3D12 Agility DLLs (D3D12Core.dll, d3d12SDKLayers.dll) are NOT shipped \u2014 the game runs Vulkan, same decision as 2026-10-05. Crash-report checklist (8 steps) also still owed on Windows."
|
||||
"note": "Windows carries 73d20a40b \u2014 SAME hash as macos-arm64 (built at 73d20a40b8): the d49400463 pair (parallel replay+recording with the VUID-00050 pool reset; see its note in git history) PLUS 219b914c18 fix(rd) \u2014 parallel draw recording sub-recordings nest: a recording worker that waits inside its slice (get_pipeline waiting on an ubershader compile) could run another slice's task on the same thread and its end cleared the thread-local instruction target, so the outer slice appended into the MAIN draw list concurrently with the render thread (realloc under a live instruction) \u2014 Windows FATAL p_idx >= _len in add_draw_list_bind_vertex_buffers on the Ultra bench (#250); begin now pushes the current target and end restores it; oracle Vulkan/MoltenVK 10/10, Metal 5/5. PLUS 73d20a40b8 fix(texture_rd) \u2014 the RS texture is allocated before the render-thread bind is queued, so main-thread get_rid() no longer races the render thread's write of texture_rid (a material could keep the magenta placeholder for the session; Ariki's FFT ocean drew milky/opaque on Mac and Windows); Texture2DRD, TextureLayeredRD, Texture3DRD. GodotSharp regenerated from this binary \u2014 Api AND Tools. VERIFIED POST-PUSH on the published binary (RTX 5080): parallel_draw_replay oracle vulkan --gpu-validation 10/10 exit 0 ZERO VUID lines; draw_indirect_count d3d12 + debug layer 22/0 + expected SKIP base-instance line; multimesh_cull_pool d3d12 + debug layer 4524/4524, 0 D3D12 errors; headless game boot clean (0 binding errors). Owed on Windows (carried): tests=yes unit suites, crash checklist (8 steps), template_release still 1e7be28b. D3D12 Agility DLLs not shipped (Vulkan game)."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user