aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader_cache.h
AgeCommit message (Collapse)Author
2024-01-18Core: Clang format and other small issues.Fernando Sahmkow
2024-01-18SMMU: Initial adaptation to video_core.Fernando Sahmkow
2023-08-03Fix shader dumps with nvdisasmKelebek1
skip fragment shaders when rasterizer is disabled initialize env_ptrs
2023-06-28Memory Tracking: Optimize tracking to only use atomic writes when contested ↵Fernando Sahmkow
with the host GPU
2022-11-22general: fix compile for Apple ClangLiam
2022-10-06VideoCore: implement channels on gpu caches.Fernando Sahmkow
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-02-01video_core/shader_cache: Remove unused algorithm includeLioncash
2022-02-01video_core/shader_cache: Take std::span in RemoveShadersFromStorage()Lioncash
Same behavior, but without the need to move into the function to avoid an allocation.
2021-07-22shader: Initial OpenGL implementationReinUsesLisp
2021-07-22shader: Move pipeline cache logic to separate filesReinUsesLisp
Move code to separate files to be able to reuse it from OpenGL. This greatly simplifies the pipeline cache logic on Vulkan. Transform feedback state is not yet abstracted and it's still intrusively stored inside vk_pipeline_cache. It will be moved when needed on OpenGL.
2020-07-14shader_cache: Make use of std::erase_ifLioncash
Now that we use C++20, we can also make use of std::erase_if instead of needing to do the erase-remove idiom.
2020-07-01shader_cache: Fix use-after-free and orphan invalidation cache entriesReinUsesLisp
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.
2020-06-18Rename PAGE_SHIFT to PAGE_BITSMerryMage
macOS header files #define PAGE_SHIFT
2020-06-07shader_cache: Implement a generic shader cacheReinUsesLisp
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.