mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-23 00:53:02 -05:00
NVIDIA's Windows driver reads a host import of guest memory far slower than a buffer it allocated. Since draw vertex and index ranges are bound in place from host imports (#2253, measured on Linux), Astro Bot's Crash Site on Windows 11 with an RTX 5070 Ti spends 164 ms of every frame in draws on the GPU, and 45 ms with the ranges copied as before; with the same build, 4.71 fps in place against 7.52 copied. An RTX 3060 shows the same (draws 32.3 against 24.3 ms per frame), while AMD's Windows driver reads them in place about as fast as a copy (RX 9070 XT: 69.8 against 73.1 ms), so copying there only costs CPU. The device decides once (DrawInputsInPlaceUsable, Context::drawInputsInPlace): ranges are copied with VK_DRIVER_ID_NVIDIA_PROPRIETARY on Windows and bound in place everywhere else. APS5_DRAW_INPUTS_IN_PLACE=1 binds them in place and APS5_NO_DRAW_INPUTS_IN_PLACE=1 copies them on any device, the second winning. agc_draw_inputs_in_place_driver checks the decision per driver and host; agc_draw_inputs_copied checks that an aligned imported range is copied and its read not noted when the context copies, whatever the inherited environment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GN8FJFTedayRXLHythXkZ4