aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/surface_base.cpp
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-09-22General: Make use of std::nullopt where applicableLioncash
Allows some implementations to avoid completely zeroing out the internal buffer of the optional, and instead only set the validity byte within the structure. This also makes it consistent how we return empty optionals.
2020-07-13video_core: Rearrange pixel format namesReinUsesLisp
Normalizes pixel format names to match Vulkan names. Previous to this commit pixel formats had no convention, leading to confusion and potential bugs.
2020-06-22TextureCache: Fix case where layer goes off bound.Fernando Sahmkow
The returned layer is expected to be between 0 and the depth of the surface, anything larger is off bounds.
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-15Texture Cache: Read current data when flushing a 3D segment.Fernando Sahmkow
This PR corrects flushing of 3D segments when data of other segments is mixed, this aims to preserve the data in place.
2020-04-06Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow
2020-04-01video_core: Use native ASTC when availableReinUsesLisp
2020-02-16surface_base: Implement texture buffer flushesReinUsesLisp
Implement downloads to guest memory from texture buffers on the generic cache and OpenGL.
2020-01-26texture_cache/surface_base: Fix layered break downReinUsesLisp
Layered break downs was passing "layer" as a "depth" parameter. This commit addresses that.
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-07-18video_core: Resolve -Wreorder warningsLioncash
Ensures that the constructor members are always initialized in the order that they're declared in.
2019-07-14Texture_Cache: Correct Linear Structural Match.Fernando Sahmkow
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: move some large methods to cpp filesFernando Sahmkow
2019-06-20texture_cache: Handle uncontinuous surfaces.Fernando Sahmkow
2019-06-20texture_cache: loose TryReconstructSurface when accurate GPU is not on.Fernando Sahmkow
Also corrects some asserts.
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-20video_core: Use un-shifted block sizes to avoid integer divisionsReinUsesLisp
Instead of storing all block width, height and depths in their shifted form: block_width = 1U << block_shift; Store them like they are provided by the emulated hardware (their block_shift form). This way we can avoid doing the costly Common::AlignUp operation to align texture sizes and drop CPU integer divisions with bitwise logic (defined in Common::AlignBits).
2019-06-20Reduce amount of size calculations.Fernando Sahmkow
2019-06-20texture_cache: Implement guest flushingFernando Sahmkow
2019-06-20surface_base: Silence truncation warnings and minor renames and reorderingReinUsesLisp
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-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