mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-07 13:39:55 +00:00
A compute dispatch of the memory-value fill kernel is noted twice: the dispatch path notes it from MatchMemoryValueFill before the fill runs (Dispatch.cpp), and storeBufferFill notes it again after FillBuffer has recorded its GPU write. On a native multisample depth target the second note refused "overlapping native multisample depth clear transitions are not implemented" for the HTILE, and the same refusal for the separate stencil plane, so a compute fill of either one never reached the sample. A second note of a pending fill is now taken as the same fill when it has the same pattern, the first note had no write note, and the one write recorded over the range since the first note is a word fill of the whole range with that pattern. That write's note becomes the fill's note, and the first note's write generation is kept, so CPU writes between the two notes are still refused. Two notes without that write between them still refuse as overlapping (agc_driver_native_depth_stencil's FillOverlap case, and a new stencil plane case). A memory-value fill that falls back to CPU stores, with no host import of the range, is still refused as overlapping. Tested: agc_driver_native_depth_separate_stencil runs Ghost's sequence with each fill noted, queued on the GPU and noted again, and samples the cleared depth and stencil 0. A stencil plane fill noted twice without a write between is refused. Without the change the second note refuses "overlapping native multisample depth clear transitions are not implemented".