mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-02 12:56:05 +00:00
Rush 2 Recompiled (PPSA69423) and Wave Race 64 Recompiled (PPSA69424) stop on Windows with "initial multisampled DCC contents require watched guest memory" (https://github.com/boykopovar/AnyPS5/issues/9724). Their multisampled color target lives in a 784 KiB host import made at map time. An import under 1 MiB stays compared until a later lookup reaps its deferred settle read, and the titles draw to the target first. When an initial multisampled DCC import needs a range whose import still waits for its settle read, submit that read now if it is still wanted, wait for its fence and return the import to the write watch before the check. This builds on #8527's ordering: the read goes through its main-queue batch with barriers around it, so it runs after every earlier main-queue access, and the wait happens under the GPU mutex that submission holds. An import that is not a whole number of 64 KiB blocks, such as these titles' 0xc4000 bytes, never got a deferred read, and Rewatch refuses a range that does not start and end on a block. Such an import now waits for this path alone. It returns to the write watch with its partial blocks whole, each stamped as a CPU store, unless another compared import or a live storage image shares them. Imports that stay compared for any other reason still do, an explicitly unwatched range is still refused, and APS5_NO_DEFERRED_SETTLES still keeps these imports compared.