summaryrefslogtreecommitdiffstats
path: root/src/video_core/texture_cache/surface_base.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* video_core: Rewrite the texture cacheReinUsesLisp2020-12-301-299/+0
| | | | | | | | | | | | | | 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.
* video_core: Resolve more variable shadowing scenarios pt.3Lioncash2020-12-051-4/+4
| | | | | Cleans out the rest of the occurrences of variable shadowing and makes any further occurrences of shadowing compiler errors.
* video_core: Resolve more variable shadowing scenarios pt.2Lioncash2020-12-051-13/+14
| | | | | | | Migrates the video core code closer to enabling variable shadowing warnings as errors. This primarily sorts out shadowing occurrences within the Vulkan code.
* General: Make use of std::nullopt where applicableLioncash2020-09-221-3/+7
| | | | | | | | 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.
* video_core: Rearrange pixel format namesReinUsesLisp2020-07-131-1/+1
| | | | | | Normalizes pixel format names to match Vulkan names. Previous to this commit pixel formats had no convention, leading to confusion and potential bugs.
* TextureCache: Fix case where layer goes off bound.Fernando Sahmkow2020-06-221-0/+3
| | | | | The returned layer is expected to be between 0 and the depth of the surface, anything larger is off bounds.
* texture_cache: Implement rendering to 3D texturesReinUsesLisp2020-06-081-4/+3
| | | | | | | | | | | | | | 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.
* Texture Cache: Read current data when flushing a 3D segment.Fernando Sahmkow2020-04-151-0/+6
| | | | | This PR corrects flushing of 3D segments when data of other segments is mixed, this aims to preserve the data in place.
* Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow2020-04-061-32/+10
|
* video_core: Use native ASTC when availableReinUsesLisp2020-04-011-19/+20
|
* surface_base: Implement texture buffer flushesReinUsesLisp2020-02-161-0/+4
| | | | | Implement downloads to guest memory from texture buffers on the generic cache and OpenGL.
* texture_cache/surface_base: Fix layered break downReinUsesLisp2020-01-271-1/+1
| | | | | Layered break downs was passing "layer" as a "depth" parameter. This commit addresses that.
* common: Rename binary_find.h to algorithm.hLioncash2019-10-151-0/+1
| | | | | | 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.
* video_core: Resolve -Wreorder warningsLioncash2019-07-191-3/+2
| | | | | Ensures that the constructor members are always initialized in the order that they're declared in.
* Texture_Cache: Correct Linear Structural Match.Fernando Sahmkow2019-07-141-3/+6
|
* texture_cache/surface_base: Address feedbackReinUsesLisp2019-06-241-0/+4
|
* texture_cache: Style and CorrectionsFernando Sahmkow2019-06-211-1/+1
|
* texture_cache: Implement Irregular Views in surfacesFernando Sahmkow2019-06-211-0/+3
|
* texture_cache: move some large methods to cpp filesFernando Sahmkow2019-06-211-0/+103
|
* texture_cache: Handle uncontinuous surfaces.Fernando Sahmkow2019-06-211-8/+39
|
* texture_cache: loose TryReconstructSurface when accurate GPU is not on.Fernando Sahmkow2019-06-211-1/+1
| | | | Also corrects some asserts.
* texture_cache: General FixesFernando Sahmkow2019-06-211-3/+15
| | | | | | | Fixed ASTC mipmaps loading Fixed alignment on openGL upload/download Fixed Block Height Calculation Removed unalign_height
* video_core: Use un-shifted block sizes to avoid integer divisionsReinUsesLisp2019-06-211-2/+1
| | | | | | | | | | | | 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).
* Reduce amount of size calculations.Fernando Sahmkow2019-06-211-7/+15
|
* texture_cache: Implement guest flushingFernando Sahmkow2019-06-211-8/+11
|
* surface_base: Silence truncation warnings and minor renames and reorderingReinUsesLisp2019-06-211-16/+18
|
* Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow2019-06-211-2/+3
| | | | | This also reverses the changes to make invalidation and flushing through the GPU address.
* Correct Surface Base and Views for new Texture CacheFernando Sahmkow2019-06-211-46/+62
|
* texture_cache: Remove execution context copies from the texture cacheReinUsesLisp2019-06-211-4/+4
| | | | | This is done to simplify the OpenGL implementation, it is needed for Vulkan.
* texture_cache: Split texture cache into different filesReinUsesLisp2019-06-211-0/+118