aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/surface_base.h
AgeCommit message (Collapse)Author
2020-12-30video_core: Rewrite the texture cacheReinUsesLisp
The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage.The current texture cache has several points that hurt maintainability and performance. It's easy to break unrelated parts of the cache when doing minor changes. The cache can easily forget valuable information about the cached textures by CPU writes or simply by its normal usage. This commit aims to address those issues.
2020-12-05video_core: Resolve more variable shadowing scenarios pt.3Lioncash
Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
2020-12-05video_core: Resolve more variable shadowing scenarios pt.2Lioncash
Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code.
2020-06-08texture_cache: Implement rendering to 3D texturesReinUsesLisp
This allows rendering to 3D textures with more than one slice. Applications are allowed to render to more than one slice of a texture using gl_Layer from a VTG shader. This also requires reworking how 3D texture collisions are handled, for now, this commit allows rendering to slices but not to miplevels. When a render target attempts to write to a mipmap, we fallback to the previous implementation (copying or flushing as needed). - Fixes color correction 3D textures on UE4 games (rainbow effects). - Allows Xenoblade games to render to 3D textures directly.
2020-04-22Texture Cache: Implement OnCPUWrite and SyncGuestHostFernando Sahmkow
2020-04-15surface_base: Make IsInside() a const member functionLioncash
This doesn't modify internal state, so this can be made const.
2020-04-06Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow
2020-04-01video_core: Use native ASTC when availableReinUsesLisp
2019-11-29texture_cache/surface_base: Fix out of bounds texture viewsReinUsesLisp
Some texture views were being created out of bounds (with more layers or mipmaps than what the original texture has). This is because of a miscalculation in mipmap bounding. end_layer and end_mipmap are out of bounds (e.g. layer 6 in a cubemap), there's no need to add one more there. Fixes OpenGL errors and Vulkan crashes on Splatoon 2.
2019-10-15common: Rename binary_find.h to algorithm.hLioncash
Makes the header more general for other potential algorithms in the future. While we're at it, include a missing <functional> include to satisfy the use of std::less.
2019-09-05texture_cache: Minor changesReinUsesLisp
2019-07-14Texture_Cache: Address FeedbackFernando Sahmkow
2019-07-14Texture_Cache: Force Framebuffer reset if an active render target is ↵Fernando Sahmkow
unregistered.
2019-07-05texture_cache: Address FeedbackFernando Sahmkow
2019-06-29texture_cache: Address feedbackReinUsesLisp
2019-06-24texture_cache/surface_base: Address feedbackReinUsesLisp
2019-06-20texture_cache: Style and CorrectionsFernando Sahmkow
2019-06-20texture_cache: Implement Irregular Views in surfacesFernando Sahmkow
2019-06-20texture_cache: Implement siblings texture formats.Fernando Sahmkow
2019-06-20texture_cache: move some large methods to cpp filesFernando Sahmkow
2019-06-20texture_cache uncompress-compress is untopological.Fernando Sahmkow
This makes conflicts between non compress and compress textures to be auto recycled. It also limits the amount of mipmaps a texture can have if it goes above it's limit.
2019-06-20texture_cache: Correct copying between compressed and uncompressed formatsFernando Sahmkow
2019-06-20texture_cache: Handle uncontinuous surfaces.Fernando Sahmkow
2019-06-20texture_cache: Add checks for texture buffers.Fernando Sahmkow
2019-06-20texture_cache: Fermi2D reform and implement View MirageFernando Sahmkow
This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general.
2019-06-20texture_cache: General FixesFernando Sahmkow
Fixed ASTC mipmaps loading Fixed alignment on openGL upload/download Fixed Block Height Calculation Removed unalign_height
2019-06-20Remove Framebuffer reconfiguration and restrict rendertarget protectionFernando Sahmkow
2019-06-20Reduce amount of size calculations.Fernando Sahmkow
2019-06-20texture_cache: Correct premature texceptionsFernando Sahmkow
Due to our current infrastructure, it is possible for a mipmap to be set on as a render target before a texception of that mipmap's superset be set afterwards. This is problematic as we rely on texture views to set up texceptions and protecting render targets targets for 3D texture rendering. One simple solution is to configure framebuffers after texture setup but this brings other problems. This solution, forces a reconfiguration of the framebuffers after such event happens.
2019-06-20Fixes to mipmap's process and reconstruct processFernando Sahmkow
2019-06-20surface_base: Add parenthesis to EmplaceOverview's predicateReinUsesLisp
2019-06-20surface_view: Add constructor for ViewParamsReinUsesLisp
2019-06-20surface_base: Split BreakDown into layered and non-layered variantsReinUsesLisp
2019-06-20surface_base: Silence truncation warnings and minor renames and reorderingReinUsesLisp
2019-06-20copy_params: Use constructor instead of C-like initializationReinUsesLisp
2019-06-20Correct Mipmaps View method in Texture CacheFernando Sahmkow
2019-06-20Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow
This also reverses the changes to make invalidation and flushing through the GPU address.
2019-06-20Corrections to Structural MatchingFernando Sahmkow
The texture will now be reconstructed if the width only matches on GoB alignment.
2019-06-20Correct Surface Base and Views for new Texture CacheFernando Sahmkow
2019-06-20texture_cache: Remove execution context copies from the texture cacheReinUsesLisp
This is done to simplify the OpenGL implementation, it is needed for Vulkan.
2019-06-20texture_cache: Split texture cache into different filesReinUsesLisp