mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-03 21:03:44 +01:00
The render manager now records commands on the emu thread, keeping all of its decisions there (lazy passes, clear merging, redundant state), and they're encoded on a render thread, or inline when bRenderMultiThreading is off, as in the Vulkan backend. Before encoding, passes to the same framebuffer are merged across independent work, by the rules of VulkanQueueRunner's render pass merge. God of War alternates with block transfers to other framebuffers, and went from about 41 to 18 render passes a frame, which more than halved its GPU time. Passes where nothing tests or writes depth or stencil leave the attachment unloaded and unstored, like the Vulkan backend, which doesn't attach depth then. On the eight benchmark states, Metal now uses 4-13% less CPU than Vulkan, with wall times from 6% faster to 4% slower. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>