| Age | Commit message (Collapse) | Author |
|
texture_cache: Check format compatibility before copying
|
|
Avoid illegal copies. This intercepts the last step of a copy to avoid
generating validation errors or corrupting the driver on some instances.
We can create views and emit copies accordingly in future commits and
remove this last-step validation.
|
|
TextureCache: Fix case where layer goes off bound.
|
|
The returned layer is expected to be between 0 and the depth of the
surface, anything larger is off bounds.
|
|
Previously the source was being deduced twice in a row.
|
|
Handle blits to images as 2D, even when they have block depth.
- Fixes rendering issues on Luigi's Mansion 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: Handle overlaps with multiple subresources
|
|
format_lookup_table: Implement G24S8 format as S8Z24
|
|
texture_cache: Optimize GetSurfacesInRegion
|
|
Only reupload textures when they've not been modified from the GPU.
|
|
|
|
|
|
Implement more surface reconstruct cases. Allow overlaps with more than
one layer and mipmap and copies all of them to the new texture.
- Fixes textures moving around objects on Xenoblade games
|
|
|
|
|
|
This avoids most heap allocations when collecting surfaces into a
vector.
|
|
Null texture cubes were not considered arrays, causing issues on Vulkan
and OpenGL when creating views.
|
|
texture: Implement R8G8UI
|
|
shader/texture: Support multiple unknown sampler properties
|
|
- Used by The Walking Dead: The Final Season
|
|
This reverts commit 94b0e2e5dae4e0bd0021ac2d8fe1ff904a93ee69.
preserve_contents proved to be a meaningful optimization. This commit
reintroduces it but properly implemented on OpenGL.
We have to make sure the clear removes all the previous contents of the
image.
It's not currently implemented on Vulkan because we can do smart things
there that's preferred to be introduced in a separate commit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|