summaryrefslogtreecommitdiffstats
path: root/src/video_core/buffer_cache/buffer_base.h (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-08-29Garbage Collection: Make it more agressive on high priority mode.Fernando Sahmkow1-2/+2
2021-08-29Garbage Collection: Adress Feedback.Fernando Sahmkow1-1/+8
2021-08-28VideoCore: Rework Garbage Collection.Fernando Sahmkow1-11/+2
2021-07-10Buffer Cache: Address Feedback.Fernando Sahmkow1-0/+5
2021-07-09Videocore: Address Feedback & CLANG Format.Fernando Sahmkow1-1/+1
2021-07-09Buffer Cache: Fix High Downloads and don't predownload on Extreme.Fernando Sahmkow1-6/+8
2021-06-16Initial Reaper SetupReinUsesLisp1-0/+11
WIP
2021-06-10Fix GCC undefined behavior sanitizer.Markus Wick1-0/+3
* Wrong alignment in u64 LOG_DEBUG -> memcpy. * Huge shift exponent in stride calculation for linear buffer, unused result -> skipped. * Large shift in buffer cache if word = 0, skip checking for set bits. Non of those were critical, so this should not change any behavior. At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0.
2021-02-13buffer_cache: Heuristically detect stream buffersReinUsesLisp1-0/+11
Detect when a memory region has been joined several times and increase the size of the created buffer on those instances. The buffer is assumed to be a "stream buffer", increasing its size should stop us from constantly recreating it and fragmenting memory.
2021-02-13buffer_base: Add support for cached CPU writesReinUsesLisp1-61/+145
Some games usually write memory pages currently used by the GPU, causing rendering issues (e.g. flashing geometry and shadows on Link's Awakening). To workaround this issue, Guest CPU writes are delayed until the command buffer finishes processing, but the pages are updated immediately. The overall behavior is: - CPU writes are cached until they are flushed, they update the page state, but don't change the modification state. Cached writes stop pages from being flushed, in case games have meaningful data in it. - Command processing writes (e.g. push constants) update the page state and are marked to the command processor as dirty. They don't remove the state of cached writes.
2021-01-17video_core: Resolve -Wdocumentation warningsLioncash1-1/+1
Silences some -Wdocumentation warnings on Clang.
2021-01-13buffer_cache/buffer_base: Add a range tracking buffer containerReinUsesLisp1-0/+495
It keeps track of the modified CPU and GPU ranges on a CPU page granularity, notifying the given rasterizer about state changes in the tracking behavior of the buffer. Use a small vector optimization to store buffers smaller than 256 KiB locally instead of using free store memory allocations.