render3d: turn MoltenVK's command pooling off; steady ramps the draw count
The pools kept every command object ever recorded, so the heap grew each time a frame drew more than any before (fn_gvk_draw under vkCmdBindVertexBuffers/BindIndexBuffer/Draw in the leakcheck; ~650 B a draw). Off: 3.7 ms a frame either way over 520 actors. steady: 20 to 200 actors grows 5-7 KB with it off and 120 KB with it on (bound 16 KB). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e6729b3123
commit
b4774a46ee
3 changed files with 48 additions and 2 deletions
8
changes/moltenvk-no-command-pooling.md
Normal file
8
changes/moltenvk-no-command-pooling.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
bump: patch
|
||||
type: fix
|
||||
**A frame that draws more than any before no longer grows the heap on the Mac.** MoltenVK's command
|
||||
pooling kept every command object a frame had ever recorded - about 650 bytes for each draw beyond the
|
||||
busiest frame so far, for as long as the game ran. render3d turns it off
|
||||
(`MVK_CONFIG_USE_COMMAND_POOLING=0`, unless the environment already says otherwise) before the first
|
||||
Vulkan call; the objects are made and freed with their command buffer, at no measured cost.
|
||||
`examples/rendering/steady.ludic` ramps a frame from 20 to 200 actors and fails on what pooling left.
|
||||
Loading…
Add table
Add a link
Reference in a new issue