| Age | Commit message (Collapse) | Author |
|
texture_cache/format_lookup_table: Fix incorrect green, blue, and alpha indices
|
|
CMakeLists: Specify -Wextra on linux builds
|
|
surface_view: Add missing operator!= to ViewParams
|
|
surface_base: Make IsInside() a const member function
|
|
Provides logical symmetry to the interface.
|
|
This doesn't modify internal state, so this can be made const.
|
|
video_core: Amend doxygen comment references
|
|
Previously these were all using the red component to derive the indices,
which is definitely not intentional.
|
|
Fixes broken documentation references.
|
|
Allows reporting more cases where logic errors may exist, such as
implicit fallthrough cases, etc.
We currently ignore unused parameters, since we currently have many
cases where this is intentional (virtual interfaces).
While we're at it, we can also tidy up any existing code that causes
warnings. This also uncovered a few bugs as well.
|
|
Texture Cache: Read current data when flushing a 3D segment.
|
|
This PR corrects flushing of 3D segments when data of other segments is
mixed, this aims to preserve the data in place.
|
|
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.
|
|
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.
|
|
Refactor all the GPU Caches to use VAddr for cache addressing
|
|
Revert "Merge pull request #3499 from ReinUsesLisp/depth-2d-array"
|
|
|
|
This reverts commit 41905ee467b24172ba93e3fcd665bb4e4806a45a, reversing
changes made to 35145bd529c3517e2c366efc764a762092d96edf.
It causes regressions in several games.
|
|
|
|
video_core: Implement RGBA16_SNORM
|
|
texture_cache: Report incompatible textures as black
|
|
Implement RGBA16_SNORM with the current API. Nothing special here.
|
|
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.
|
|
Sometimes games will sample a 2D array TIC with a 2D access in the
shader. This causes bad interactions with the rest of the texture cache.
To emulate what the game wants to do, force a depth=1 on 2D textures
(not 2D arrays) and let the texture cache handle the rest.
|
|
|
|
|
|
texture: Implement R32I
|
|
texture_cache: Implement layered framebuffer attachments
|
|
surface_base: Implement texture buffer flushes
|
|
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.
|
|
Code before this commit was trying to match 3D textures with another
target. Fix that.
|
|
Implement downloads to guest memory from texture buffers on the generic
cache and OpenGL.
|
|
|
|
Layered break downs was passing "layer" as a "depth" parameter. This
commit addresses that.
|
|
format_lookup_table: Fix ZF32_X24S8 component types
|
|
Component types for ZF32_X24S8 were using UNORM. Drivers will set FLOAT,
UINT, UNORM, UNORM; causing a format mismatch. This commit addresses
that.
|
|
|
|
|
|
|
|
certain scenarios.
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.
|
|
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.
|
|
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.
|
|
format_lookup_table: Drop bitfields
format_lookup_table: Use std::array for definition table
format_lookup_table: Include <limits> instead of <numeric>
|
|
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.
|
|
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.
|
|
video_core/texture_cache: Amend Doxygen references
|
|
TryReconstructSurface()
We can take these by const reference and avoid making unnecessary
copies, preventing some atomic reference count increments and
decrements.
|
|
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.
|
|
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.
|