bunnei
7fa55a24f2
Merge pull request #4144 from FernandoS27/tt-fix
...
TextureCache: Fix case where layer goes off bound.
2020-06-26 19:02:39 -04:00
Fernando Sahmkow
57926f80c0
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.
2020-06-22 11:37:40 -04:00
Lioncash
096ce9a75e
texture_cache: Fix incorrect address used in a DeduceSurface() call
...
Previously the source was being deduced twice in a row.
2020-06-20 14:11:28 -04:00
ReinUsesLisp
d109c27594
texture_cache: Port original code management for 2D vs 3D textures
...
Handle blits to images as 2D, even when they have block depth.
- Fixes rendering issues on Luigi's Mansion 3
2020-06-08 05:02:22 -03:00
ReinUsesLisp
9a6cba3e44
texture_cache: Simplify blit code
2020-06-08 05:01:44 -03:00
ReinUsesLisp
4db9771559
texture_cache: Handle 3D texture blits with one layer
2020-06-08 05:01:00 -03:00
ReinUsesLisp
77fbdd7e1d
texture_cache: Implement rendering to 3D textures
...
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.
2020-06-08 05:01:00 -03:00
bunnei
6da7788907
Merge pull request #4012 from ReinUsesLisp/mipmap-overlaps
...
texture_cache: Handle overlaps with multiple subresources
2020-06-03 12:17:25 -04:00
Rodrigo Locatti
627295fa9d
Merge pull request #4005 from ReinUsesLisp/g24r8
...
format_lookup_table: Implement G24S8 format as S8Z24
2020-06-01 16:07:58 -03:00
bunnei
2f9185afcd
Merge pull request #3999 from ReinUsesLisp/opt-tex-cache
...
texture_cache: Optimize GetSurfacesInRegion
2020-05-31 17:02:29 -04:00
ReinUsesLisp
1ce820a58c
texture_cache: More relaxed reconstruction
...
Only reupload textures when they've not been modified from the GPU.
2020-05-29 23:56:52 -03:00
ReinUsesLisp
5e4a740410
texture_cache: Only copy textures that were modified from host
2020-05-29 20:12:46 -03:00
ReinUsesLisp
c60d814104
texture_cache: Reload textures when number of resources mismatch
2020-05-29 20:10:58 -03:00
ReinUsesLisp
4686947d38
texture_cache: Handle overlaps with multiple subresources
...
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
2020-05-29 02:57:30 -03:00
ReinUsesLisp
454954bcf0
format_lookup_table: Implement G24S8 format as S8Z24
2020-05-28 17:16:07 -03:00
ReinUsesLisp
eccf9098ae
texture_cache: Use unordered_map::find instead of operator[] on hot code
2020-05-27 17:59:04 -03:00
ReinUsesLisp
fa6a64eb72
texture_cache: Use small vector for surface vectors
...
This avoids most heap allocations when collecting surfaces into a
vector.
2020-05-27 17:31:14 -03:00
ReinUsesLisp
387b7926c0
texture_cache: Fix layered null surfaces
...
Null texture cubes were not considered arrays, causing issues on Vulkan
and OpenGL when creating views.
2020-05-26 17:50:08 -03:00
Rodrigo Locatti
bab843f4e9
Merge pull request #3839 from Morph1984/r8g8ui
...
texture: Implement R8G8UI
2020-05-09 05:28:55 -03:00
bunnei
33a218bea2
Merge pull request #3693 from ReinUsesLisp/clean-samplers
...
shader/texture: Support multiple unknown sampler properties
2020-05-02 00:45:41 -04:00
Morph
6665cd04f1
texture: Implement R8G8UI
...
- Used by The Walking Dead: The Final Season
2020-04-30 13:19:36 -04:00
ReinUsesLisp
8e3af5d3ca
texture_cache: Reintroduce preserve_contents accurately
...
This reverts commit 1f1e80c67d
.
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.
2020-04-26 19:53:02 -03:00
ReinUsesLisp
c9b4c56d69
shader_ir: Turn classes into data structures
2020-04-23 18:00:06 -03:00
Fernando Sahmkow
02e55a28eb
Address Feedback.
2020-04-22 11:36:27 -04:00
Fernando Sahmkow
ea522da8b5
Address Feedback.
2020-04-22 11:36:24 -04:00
Fernando Sahmkow
af9f901764
FenceManager: Manage syncpoints and rename fences to semaphores.
2020-04-22 11:36:16 -04:00
Fernando Sahmkow
b2787048d1
Rasterizer: Disable fence managing in synchronous gpu.
2020-04-22 11:36:12 -04:00
Fernando Sahmkow
e7195b5f87
ThreadManager: Sync async reads on accurate gpu.
2020-04-22 11:36:12 -04:00
Fernando Sahmkow
10dcdb2ed9
FenceManager: Implement should wait.
2020-04-22 11:36:11 -04:00
Fernando Sahmkow
802fabe3ab
OpenGL: Implement Fencing backend.
2020-04-22 11:36:10 -04:00
Fernando Sahmkow
3d2b5222df
TextureCache: Flush linear textures after finishing rendering.
2020-04-22 11:36:09 -04:00
Fernando Sahmkow
c689dc6804
GPU: Refactor synchronization on Async GPU
2020-04-22 11:36:06 -04:00
Fernando Sahmkow
0a62525e65
Texture Cache: Implement OnCPUWrite and SyncGuestHost
2020-04-22 11:36:05 -04:00
Fernando Sahmkow
c213fd218b
UI: Replasce accurate GPU option for GPU Accuracy Level
2020-04-22 11:36:04 -04:00
bunnei
67cb130051
Merge pull request #3686 from lioncash/table
...
texture_cache/format_lookup_table: Fix incorrect green, blue, and alpha indices
2020-04-19 15:33:33 -04:00
bunnei
7a4ed2581d
Merge pull request #3673 from lioncash/extra
...
CMakeLists: Specify -Wextra on linux builds
2020-04-16 21:12:33 -04:00
Rodrigo Locatti
8f0f9da12b
Merge pull request #3688 from lioncash/nequal
...
surface_view: Add missing operator!= to ViewParams
2020-04-16 01:39:51 -03:00
Rodrigo Locatti
e63ea9ed26
Merge pull request #3687 from lioncash/constness
...
surface_base: Make IsInside() a const member function
2020-04-16 01:22:50 -03:00
Lioncash
adae1cbaeb
surface_view: Add missing operator!= to ViewParams
...
Provides logical symmetry to the interface.
2020-04-16 00:03:12 -04:00
Lioncash
4ce2aaa9d2
surface_base: Make IsInside() a const member function
...
This doesn't modify internal state, so this can be made const.
2020-04-15 23:59:35 -04:00
bunnei
8b21c8e59a
Merge pull request #3683 from lioncash/docs
...
video_core: Amend doxygen comment references
2020-04-15 23:54:58 -04:00
Lioncash
61329ad0be
texture_cache/format_lookup_table: Fix incorrect green, blue, and alpha indices
...
Previously these were all using the red component to derive the indices,
which is definitely not intentional.
2020-04-15 23:50:46 -04:00
Lioncash
3c3928a5f7
video_core: Amend doxygen comment references
...
Fixes broken documentation references.
2020-04-15 22:33:29 -04:00
Lioncash
02e095313a
CMakeLists: Specify -Wextra on linux builds
...
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.
2020-04-15 21:33:46 -04:00
Rodrigo Locatti
45b5676187
Merge pull request #3649 from FernandoS27/3d-fix
...
Texture Cache: Read current data when flushing a 3D segment.
2020-04-15 17:06:55 -03:00
Fernando Sahmkow
09ba659a78
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.
2020-04-15 11:46:17 -04:00
Fernando Sahmkow
52144a9a23
Texture Cache: Only do buffer copies on accurate GPU. ( #3634 )
...
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.
2020-04-14 23:21:00 -04:00
ReinUsesLisp
1f1e80c67d
texture_cache: Remove preserve_contents
...
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.
2020-04-11 01:51:02 -03:00
Rodrigo Locatti
dcd672b1a6
Merge pull request #3610 from FernandoS27/gpu-caches
...
Refactor all the GPU Caches to use VAddr for cache addressing
2020-04-09 17:59:21 -03:00
bunnei
738e281da2
Merge pull request #3599 from ReinUsesLisp/revert-3499
...
Revert "Merge pull request #3499 from ReinUsesLisp/depth-2d-array"
2020-04-07 16:51:41 -04:00