Commit Graph

14030 Commits

Author SHA1 Message Date
ReinUsesLisp
224b92ab38 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
9b384fdb5c 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
1d444e6f27 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
5e3449c878 gl_rasterizer: Sort method declarations 2020-02-14 17:27:17 -03:00
ReinUsesLisp
5d3ebcbd22 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
2528f478ab 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
bunnei
cd9bb738d7 Merge pull request #3401 from FernandoS27/synchronization
Set of refactors for Kernel Synchronization and Hardware Constants
2020-02-14 14:40:20 -05:00
Morph
8b989c0ce4 Add 4:3 aspect ratio and address feedback 2020-02-14 14:39:04 -05:00
bunnei
9acee3f8b9 Merge pull request #3379 from ReinUsesLisp/cbuf-offset
shader/decode: Fix constant buffer offsets
2020-02-14 13:22:53 -05:00
Zach Hilman
b7dba477a0 Merge pull request #3398 from brianclinkenbeard/fix-cmake-sdl2
Use config mode for finding SDL2 with CMake
2020-02-14 09:11:47 -05:00
Fernando Sahmkow
fafe4daecc Core: Correct compilition in GCC 2020-02-14 05:53:30 -04:00
Morph
78773e1b75 Address feedback 2020-02-14 00:06:26 -05:00
Morph
83167ea2b9 Use enumeration instead of magic numbers 2020-02-13 23:13:23 -05:00
Morph
14e657ffef Add following aspect ratios: 16:9, 21:9, Stretch to Window
Available as a drop down within the configure graphics tab.
2020-02-13 22:17:28 -05:00
bunnei
525633103e Merge pull request #3400 from makigumo/patch-1
update hwopus DecodeInterleaved for FW 7.0.0+
2020-02-13 21:26:13 -05:00
ReinUsesLisp
35018ace99 gl_resource_manager: Add managed query class 2020-02-13 22:25:55 -03:00
bunnei
99f3083da6 Merge pull request #3395 from FernandoS27/queries
GPU: Refactor queries implementation and correct GPU Clock.
2020-02-13 20:18:26 -05:00
ReinUsesLisp
8eb08c51d7 gl_rasterizer: Use the least generic OpenGL draw function possible
This may help some implementations.
2020-02-13 21:55:21 -03:00
ReinUsesLisp
5dc692c06e vk_shader_decompiler: Fix vertex id and instance id
Vulkan's VertexIndex and InstanceIndex don't match with hardware. This
is because Nvidia implements gl_VertexID and gl_InstanceID. The math
that relates these is:

gl_VertexIndex = gl_BaseVertex + gl_VertexID
gl_InstanceIndex = gl_InstanceIndex + gl_InstanceID

To emulate it using what Vulkan's SPIR-V offers (the *Index variants)
this commit substracts gl_Base* from gl_*Index to obtain the OpenGL and
hardware's equivalent.
2020-02-13 20:25:28 -03:00
Fernando Sahmkow
12769a0d53 Core: Address Feedback 2020-02-13 19:10:33 -04:00
Fernando Sahmkow
6ac10db2fe GPU: Address Feedback. 2020-02-13 18:16:07 -04:00
bunnei
660cc92b37 Merge pull request #3405 from lioncash/thread
address_arbiter: Minor cleanup to list querying
2020-02-12 21:46:00 -05:00
Brian Clinkenbeard
1b6992c6fd Merge branch 'master' into fix-cmake-sdl2 2020-02-12 16:07:07 -08:00
Lioncash
5fb4c020c7 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
d7ed24fe2f 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
2b1c6add40 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
141bb53ffd 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
20984380b4 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
7a28360d50 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
e79272b782 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
Fernando Sahmkow
f72bc5ff6f Core: Set all hardware emulation constants in a single file. 2020-02-11 20:19:11 -04:00
Fernando Sahmkow
e6a8d31829 Kernel: Refactor synchronization to better match RE 2020-02-11 18:47:31 -04:00
makigumo
92ed9bd4d5 update hwopus DecodeInterleaved for FW 7.0.0+
trivial change,
see https://switchbrew.org/wiki/Audio_services#IHardwareOpusDecoder
2020-02-11 18:41:04 +01:00
Fernando Sahmkow
d206267c9b Kernel: Change WaitObject to Synchronization object. In order to better reflect RE. 2020-02-11 10:46:25 -04:00
bunnei
bfa19fdab0 Merge pull request #3376 from ReinUsesLisp/point-sprite
gl_rasterizer: Implement GL_POINT_SPRITE
2020-02-11 08:26:07 -05:00
Brian Clinkenbeard
2e4977a846 use config mode for finding SDL2 with CMake 2020-02-10 19:56:33 -08:00
Fernando Sahmkow
cc9b0bff8e GPU: Implement GPU Clock correctly. 2020-02-10 10:44:54 -04:00
Fernando Sahmkow
a4a3e746a6 Maxwell3D: Correct query reporting. 2020-02-10 10:41:43 -04:00
bunnei
219eb7bcd3 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
cdb920acec Merge pull request #3391 from Morph1984/remove-unknown
Remove option "Show files with type 'Unknown'"
2020-02-09 12:08:01 -05:00
Morph
2c80db181d Remove option "Show files with type 'Unknown'" 2020-02-09 11:30:02 -05:00
bunnei
483759a239 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
e4fdf18d34 Merge pull request #3387 from bunnei/gpu-mpscqueue
gpu_thread: Use MPSCQueue for GPU commands.
2020-02-08 21:15:48 -05:00
bunnei
7f5626ce93 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
949377b04e hle: services: Use std::shared_ptr instead of copy by value. 2020-02-07 23:02:26 -05:00
bunnei
229880b722 gpu_thread: Use MPSCQueue for GPU commands.
- Necessary for multiple service threads.
2020-02-07 23:01:23 -05:00
bunnei
c0e3fcd814 video_core: memory_manager: Use GPU interface for cache functions. 2020-02-07 22:59:35 -05:00
bunnei
6e1666f3f1 Merge pull request #3378 from ReinUsesLisp/uscaled
maxwell_to_gl: Implement R8G8_USCALED
2020-02-07 22:55:52 -05:00
bunnei
468facac6b Merge pull request #3369 from ReinUsesLisp/shf
shader/shift: Implement SHF
2020-02-07 22:06:57 -05:00
bunnei
e5b491a93b 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