60bf761afb
texture_cache: Implement Buffer Copy and detect Turing GPUs Image Copies
2019-06-20 21:38:33 -03:00
228f516bb4
texture_cache uncompress-compress is untopological.
...
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-20 21:38:33 -03:00
9251354152
texture_cache: Correct copying between compressed and uncompressed formats
2019-06-20 21:38:33 -03:00
0966665fc2
texture_cache: Only load on recycle with accurate GPU.
...
Testing so far has proven this to be quite safe as texture memory read
added a 2-5ms load to the current cache.
2019-06-20 21:38:33 -03:00
ea1525dab1
Fix rebase errors
2019-06-20 21:38:33 -03:00
bdf9faab33
texture_cache: Handle uncontinuous surfaces.
2019-06-20 21:38:33 -03:00
e60ed2bb3e
texture_cache: return null surface on invalid address
2019-06-20 21:38:33 -03:00
fcac55d5bf
texture_cache: Add checks for texture buffers.
2019-06-20 21:38:33 -03:00
175aa343ff
texture_cache: Fermi2D reform and implement View Mirage
...
This also does some fixes on compressed textures reinterpret and on the
Fermi2D engine in general.
2019-06-20 21:38:33 -03:00
1bf4154e7d
gl_shader_decompiler: Implement image binding settings
2019-06-20 21:38:33 -03:00
9097301d92
shader: Implement bindless images
2019-06-20 21:38:33 -03:00
06c4ce8645
shader: Decode SUST and implement backing image functionality
2019-06-20 21:38:33 -03:00
007ffbef1c
gl_rasterizer: Track texture buffer usage
2019-06-20 21:38:33 -03:00
58c0d37422
video_core: Make ARB_buffer_storage a required extension
2019-06-20 21:36:12 -03:00
07f7ce1da2
gl_rasterizer_cache: Use texture buffers to emulate texture buffers
2019-06-20 21:36:12 -03:00
b8c75a845b
maxwell_3d: Partially implement texture buffers as 1D textures
2019-06-20 21:36:12 -03:00
6c81c8f5b7
gl_shader_decompiler: Allow 1D textures to be texture buffers
2019-06-20 21:36:12 -03:00
4e81fc8296
shader: Implement texture buffers
2019-06-20 21:36:12 -03:00
d267948a73
texture_cache: loose TryReconstructSurface when accurate GPU is not on.
...
Also corrects some asserts.
2019-06-20 21:36:12 -03:00
6162cb922e
texture_cache: Document the most important methods.
2019-06-20 21:36:12 -03:00
4530511ee4
texture_cache: Try to Reconstruct Surface on bigger than overlap.
...
This fixes clouds in SMO Cap Kingdom and lens on Cloud Kingdom.
Also moved accurate_gpu setting check to Pick Strategy
2019-06-20 21:36:12 -03:00
a79831d9d0
texture_cache: Implement Guard mechanism
2019-06-20 21:36:12 -03:00
7731a0e2d1
texture_cache: General Fixes
...
Fixed ASTC mipmaps loading
Fixed alignment on openGL upload/download
Fixed Block Height Calculation
Removed unalign_height
2019-06-20 21:36:12 -03:00
c2ed348bdd
surface_params: Ensure pitch is always written to avoid surface leaks
2019-06-20 21:36:12 -03:00
9098905dd1
gl_framebuffer_cache: Use a hashed struct to cache framebuffers
2019-06-20 21:36:12 -03:00
d65a4af895
texture_cache return invalid buffer on deactivated color_mask
2019-06-20 21:36:12 -03:00
6bd034eae9
engine_upload: Addapt to new Texture Cache
2019-06-20 21:36:12 -03:00
2131f71573
surface_params: Optimize CreateForTexture
...
Instead of using Common::AlignUp, use Common::AlignBits to align the
texture compression factor.
2019-06-20 21:36:12 -03:00
41b4674458
gl_texture_cache: Make main views be proxy textures instead of a full view.
2019-06-20 21:36:12 -03:00
07cc7e0c12
texture_cache: Add ASync Protections
2019-06-20 21:36:12 -03:00
1bbc9debfb
Remove Framebuffer reconfiguration and restrict rendertarget protection
2019-06-20 21:36:12 -03:00
5192521dc3
texture_cache: Implement GPU Dirty Flags
2019-06-20 21:36:12 -03:00
94f2be5473
texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth
2019-06-20 21:36:12 -03:00
a4a58be2d4
texture_cache: Implement L1_Inner_cache
2019-06-20 21:36:12 -03:00
345e73f2fe
video_core: Use un-shifted block sizes to avoid integer divisions
...
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-20 21:36:12 -03:00
28d7c2f5a5
texture_cache: Change internal cache from lists to vectors
2019-06-20 21:36:12 -03:00
b347543e83
Reduce amount of size calculations.
2019-06-20 21:36:12 -03:00
4e2071b6d9
texture_cache: Correct premature texceptions
...
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-20 21:36:12 -03:00
ba677ccb5a
texture_cache: Implement guest flushing
2019-06-20 21:36:12 -03:00
de0b1cb2b2
Fixes to mipmap's process and reconstruct process
2019-06-20 21:36:12 -03:00
e0002599ac
surface_base: Add parenthesis to EmplaceOverview's predicate
2019-06-20 21:36:12 -03:00
324e470879
Texture Cache: Implement Blitting and Fermi Copies
2019-06-20 21:36:12 -03:00
549fd18ac4
surface_view: Add constructor for ViewParams
2019-06-20 21:36:12 -03:00
16e8625a30
surface_base: Split BreakDown into layered and non-layered variants
2019-06-20 21:36:12 -03:00
2b30000a1e
surface_base: Silence truncation warnings and minor renames and reordering
2019-06-20 21:36:12 -03:00
03d10ea3b4
copy_params: Use constructor instead of C-like initialization
2019-06-20 21:36:12 -03:00
1af4414861
Correct Mipmaps View method in Texture Cache
2019-06-20 21:36:12 -03:00
d86f9cd709
Change texture_cache chaching from GPUAddr to CacheAddr
...
This also reverses the changes to make invalidation and flushing through
the GPU address.
2019-06-20 21:36:12 -03:00
b711cdce78
Corrections to Structural Matching
...
The texture will now be reconstructed if the width only matches on GoB
alignment.
2019-06-20 21:36:12 -03:00
bc930754cc
Implement Texture Cache V2
2019-06-20 21:36:12 -03:00