Repository navigation
Conversation
|
Thanks. The reference stays valid as far as I can see: One thing before it can go in. Performance PRs need before/after numbers for the change itself (the owner asked for this on #218). The 48.0 to 43.6 ms figure is for 15 changes together, so it doesn't show what this one gives. Could you measure |
|
Measured alone as asked: over six interleaved rounds on the same page, the base and this PR average 11.52 and 11.54 FPS, within the noise, and the context copies were only about 0.2% of the AGC worker's samples on the base (13 of 7,404 over three 15 s profiles, none with this PR). It doesn't help measurably on its own, so I'm closing it, as asked on #218. |
What
VulkanDevice::graphicsContext()returns the cachedGraphics::Contextby value: about 1.4 KB and ashared_ptr<BufferPool>(two locked reference count operations) copied for every draw, dispatch, buffer fill, copy and label write, and once more per draw inKnownDrawRejection.An overload now takes local storage and returns a reference to the cached context; the storage is only used before setup has built it or under
APS5_NO_CONTEXT_CACHE. The per-operation callers use it, and the setup paths keep the by-value form.Tested
Windows 11, MinGW GCC 15.2, RTX 2080 Ti. This branch builds, and the 165 agc driver, recompiler and execution test targets pass with it stacked on the other changes I'm sending (#849 and the perf PRs opened with this one). I haven't measured this change alone: together with 14 changes of the same kind on my working branch it took Sonic Origins Plus's heaviest menu page (about 1,650 draws per frame) from 48.0 to 43.6 ms per frame (20.8 to 22.9 FPS).
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)