Commit graph

13664 commits

Author SHA1 Message Date
ReinUsesLisp
4364492b95 query_cache: Address feedback 2020-02-14 17:38:27 -03:00
ReinUsesLisp
80fff282df query_cache: Fix ambiguity in CacheAddr getter 2020-02-14 17:38:27 -03:00
ReinUsesLisp
748a3cd69d query_cache: Add a recursive mutex for concurrent usage 2020-02-14 17:38:27 -03:00
ReinUsesLisp
aaf68dc10b vk_query_cache: Implement generic query cache on Vulkan 2020-02-14 17:38:27 -03:00
ReinUsesLisp
1b2a6980f5 query_cache: Abstract OpenGL implementation
Abstract the current OpenGL implementation into the VideoCommon
namespace and reimplement it on top of that. Doing this avoids repeating
code and logic in the Vulkan implementation.
2020-02-14 17:38:27 -03:00
ReinUsesLisp
d8a42816d7 gl_query_cache: Optimize query cache
Use a custom cache instead of relying on a ranged cache.
2020-02-14 17:38:27 -03:00
ReinUsesLisp
339a227a5e gl_query_cache: Implement host queries using a deferred cache
Instead of waiting immediately for executed commands, defer the query
until the guest CPU reads it. This way we get closer to what the guest
program is doing.

To archive this we have to build a dependency queue, because host APIs
(like OpenGL and Vulkan) use ranged queries instead of counters like
NVN.

