aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache/buffer_base.h
AgeCommit message (Collapse)Author
2024-01-18SMMU: Initial adaptation to video_core.Fernando Sahmkow
2023-05-07GPU: Add Reactive flushingFernando Sahmkow
2023-05-01BufferCache: Fixes and address feedbackFernando Sahmkow
2023-04-29Clang: format and ficx compile errors.Fernando Sahmkow
2023-04-29Buffer Cache: Fully rework the buffer cache.Fernando Sahmkow
2023-02-21svc: Fix type consistency (exposed on macOS)Merry
2023-02-08buffer_base: Partially revert changes from #9559ameerj
This fixes a regression where Yoshi's Crafted World (and potentially other titles) would enter an infinite loop when GPU Accuracy was set to "Normal"
2023-01-05BufferBase: Don't ignore GPU pages.Fernando Sahmkow
2022-11-22general: fix compile for Apple ClangLiam
2022-08-25video_core: add option for pessimistic flushingLiam
2022-08-19code: dodge PAGE_SIZE #defineKyle Kienapfel
Some header files, specifically for OSX and Musl libc define PAGE_SIZE to be a number This is great except in yuzu we're using PAGE_SIZE as a variable Specific example `static constexpr u64 PAGE_SIZE = u64(1) << PAGE_BITS;` PAGE_SIZE PAGE_BITS PAGE_MASK are all similar variables. Simply deleted the underscores, and then added YUZU_ prefix Might be worth noting that there are multiple uses in different classes/namespaces This list may not be exhaustive Core::Memory 12 bits (4096) QueryCacheBase 12 bits ShaderCache 14 bits (16384) TextureCache 20 bits (1048576, or 1MB) Fixes #8779
2022-04-23general: Convert source file copyright comments over to SPDXMorph
This formats all copyright comments according to SPDX formatting guidelines. Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-03-23buffer_cache: reset cached write bits after flushing invalidationsLiam
2021-08-29Garbage Collection: Make it more agressive on high priority mode.Fernando Sahmkow
2021-08-29Garbage Collection: Adress Feedback.Fernando Sahmkow
2021-08-28VideoCore: Rework Garbage Collection.Fernando Sahmkow
2021-07-10Buffer Cache: Address Feedback.Fernando Sahmkow
2021-07-09Videocore: Address Feedback & CLANG Format.Fernando Sahmkow
2021-07-09Buffer Cache: Fix High Downloads and don't predownload on Extreme.Fernando Sahmkow
2021-06-16Initial Reaper SetupReinUsesLisp
WIP
2021-06-10Fix GCC undefined behavior sanitizer.Markus Wick
* 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 buffersReinUsesLisp
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 writesReinUsesLisp
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 warningsLioncash
Silences some -Wdocumentation warnings on Clang.
2021-01-13buffer_cache/buffer_base: Add a range tracking buffer containerReinUsesLisp
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.