summaryrefslogtreecommitdiffstats
path: root/src/video_core/texture_cache/texture_cache.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* video_core: Amend doxygen comment referencesLioncash2020-04-161-4/+4
| | | | Fixes broken documentation references.
* Texture Cache: Only do buffer copies on accurate GPU. (#3634)Fernando Sahmkow2020-04-151-1/+3
| | | This is a simple optimization as Buffer Copies are mostly used for texture recycling. They are, however, useful when games abuse undefined behavior but most 3D APIs forbid it.
* texture_cache: Remove preserve_contentsReinUsesLisp2020-04-111-41/+25
| | | | | | | preserve_contents was always true. We can't assume we don't have to preserve clears because scissored and color masked clears exist. This removes preserve_contents and assumes it as true at all times.
* Texture Cache: Use vAddr instead of physical memory for caching.Fernando Sahmkow2020-04-061-64/+57
|
* video_core: Use native ASTC when availableReinUsesLisp2020-04-011-2/+4
|
* texture_cache: Report incompatible textures as blackReinUsesLisp2020-03-121-2/+39
| | | | | | | | | | | | | | | | | Some games bind incompatible texture types to certain types. For example Astral Chain binds a 2D texture with 1 layer (non-array) to a cubemap slot (that's how it's used in the shader). After testing this in hardware, the expected "undefined behavior" is to report all pixels as black. We already have a path for reporting black textures in the texture cache. When textures types are incompatible, this commit binds these kind of textures. This is done on the API agnostic texture cache so no extra code has to be inserted on OpenGL or Vulkan. As a side effect, this fixes invalidations of ASTC textures on Astral Chain. This happened because yuzu detected a cube texture and forced 6 faces, generating a texture larger than what the TIC reported.
* renderer_opengl: Reintroduce dirty flags for render targetsReinUsesLisp2020-02-281-1/+19
|
* gl_rasterizer: Remove dirty flagsReinUsesLisp2020-02-281-19/+1
|
* Merge pull request #3425 from ReinUsesLisp/layered-framebufferbunnei2020-02-241-4/+1
|\ | | | | texture_cache: Implement layered framebuffer attachments
| * texture_cache: Implement layered framebuffer attachmentsReinUsesLisp2020-02-161-4/+1
| | | | | | | | | | | | Layered framebuffer attachments is a feature that allows applications to write attach layered textures to a single attachment. What layer the fragments are written to is decided from the shader using gl_Layer.
* | texture_cache: Avoid matches in 3D texturesReinUsesLisp2020-02-161-8/+11
|/ | | | | Code before this commit was trying to match 3D textures with another target. Fix that.
* Texture Cache: Improve documentationFernando Sahmkow2019-12-221-3/+4
|
* Texture Cache: Address FeedbackFernando Sahmkow2019-12-221-8/+8
|
* Texture Cache: Add HLE methods for building 3D textures within the GPU in certain scenarios.Fernando Sahmkow2019-12-221-0/+88
| | | | | | This commit adds a series of HLE methods for handling 3D textures in general. This helps games that generate 3D textures on every frame and may reduce loading times for certain games.
* Texture_Cache: Redo invalid Surfaces handling.Fernando Sahmkow2019-11-201-32/+83
| | | | | | | This commit aims to redo the full setup of invalid textures and guarantee correct behavior across backends in the case of finding one by using black dummy textures that match the target of the expected texture.
* texture_cache: Use a table instead of switch for texture formatsReinUsesLisp2019-11-151-2/+5
| | | | | | Use a large flat array to look up texture formats. This allows us to properly implement formats with different component types. It should also be faster.
* texture_cache: Drop abstracted ComponentTypeReinUsesLisp2019-11-141-6/+3
| | | | | | | | | Abstracted ComponentType was not being used in a meaningful way. This commit drops its usage. There is one place where it was being used to test compatibility between two cached surfaces, but this one is implied in the pixel format. Removing the component type test doesn't change the behaviour.
* Merge pull request #2978 from lioncash/doxygenRodrigo Locatti2019-10-171-57/+78
|\ | | | | video_core/texture_cache: Amend Doxygen references
| * video_core/texture_cache: Amend Doxygen referencesLioncash2019-10-151-57/+78
| | | | | | | | | | | | Amends the doxygen comments so that they properly resolve. While we're at it, we can correct some typos and fix up some of the comments' formatting in order to make them slightly nicer to read.
* | texture_cache: Avoid unnecessary surface copies within PickStrategy() and TryReconstructSurface()Lioncash2019-10-161-2/+2
|/ | | | | | We can take these by const reference and avoid making unnecessary copies, preventing some atomic reference count increments and decrements.
* Texture_Cache: Blit Deduction corrections and simplifications.Fernando Sahmkow2019-10-051-18/+20
|
* TextureCache: Add the ability to deduce if two textures are depth on blit.Fernando Sahmkow2019-10-051-2/+142
|
* gl_rasterizer: Implement image bindingsReinUsesLisp2019-09-061-1/+16
|
* texture_cache: Pass TIC to texture cacheReinUsesLisp2019-09-061-4/+4
|
* video_core: Silent miscellaneous warnings (#2820)Rodrigo Locatti2019-08-301-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | * texture_cache/surface_params: Remove unused local variable * rasterizer_interface: Add missing documentation commentary * maxwell_dma: Remove unused rasterizer reference * video_core/gpu: Sort member declaration order to silent -Wreorder warning * fermi_2d: Remove unused MemoryManager reference * video_core: Silent unused variable warnings * buffer_cache: Silent -Wreorder warnings * kepler_memory: Remove unused MemoryManager reference * gl_texture_cache: Add missing override * buffer_cache: Add missing include * shader/decode: Remove unused variables
* Texture_Cache: Rebase FixesFernando Sahmkow2019-07-171-6/+0
|
* Maxwell3D: Rework the dirty system to be more consistant and scaleableFernando Sahmkow2019-07-171-5/+12
|
* Texture_Cache: Address FeedbackFernando Sahmkow2019-07-141-7/+10
|
* Texture_Cache: Remove some unprecise fallback case and clang formatFernando Sahmkow2019-07-141-9/+0
|
* Texture_Cache: Force Framebuffer reset if an active render target is unregistered.Fernando Sahmkow2019-07-141-6/+19
|
* texture_cache: Pack sibling queries inside a methodReinUsesLisp2019-06-301-6/+8
|
* texture_cache: Use std::vector reservation for sampled_texturesReinUsesLisp2019-06-301-17/+10
|
* texture_cache: Style changesReinUsesLisp2019-06-301-2/+1
|
* texture_cache: Use std::array for siblings_tableReinUsesLisp2019-06-291-10/+13
|
* texture_cache: Address feedbackReinUsesLisp2019-06-291-10/+11
|
* texture_cache: Correct variable naming.Fernando Sahmkow2019-06-261-3/+3
|
* texture_cache: Corrections, documentation and assertsFernando Sahmkow2019-06-261-42/+42
|
* texture_cache: Query MemoryManager from the systemFernando Sahmkow2019-06-251-11/+7
|
* texture_cache: Include "core/core.h"ReinUsesLisp2019-06-241-4/+1
|
* texture_cache: Style and CorrectionsFernando Sahmkow2019-06-211-0/+1
|
* texture_cache: Eliminate linear textures fallthroughFernando Sahmkow2019-06-211-4/+0
|
* texture_cache: Correct format R16U as siblingFernando Sahmkow2019-06-211-1/+1
|
* texture_cache: Implement texception detection and texture barriers.Fernando Sahmkow2019-06-211-5/+32
|
* surface: Correct format S8Z24Fernando Sahmkow2019-06-211-4/+0
|
* texture_cache: Initialize all siblings to invalid pixel format.Fernando Sahmkow2019-06-211-6/+15
|
* decoders: correct block calculationFernando Sahmkow2019-06-211-0/+16
|
* texture_cache: Use siblings textures on Rebuild and fix possible error on blittingFernando Sahmkow2019-06-211-10/+23
|
* texture_cache: Implement siblings texture formats.Fernando Sahmkow2019-06-211-12/+27
|
* texture_cache: eliminate accelerated depth->color/color->depth copies due to driver instability.Fernando Sahmkow2019-06-211-8/+1
|
* texture_cache: correct mutex locksFernando Sahmkow2019-06-211-4/+4
|
* texture_cache: Don't Image Copy if component types differFernando Sahmkow2019-06-211-1/+2
|
* texture_cache: Optimize GetSurface and use references on functions that don't change a surface.Fernando Sahmkow2019-06-211-6/+6
|
* texture_cache: Implement Buffer Copy and detect Turing GPUs Image CopiesFernando Sahmkow2019-06-211-9/+31
|
* texture_cache uncompress-compress is untopological.Fernando Sahmkow2019-06-211-12/+14
| | | | | | 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.
* texture_cache: Correct copying between compressed and uncompressed formatsFernando Sahmkow2019-06-211-5/+3
|
* texture_cache: Only load on recycle with accurate GPU.Fernando Sahmkow2019-06-211-2/+3
| | | | | Testing so far has proven this to be quite safe as texture memory read added a 2-5ms load to the current cache.
* texture_cache: Handle uncontinuous surfaces.Fernando Sahmkow2019-06-211-7/+10
|
* texture_cache: return null surface on invalid addressFernando Sahmkow2019-06-211-0/+12
|
* texture_cache: Fermi2D reform and implement View MirageFernando Sahmkow2019-06-211-15/+25
| | | | | This also does some fixes on compressed textures reinterpret and on the Fermi2D engine in general.
* texture_cache: loose TryReconstructSurface when accurate GPU is not on.Fernando Sahmkow2019-06-211-2/+18
| | | | Also corrects some asserts.
* texture_cache: Document the most important methods.Fernando Sahmkow2019-06-211-8/+87
|
* texture_cache: Try to Reconstruct Surface on bigger than overlap.Fernando Sahmkow2019-06-211-4/+11
| | | | | This fixes clouds in SMO Cap Kingdom and lens on Cloud Kingdom. Also moved accurate_gpu setting check to Pick Strategy
* texture_cache: Implement Guard mechanismFernando Sahmkow2019-06-211-1/+8
|
* gl_framebuffer_cache: Use a hashed struct to cache framebuffersReinUsesLisp2019-06-211-1/+1
|
* texture_cache return invalid buffer on deactivated color_maskFernando Sahmkow2019-06-211-0/+5
|
* texture_cache: Add ASync ProtectionsFernando Sahmkow2019-06-211-0/+10
|
* Remove Framebuffer reconfiguration and restrict rendertarget protectionFernando Sahmkow2019-06-211-21/+9
|
* texture_cache: Implement GPU Dirty FlagsFernando Sahmkow2019-06-211-15/+22
|
* texture_cache: Implement L1_Inner_cacheFernando Sahmkow2019-06-211-13/+30
|
* video_core: Use un-shifted block sizes to avoid integer divisionsReinUsesLisp2019-06-211-0/+3
| | | | | | | | | | | | 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).
* texture_cache: Change internal cache from lists to vectorsReinUsesLisp2019-06-211-6/+7
|
* Reduce amount of size calculations.Fernando Sahmkow2019-06-211-20/+20
|
* texture_cache: Correct premature texceptionsFernando Sahmkow2019-06-211-4/+22
| | | | | | | | | | | | 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.
* texture_cache: Implement guest flushingFernando Sahmkow2019-06-211-0/+14
|
* Fixes to mipmap's process and reconstruct processFernando Sahmkow2019-06-211-1/+1
|
* Texture Cache: Implement Blitting and Fermi CopiesFernando Sahmkow2019-06-211-4/+15
|
* copy_params: Use constructor instead of C-like initializationReinUsesLisp2019-06-211-14/+9
|
* Change texture_cache chaching from GPUAddr to CacheAddrFernando Sahmkow2019-06-211-61/+41
| | | | | This also reverses the changes to make invalidation and flushing through the GPU address.
* Corrections to Structural MatchingFernando Sahmkow2019-06-211-3/+8
| | | | | The texture will now be reconstructed if the width only matches on GoB alignment.
* Implement Texture Cache V2Fernando Sahmkow2019-06-211-88/+366
|
* texture_cache: Remove execution context copies from the texture cacheReinUsesLisp2019-06-211-49/+34
| | | | | This is done to simplify the OpenGL implementation, it is needed for Vulkan.
* texture_cache: Split texture cache into different filesReinUsesLisp2019-06-211-0/+282