summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader_cache.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* shader_cache: Make use of std::erase_ifLioncash2020-07-141-2/+2
| | | | | Now that we use C++20, we can also make use of std::erase_if instead of needing to do the erase-remove idiom.
* shader_cache: Fix use-after-free and orphan invalidation cache entriesReinUsesLisp2020-07-011-29/+41
| | | | | | | | | | | | | This fixes some cases where entries could have been removed multiple times reading freed memory. To address this issue this commit removes duplicates from entries marked for removal and sorts out the removal process to fix another use-after-free situation. Another issue fixed in this commit is orphan invalidation cache entries. Previously only the entries that were invalidated in the current operations had its entries removed. This led to more use-after-free situations when these entries were actually invalidated but referenced an object that didn't exist.
* Rename PAGE_SHIFT to PAGE_BITSMerryMage2020-06-181-5/+5
| | | | macOS header files #define PAGE_SHIFT
* shader_cache: Implement a generic shader cacheReinUsesLisp2020-06-071-0/+228
Implement a generic shader cache for fast lookups and invalidations. Invalidations are cheap but expensive when a shader is invalidated. Use two mutexes instead of one to avoid locking invalidations for lookups and vice versa. When a shader has to be removed, lookups are locked as expected.