Waiting for queries implicitly uses fences and this requires a command
being queued, otherwise the driver will lock waiting until a timeout. To
fix this when there are no commands queued, we explicitly call glFlush.
2020-02-14 17:33:13 -03:00
ReinUsesLisp
9d7d67501f gl_rasterizer: Sort method declarations 2020-02-14 17:27:17 -03:00
ReinUsesLisp
7129efe9b2 gl_rasterizer: Add queued commands counter
Keep track of the queued OpenGL commands that can signal a fence if
waited on. As a side effect, we avoid calls to glFlush when no commands
are queued.
2020-02-14 17:27:17 -03:00
ReinUsesLisp
11206f8a28 maxwell_3d: Slow implementation of passed samples (query 21)
Implements GL_SAMPLES_PASSED by waiting immediately for queries.
2020-02-14 17:27:17 -03:00
ReinUsesLisp
3603c2f559 gl_resource_manager: Add managed query class 2020-02-13 22:25:55 -03:00
bunnei
12b89ac3d0 Merge pull request #3395 from FernandoS27/queries
GPU: Refactor queries implementation and correct GPU Clock.
2020-02-13 20:18:26 -05:00
Fernando Sahmkow
2dd9d660e3 GPU: Address Feedback. 2020-02-13 18:16:07 -04:00
bunnei
36e34193db Merge pull request #3405 from lioncash/thread
address_arbiter: Minor cleanup to list querying
2020-02-12 21:46:00 -05:00
Lioncash
5c0742bb94 address_arbiter: Collapse loops in InsertThread() and RemoveThread()
Same behavior, but without the need to explicitly loop through
everything manually.
2020-02-12 15:34:07 -05:00
Lioncash
3105b7864c address_arbiter: Simplify GetThreadsWaitingOnAddress()
Simplifies the overall function and also allows for it to become a
const-qualified member function.
2020-02-12 15:10:16 -05:00
bunnei
3184bdd36c Merge pull request #3403 from lioncash/debug
bcat/backend: Prevent fmt exception in debug log within NullBackend::Clear()
2020-02-12 11:17:43 -05:00
bunnei
fe4e4f9c19 Merge pull request #3402 from lioncash/sys-global
kernel/thread: Remove trivial usages of the global system accessor
2020-02-12 10:10:00 -05:00
Lioncash
d5435df964 bcat/backend: Make formatting of passphrase consistent in NullBackend::SetPassphrase()
Aligns the '=' to be consistent with the rest of the logs within this
source file.
2020-02-12 01:18:29 -05:00
Lioncash
8792d4562c bcat/backend: Prevent fmt exception in debug log within NullBackend::Clear()
A formatting specifier within Clear wasn't being used, which will cause
fmt to throw an exception. This fixes that.
2020-02-12 01:14:47 -05:00
Lioncash
750c48af18 kernel/thread: Remove trivial usages of the global system accessor
We can just use the kernel member variable directly instead of going
through the system to obtain the same thing.
2020-02-12 01:00:41 -05:00
bunnei
840326a322 Merge pull request #3376 from ReinUsesLisp/point-sprite
gl_rasterizer: Implement GL_POINT_SPRITE
2020-02-11 08:26:07 -05:00
Fernando Sahmkow
04c3213a01 GPU: Implement GPU Clock correctly. 2020-02-10 10:44:54 -04:00
Fernando Sahmkow
8137fb8981 Maxwell3D: Correct query reporting. 2020-02-10 10:41:43 -04:00
bunnei
a47f0ff68b Merge pull request #3372 from ReinUsesLisp/fix-back-stencil
maxwell_3d: Fix stencil back mask
2020-02-09 22:29:28 -05:00
Zach Hilman
2a1331b683 Merge pull request #3391 from Morph1984/remove-unknown
Remove option "Show files with type 'Unknown'"
2020-02-09 12:08:01 -05:00
Morph
db09e18f72 Remove option "Show files with type 'Unknown'" 2020-02-09 11:30:02 -05:00
bunnei
505ddc95cd Merge pull request #3388 from bunnei/service-shared-ptr
hle: services: Use std::shared_ptr instead of copy by value.
- This is a prerequisite to adding a mutex to `ServiceFramework`, which cannot be copied.
- This will be used for threaded services.
2020-02-08 21:35:30 -05:00
bunnei
d63149ce8a Merge pull request #3387 from bunnei/gpu-mpscqueue
gpu_thread: Use MPSCQueue for GPU commands.
2020-02-08 21:15:48 -05:00
bunnei
5e2d668eb9 Merge pull request #3386 from bunnei/gpu-mem-interface
video_core: memory_manager: Use GPU interface for cache functions.
2020-02-08 21:15:27 -05:00
bunnei
3edec585bc hle: services: Use std::shared_ptr instead of copy by value. 2020-02-07 23:02:26 -05:00
bunnei
fc246fd1a2 gpu_thread: Use MPSCQueue for GPU commands.
- Necessary for multiple service threads.
2020-02-07 23:01:23 -05:00
bunnei
f28ab9626e video_core: memory_manager: Use GPU interface for cache functions. 2020-02-07 22:59:35 -05:00
bunnei
61e441192f Merge pull request #3378 from ReinUsesLisp/uscaled
maxwell_to_gl: Implement R8G8_USCALED
2020-02-07 22:55:52 -05:00
bunnei
5160900bec Merge pull request #3369 from ReinUsesLisp/shf
shader/shift: Implement SHF
2020-02-07 22:06:57 -05:00
bunnei
e4c167aff9 Merge pull request #3381 from bunnei/ipc-fix
hle: services: Fix prepo IPC, and add better error checking.
2020-02-07 16:25:42 -05:00
bunnei
1841589251 Merge pull request #3362 from ReinUsesLisp/fix-instanced
gl_rasterizer: Fix instanced draw arrays
2020-02-06 21:39:59 -05:00
bunnei
384e069c5c Merge pull request #3366 from bunnei/swkbd-fixes
applets: Fixes for software keyboard and transfer memory.
2020-02-05 23:26:32 -05:00
bunnei
9ffdef96d9 kernel: transfer_memory: Properly reserve and reset memory region. 2020-02-05 23:06:54 -05:00
Zach Hilman
a0400ebc19 wait_object: Make wait behavior only require one object to signal.
- This was holdover from citra.
2020-02-05 23:06:53 -05:00
bunnei
900b370e13 am: Correct IPC object count mismatch. 2020-02-05 23:06:53 -05:00
bunnei
141c06ca8b services: am: Clear events on PopOutData and PopInteractiveOutData. 2020-02-05 23:06:52 -05:00
bunnei
b10a96347f am: Refactor IStorage interface. 2020-02-05 23:06:52 -05:00
bunnei
0d376ae49e applets: software_keyboard: Signal state change on end of interactive session. 2020-02-05 23:06:51 -05:00
bunnei
b1bd8d852a applets: software_keyboard: Minor cleanup. 2020-02-05 23:06:50 -05:00
bunnei
7bdaae11ac services: prepo: Fix IPC interface with SaveReport/SaveReportWithUser. 2020-02-05 22:52:35 -05:00
bunnei
bc76fe3100 hle_ipc: Add error checking to read/write buffer access. 2020-02-05 22:52:35 -05:00
ReinUsesLisp
48a1e6461b maxwell_to_gl: Implement R8G8_USCALED 2020-02-04 21:32:36 -03:00
ReinUsesLisp
e98ec35845 maxwell_to_gl: Reduce unimplemented formats to LOG_ERROR 2020-02-04 21:32:08 -03:00
bunnei
be61dbade9 Merge pull request #3377 from ReinUsesLisp/bitset-vk
vk_rasterizer: Use noexcept methods of std::bitset
2020-02-04 16:56:57 -05:00