Fernando Sahmkow
129bcd1b85
Garbage Collection: Adress Feedback.
2021-08-29 18:19:53 +02:00
Fernando Sahmkow
9a785765d8
Garbage Collection: enable as default, eliminate option.
2021-08-28 17:55:37 +02:00
Fernando Sahmkow
7d22f79cf0
VideoCore: Rework Garbage Collection.
2021-08-28 17:54:12 +02:00
Lioncash
dd25abba68
buffer_cache: Remove unused small_vector in CommitAsyncFlushesHigh()
...
Given this is non-trivial, the constructor is required to execute, so
this removes a bit of redundant codegen.
2021-07-27 06:24:44 -04:00
bunnei
0a328423e8
Merge pull request #6585 from ameerj/hades
...
Shader Decompiler Rewrite
2021-07-25 11:39:04 -07:00
ReinUsesLisp
2cd96376b5
buffer_cache: Fix debugging leftover
2021-07-22 21:51:38 -04:00
ReinUsesLisp
b7cf8e0de4
buffer_cache: Fix size reductions not having in mind bind sizes
...
A buffer binding can change between shaders without changing the
shaders. This lead to outdated bindings on OpenGL.
2021-07-22 21:51:38 -04:00
ReinUsesLisp
ee69b7aa59
buffer_cache: Invalidate fast buffers on compute
2021-07-22 21:51:35 -04:00
ReinUsesLisp
5292190c8d
buffer_cache: Fix copy based uniform bindings tracking
2021-07-22 21:51:35 -04:00
ReinUsesLisp
535fb4e6b5
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
ebfbb5e09f
buffer_cache: Mark uniform buffers as dirty if any enable bit changes
2021-07-22 21:51:34 -04:00
ReinUsesLisp
5ca5988c63
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
ReinUsesLisp
03c16b085a
spirv: Implement image buffers
2021-07-22 21:51:27 -04:00
ReinUsesLisp
3e6cb6362d
shader: Interact texture buffers with buffer cache
2021-07-22 21:51:26 -04:00
ReinUsesLisp
9d433f0bd9
buffer_cache: Simplify clear logic
...
Use existing helper functions and avoid looping when
only one buffer has to be active.
2021-07-20 18:50:51 -03:00
Fernando Sahmkow
a358a281bf
Buffer cache: Fixes, Clang and Feedback.
2021-07-15 02:02:08 +02:00
Fernando Sahmkow
1eeef16a6e
Buffer Cache: Fixes to DMA Copy.
2021-07-14 18:25:33 +02:00
Fernando Sahmkow
4220d6a7d6
BufferCache: fix clearing on forced download.
2021-07-14 16:44:15 +02:00
Fernando Sahmkow
a0a9ff69fa
DMAEngine: Accelerate BufferClear
2021-07-13 03:49:47 +02:00
Fernando Sahmkow
2f222a20df
accelerateDMA: Fixes and feedback.
2021-07-12 10:33:35 +02:00
Fernando Sahmkow
45da44d16a
accelerateDMA: Accelerate Buffer Copies.
2021-07-11 01:33:17 +02:00
Fernando Sahmkow
1be1828db1
Buffer Cache: Address Feedback.
2021-07-10 21:34:55 +02:00
Fernando Sahmkow
bdd0787048
Buffer Cache: Fix GCC copmpile error
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
d9fc759460
BufferCache: Additional download fixes.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
000f51250f
Buffer Cache: Revert unnecessary range reduction.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
ee5dfe2c02
Fence Manager: Force ordering on WFI.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
ddb595bf7f
Buffer Cache: Eliminate the AC Hack as the base game is fixed in Hades.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
48d5b8bf3e
Fence Manager: Add fences on Reference Count.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
907da84f02
Videocore: Address Feedback & CLANG Format.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
776da59abc
Buffer Cache: Fix High Downloads and don't predownload on Extreme.
2021-07-09 22:20:36 +02:00
ReinUsesLisp
b89963e542
buffer_cache: Only flush downloaded size
...
Fixes a regression unintentionally introduced by the garbage collector.
This makes regular memory downloads only flush the requested sizes.
This negatively affected Koei Tecmo games.
2021-06-26 03:29:34 -03:00
ReinUsesLisp
a0a7f569c0
buffer_cache/texture_cache: Make GC functions private
2021-06-26 02:17:36 -03:00
ReinUsesLisp
21e08723e7
buffer_cache: Silence implicit cast warning
2021-06-26 02:17:36 -03:00
Wunkolo
722f9c3cb5
common: Replace common_sizes into user-literals
...
Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc
user-literals within literals.h.
To keep the global namespace clean, users will have to use:
```
using namespace Common::Literals;
```
to access these literals.
2021-06-24 09:27:40 -07:00
Fernando Sahmkow
aa941d40cd
Reaper: Change memory restrictions on TC depending on host memory on VK.
2021-06-17 00:29:48 +02:00
Fernando Sahmkow
2fd0207e2e
Reaper: Address Feedback.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
25e2362427
Reaper: Setup settings and final tuning.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
978aabb1d0
Reaper: Tune it up to be an smart GC.
2021-06-16 21:35:02 +02:00
ReinUsesLisp
cb0d987c90
Initial Reaper Setup
...
WIP
2021-06-16 21:35:02 +02:00
Markus Wick
e7c2b054c1
Fix GCC undefined behavior sanitizer.
...
* Wrong alignment in u64 LOG_DEBUG -> memcpy.
* Huge shift exponent in stride calculation for linear buffer, unused result -> skipped.
* Large shift in buffer cache if word = 0, skip checking for set bits.
Non of those were critical, so this should not change any behavior.
At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0.
2021-06-10 21:07:27 +02:00
ameerj
2a0dbf9b79
buffer_cache: Simplify uniform disabling logic
2021-06-01 13:26:58 -04:00
Markus Wick
9f92beed0a
Fix two GCC 11 warnings: Unneeded copies.
...
std::move created an unneeded copy.
iterating without reference also created copies.
2021-05-29 08:57:44 +02:00
ameerj
53c68f6bb3
buffer_cache: Ensure null buffers cannot take the fast uniform bind path
...
Fixes a crash in New Pokemon Snap
2021-05-16 07:43:40 -04:00
bunnei
7a76bc30fa
common: Move settings to common from core.
...
- Removes a dependency on core and input_common from common.
2021-04-14 16:24:03 -07:00
ReinUsesLisp
06028cda0c
buffer_cache: Heuristically decide to skip cache on uniform buffers
...
Some games benefit from skipping caches (Pokémon Sword), and others
don't (Animal Crossing: New Horizons). Add an heuristic to decide this
at runtime.
The cache hit ratio has to be ~98% or better to not skip the cache.
There are 16 frames of buffer.
2021-03-02 02:44:19 -03:00
ReinUsesLisp
8e14700d9c
buffer_cache: Add extra bytes to guest SSBOs
...
Bind extra bytes beyond the guest API's bound range.
This is due to some games like Astral Chain operating out of bounds.
Binding the whole map range would be technically correct, but games
have large maps that make this approach unaffordable for now.
2021-02-13 02:18:38 -03:00
ReinUsesLisp
b0573192d4
gl_buffer_cache: Drop interop based parameter buffer workarounds
...
Sacrify runtime performance to avoid generating kernel exceptions on
Windows due to our abusive aliasing of interop buffer objects.
2021-02-13 02:17:24 -03:00
ReinUsesLisp
d70e2f28b6
buffer_cache: Heuristically detect stream buffers
...
Detect when a memory region has been joined several times and increase
the size of the created buffer on those instances. The buffer is assumed
to be a "stream buffer", increasing its size should stop us from
constantly recreating it and fragmenting memory.
2021-02-13 02:17:24 -03:00
ReinUsesLisp
c86394220d
buffer_cache: Split CreateBuffer in separate functions
...
Allow adding functionality to each function without making CreateBuffer
more complex.
2021-02-13 02:17:24 -03:00
ReinUsesLisp
48a391810c
buffer_cache: Skip cache on small uploads on Vulkan
...
Ports from OpenGL the optimization to skip small 3D uniform buffer
uploads. This will take advantage of the previously introduced stream
buffer.
Fixes instances where the staging buffer offset was being ignored.
2021-02-13 02:17:24 -03:00