engine(macos-arm64): publish e64890fd — Apple render-thread autorelease drain (Mach-port/Metal leak under thread_model=2), G4 mergeable-draw counter; GodotSharp regenerated; Forge handoff
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NCXU49xtHLSry4TQEzVN2m
This commit is contained in:
1 parent
26cc48e674
commit
004ca6d959
34 files changed
+62
-47
No files matched your search
@@ -0,0 +1,15 @@
|
||||
# Forge: Windows build of engine e64890fd
|
||||
|
||||
Mac published `e64890fd` (`4.7.2.stable.mono.custom_build.e64890fd3`); the game pins `4.7.2@e64890fd3`.
|
||||
Windows at `4fde0e94d` is locked out by the pin until this lands.
|
||||
|
||||
What changed since `4fde0e94`:
|
||||
- Apple-only: the render thread drains an autorelease pool each flush (`rendering_server_default.cpp`, `#if __APPLE__`). No Windows effect.
|
||||
- `RENDERING_INFO_GPU_CULL_MERGEABLE_DRAWS_IN_FRAME` (new enum, value 13) — GodotSharp must be regenerated.
|
||||
- Metal `draw_indirect_count`: null scratch errors loudly. No Windows effect.
|
||||
|
||||
Steps (same flags as the `windows-x64` manifest block, Vulkan only — no D3D12 work):
|
||||
1. `git checkout e64890fd`, build the editor, `--version` must print `custom_build.e64890fd3`.
|
||||
2. `--generate-mono-glue` + `build_assemblies.py` (Api + Tools).
|
||||
3. Smoke: host a world, 0 `Wrapper class not found`; `env gpucull status` shows `(N mergeable)`.
|
||||
4. Publish `engine/windows-x64/` + manifest + README rows, `tinqs push`.
|
||||
@@ -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/macos-arm64/` | **4.7.2** (`e64890fd`) — `4fde0e94` plus the Apple render-thread autorelease drain (fixes the Mach-port / Metal leak under `thread_model=2`) and the G4 mergeable-draw counter | built-in module | ✅ yes (`GodotSharp/`) |
|
||||
| `engine/windows-x64/` | **4.7.2** (`4fde0e94d`) — same hash as macos-arm64: everything `9dcc5d45` had plus G2 pooled cull (`gpu_cull_pooled` default off), fixed shadow band, `STATIC_SHADOW_AT_REST` (tree_wind needs it); `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. Windows is also engine `4fde0e94` as of 2026-10-18 — Forge built it in parallel with the Mac (`.agents/handoffs/forge-windows-g2-4fde0e94.md`), so both platforms and the `4.7.2@4fde0e94d` pin (the game's `tree_wind.gdshader` uses the new built-in) share one hash. Underneath is 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`), where the D3D12 oracle on RTX 5080 was 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). Still owed on Windows: `multimesh_cull_pool` oracle (gates making pool the default), the validation pass, and in-world checks (`herocombine`, `contactshadow`, SSCS in `--gpu-profile`, sun acne at bias 0.014, pooled gpucull census).
|
||||
Mac is engine `e64890fd` as of 2026-10-18 (`--version` prints `4.7.2.stable.mono.custom_build.e64890fd3`): `4fde0e94` plus the separate render thread draining an Objective-C autorelease pool each flush — before, autoreleased Metal command buffers, encoders and drawables leaked ~88 Mach ports/s until no new Metal process could start (66k ports / 23 GB after 1.5 h); now flat at ~640 ports — and `RENDERING_INFO_GPU_CULL_MERGEABLE_DRAWS_IN_FRAME`. Underneath, `4fde0e94` added: 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. Windows is also engine `4fde0e94` as of 2026-10-18 — Forge built it in parallel with the Mac (`.agents/handoffs/forge-windows-g2-4fde0e94.md`), so both platforms and the `4.7.2@4fde0e94d` pin (the game's `tree_wind.gdshader` uses the new built-in) share one hash. Underneath is 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`), where the D3D12 oracle on RTX 5080 was 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). Still owed on Windows: `multimesh_cull_pool` oracle (gates making pool the default), the validation pass, and in-world checks (`herocombine`, `contactshadow`, SSCS in `--gpu-profile`, sun acne at bias 0.014, pooled gpucull census).
|
||||
|
||||
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.
+5
-5
@@ -4,16 +4,16 @@
|
||||
"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.e64890fd3",
|
||||
"engine_repo": "tinqs/engine",
|
||||
"engine_commit": "4fde0e94",
|
||||
"sha256": "a37ceb6d8aa5772f50c61cad12ee738881b9d060df00d9f392ae40b2437d8e54",
|
||||
"engine_commit": "e64890fd",
|
||||
"sha256": "ee3f58dd973f571599eed5f3d043c1b8c84bc7ee38b0e180ea8d31523e0b932b",
|
||||
"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_by": "Ozan/Kraken via Claude (render-thread autorelease drain on Apple + G4 mergeable-draw counter)",
|
||||
"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 e64890fd = 4fde0e94 + Apple render-thread fix: the separate render thread (thread_model=2, the game default) now drains an Objective-C autorelease pool each flush - before, autoreleased Metal command buffers/encoders/drawables leaked ~88 Mach ports/s until Metal could not start new processes (66k ports / 23 GB after 1.5 h); now flat at ~640. Also RENDERING_INFO_GPU_CULL_MERGEABLE_DRAWS_IN_FRAME (G4 census) and draw_indirect_count null scratch now errors loudly. GodotSharp regenerated (with Tools/). Oracles on Metal: multimesh_cull_pool 4524/4524, draw_indirect_count 24/24. Windows at 4fde0e94; Forge to rebuild e64890fd (handoff forge-windows-e64890fd.md) - the leak fix is Apple-only, Windows gains only the counter."
|
||||
},
|
||||
"windows-x64": {
|
||||
"binary": "engine/windows-x64/tinqs.windows.editor.x86_64.mono.exe",
|
||||
|
||||
Reference in new issue
Block a user