Commit Graph

12175 Commits

Author SHA1 Message Date
ReinUsesLisp 518a6182f9 maxwell_3d: Unify draw methods
Pass instanced state of a draw invocation as an argument instead of
having two separate virtual methods.
2020-02-14 18:09:40 -03:00
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
bunnei 2e46017b66 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 5afb6b95ed Add 4:3 aspect ratio and address feedback 2020-02-14 14:39:04 -05:00
bunnei 082ba6fc64 Merge pull request #3379 from ReinUsesLisp/cbuf-offset
shader/decode: Fix constant buffer offsets
2020-02-14 13:22:53 -05:00
Fernando Sahmkow f326183e8b Core: Correct compilition in GCC 2020-02-14 05:53:30 -04:00
Morph 5abb2b6336 Address feedback 2020-02-14 00:06:26 -05:00
Morph db5dc22c68 Use enumeration instead of magic numbers 2020-02-13 23:13:23 -05:00
Morph 74a490c909 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 f542fc989d 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 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
ReinUsesLisp 8449d0cf4e gl_rasterizer: Use the least generic OpenGL draw function possible
This may help some implementations.
2020-02-13 21:55:21 -03:00
ReinUsesLisp 072a0bff5e 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 0d2a459fae Core: Address Feedback 2020-02-13 19:10:33 -04:00
Fernando Sahmkow 2dd9d660e3 GPU: Address Feedback. 2020-02-13 18:16:07 -04: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
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
Fernando Sahmkow 6fc0790f3a Core: Set all hardware emulation constants in a single file. 2020-02-11 20:19:11 -04:00
Fernando Sahmkow 1ee7a4d926 Kernel: Refactor synchronization to better match RE 2020-02-11 18:47:31 -04:00
makigumo b71b872e74 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 3a7f539463 Kernel: Change WaitObject to Synchronization object. In order to better reflect RE. 2020-02-11 10:46:25 -04: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 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 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 389cb51a33 shader/decode: Fix constant buffer offsets
Some instances were using cbuf34.offset instead of cbuf34.GetOffset().
This returned the an invalid offset. Address those instances and rename
offset to "shifted_offset" to avoid future bugs.
2020-02-05 12:19:09 -03: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
ReinUsesLisp c2ecaf376b vk_rasterizer: Use noexcept variants of std::bitset
Removes bounds checking from "texceptions" instances.
2020-02-04 18:04:24 -03:00
bunnei a683c3c57c Merge pull request #3357 from ReinUsesLisp/bfi-rc
shader/bfi: Implement register-constant buffer variant
2020-02-04 15:14:13 -05:00
ReinUsesLisp 3c7276cd1a gl_rasterizer: Implement GL_POINT_SPRITE
OpenGL core defaults to GL_POINT_SPRITE, meanwhile on OpenGL
compatibility we have to explicitly enable it. This fixes
gl_PointCoord's behaviour.
2020-02-04 15:19:45 -03:00
bunnei 223e535f65 Merge pull request #3356 from ReinUsesLisp/fcmp
shader/arithmetic: Implement FCMP
2020-02-04 11:36:59 -05:00
bunnei 6c7f2a9d45 Merge pull request #3360 from CJBok/statusbar-buttons
GUI: Togglable graphics settings buttons in status bar
2020-02-03 16:57:18 -05:00
bunnei d02c1c1f75 Merge pull request #3337 from ReinUsesLisp/vulkan-staged
yuzu: Implement Vulkan frontend
2020-02-03 16:56:25 -05:00
Lioncash ba28438e61 input_common/udp: Ensure that UDP is shut down within Shutdown()
Previously the UDP backend would never actually get shut down.
2020-02-03 09:29:15 -05:00
Lioncash f693c966a0 input_common/udp: Add missing override specifiers
Prevents trivial warnings and ensures interfaces are properly
maintained between the base class.
2020-02-03 09:26:53 -05:00
Lioncash 02fbec1123 input_common/udp: std::move SocketCallback instances where applicable
std::function is allowed to heap allocate if the size of the captures
associated with each lambda exceed a certain threshold. This prevents
potentially unnecessary reallocations from occurring.
2020-02-03 09:24:05 -05:00
Lioncash cf11ee1b0d input_common/udp: std::move shared_ptr within Client constructor
Gets rid of a trivially avoidable atomic reference count increment and
decrement.
2020-02-03 09:21:46 -05:00
Lioncash 8e230f3e37 udp/client: Replace deprecated from_string() call with make_address_v4()
Future-proofs code if boost is ever updated.
2020-02-03 09:20:40 -05:00
Lioncash e397a2145c input_common/udp: Silence -Wreorder warning for Socket
Amends the constructor initializer list to specify the order of its
elements in the same order that initialization would occur.
2020-02-03 09:15:32 -05:00
Lioncash 2ba97142ab input_common/udp: Remove unnecessary inclusions 2020-02-03 09:13:40 -05:00
Lioncash 5da05e3128 input_common/udp: Add missing header guard 2020-02-03 09:09:06 -05:00
ReinUsesLisp 1eef76d7b6 maxwell_3d: Fix stencil back mask 2020-02-02 17:50:46 -03:00
ReinUsesLisp 4f5791e529 shader: Remove curly braces initializers on shared pointers 2020-02-01 22:52:10 -03:00
bunnei 1de7f0beeb Merge pull request #3282 from FernandoS27/indexed-samplers
Partially implement Indexed samplers in general and specific code in GLSL
2020-02-01 20:41:40 -05:00
ReinUsesLisp 62ab366971 shader/shift: Implement SHIFT_RIGHT_{IMM,R}
Shifts a pair of registers to the right and returns the low register.
2020-02-01 21:20:02 -03:00
ReinUsesLisp 0ff3ea3188 shader/shift: Implement SHF_LEFT_{IMM,R}
Shifts a pair of registers to the left and returns the high register.
2020-02-01 21:19:44 -03:00
bunnei 696e97ae4a Merge pull request #3268 from CJBok/deadzone
GUI: Deadzone controls for sdl engine at configuration input
2020-02-01 16:35:15 -05:00
bunnei 0058ae07f7 Merge pull request #3284 from CJBok/hid-fix
hid: Fix analog sticks directional states
2020-02-01 14:02:41 -05:00
bunnei d1df3ef078 Merge pull request #3364 from lioncash/thread
core/arm: Remove usage of global GetCurrentThread()
2020-01-31 11:13:24 -05:00
bunnei c4ab8cd693 Merge pull request #3363 from lioncash/unique_ptr
kernel/physical_core: Make use of std::unique_ptr instead of std::shared_ptr
2020-01-30 23:33:02 -05:00
bunnei 72a8ed19c3 Revert "system_archive: Fix Korean and Chinese fonts" 2020-01-30 22:02:15 -05:00
Lioncash 11c5ae60e6 core/arm: Remove usage of global GetCurrentThread()
Now both CPU backends go through their referenced system instance to
obtain the current thread.
2020-01-30 18:52:25 -05:00
Lioncash 371f3ecf5d kernel/physical_core: Make use of std::unique_ptr
shared_ptr was used in 8eb175481c due to a
misunderstanding of how the language generates move constructors and
move assignment operators.

If a destructor is user-provided, then the compiler won't generate the
move constructor and move assignment operators by default--they must be
explicitly opted into.

The reason for the compilation errors is due to the fact that the
language will fall back to attempting to use the copy constructor/copy
assignment operators if the respective move constructor or move
assignment operator is unavailable.

Given that we explicitly opt into them now, the the move constructor and
move assignment operators will be generated as expected.
2020-01-30 18:42:40 -05:00
Lioncash 6bc28ed1c8 core/cpu_manager: Remove unused includes
Nothing from these headers are used within this source file, so we can
remove them.
2020-01-30 18:30:57 -05:00
Lioncash 379194237d kernel/physical_core: Remove unused kernel reference member variable
This isn't used within the class, so it can be removed to simplify the
overall interface.

While we're in the same area, we can simplify a unique_ptr reset() call.
2020-01-30 18:29:57 -05:00
bunnei 0edc152d5a Merge pull request #3353 from FernandoS27/aries
System: Refactor CPU Core management and move ARMInterface and Schedulers to Kernel
2020-01-30 18:13:59 -05:00
bunnei 40a54f6de7 Merge pull request #3151 from FearlessTobi/fix-korean
system_archive: Fix Korean and Chinese fonts
2020-01-30 15:09:55 -05:00
bunnei 74aeae1ae7 Merge pull request #3347 from ReinUsesLisp/local-mem
shader/memory: Implement LDL.S16, LDS.S16, STL.S16 and STS.S16
2020-01-30 10:59:52 -05:00
ReinUsesLisp 535a9fcf44 gl_rasterizer: Fix instanced draw arrays
glDrawArrays was being used when the draw had a base instance specified.
This commit removes the draw parameters abstraction and fixes the
mentioned issue.
2020-01-30 02:22:00 -03:00
ReinUsesLisp 066c63571b yuzu/bootmanager: Define Vulkan widget only when enabled 2020-01-29 19:20:12 -03:00
bunnei 04b8af9134 Merge pull request #3350 from ReinUsesLisp/atom
shader/memory: Implement ATOM.ADD
2020-01-29 16:49:54 -05:00
ReinUsesLisp 85f666c066 yuzu_cmd: Fix memcpy on Vulkan handlers 2020-01-29 17:53:11 -03:00
ReinUsesLisp 48cb021c34 yuzu: Implement Vulkan frontend
Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing
bits on Vulkan initialization.
2020-01-29 17:53:11 -03:00
ReinUsesLisp 28e928197a web_service/telemetry_json: Report USER_CONFIG 2020-01-29 17:53:11 -03:00
ReinUsesLisp 2ba5519371 settings: Add settings for graphics backend 2020-01-29 17:53:11 -03:00
ReinUsesLisp e1da845841 core: Only wait for idle on gpu_core when it was initialized
This fixes crashes when a Vulkan device fails to initialize.
2020-01-29 17:53:11 -03:00
ReinUsesLisp 1d17aca3f5 shader/other: Fix skips for SYNC and BRK 2020-01-29 17:53:11 -03:00
ReinUsesLisp 1c642262eb shader/other: Stub S2R LaneId 2020-01-29 17:53:11 -03:00
ReinUsesLisp 25fcf5704b buffer_cache: Delay buffer destructions
Delay buffer destruction some extra frames to avoid destroying buffers
that are still being used from older frames. This happens on Nvidia's
driver with mailbox.
2020-01-29 17:53:11 -03:00
bunnei b5b061381e Merge pull request #3355 from ReinUsesLisp/break-down
texture_cache/surface_base: Fix layered break down
2020-01-29 12:29:56 -05:00
bunnei 208594da5b Merge pull request #3358 from ReinUsesLisp/implicit-texture-cache
gl_texture_cache: Silence implicit sign cast warnings
2020-01-29 11:23:50 -05:00
CJBok f75503d2ed clang 2020-01-29 05:43:55 +01:00
CJBok c42052c661 minor corrections 2020-01-29 00:02:28 +01:00
CJBok 4c58bca524 GUI: Togglable graphics settings buttons in status bar 2020-01-28 23:59:30 +01:00
bunnei c9cfbc502b Merge pull request #3359 from ReinUsesLisp/assert-point-size
gl_shader_decompiler: Remove UNIMPLEMENTED for gl_PointSize
2020-01-28 15:19:51 -05:00
ReinUsesLisp 1044f51a83 gl_shader_decompiler: Remove UNIMPLEMENTED for gl_PointSize
This was implemented by a previous commit and it's no longer required.
2020-01-28 16:32:30 -03:00
bunnei c1b49469ef Merge pull request #3354 from ReinUsesLisp/depth-stencil
gl_texture_cache: Properly implement depth/stencil sampling
2020-01-28 12:06:11 -05:00
ReinUsesLisp 68c9d670a1 gl_texture_cache: Silence implicit sign cast warnings 2020-01-27 20:59:11 -03:00
Fernando Sahmkow 8eb175481c System: Address Feedback 2020-01-27 09:54:11 -04:00
ReinUsesLisp ca61e82f85 shader/bfi: Implement register-constant buffer variant
It's the same as the variant that was implemented, but it takes the
operands from another source.
2020-01-27 01:20:38 -03:00
ReinUsesLisp 098218ff4c shader/arithmetic: Implement FCMP
Compares the third operand with zero, then selects between the first and
second.
2020-01-27 01:15:44 -03:00
ReinUsesLisp b3e4461606 texture_cache/surface_base: Fix layered break down
Layered break downs was passing "layer" as a "depth" parameter. This
commit addresses that.
2020-01-26 21:48:07 -03:00
ReinUsesLisp dbb7b51943 gl_texture_cache: Properly implement depth/stencil sampling
This addresses the long standing issue of compatibility vs. core
profiles on OpenGL, properly implementing depth vs. stencil sampling
depending on the texture swizzle.
2020-01-26 21:44:08 -03:00
Fernando Sahmkow e9b557b38e System: Correct PrepareReschedule. 2020-01-26 14:32:50 -04:00
Fernando Sahmkow 3230cfebb7 Kernel: Remove a few global instances from the kernel. 2020-01-26 14:23:46 -04:00
Fernando Sahmkow 0a5e0d4777 Core: Refactor CpuCoreManager to CpuManager and Cpu to Core Manager.
This commit instends on better naming the new purpose of this classes.
2020-01-26 14:07:22 -04:00
Fernando Sahmkow fb17429a0b ArmInterface: Delegate Exclusive monitor factory to exclusive monitor interfasce. 2020-01-26 10:28:23 -04:00
ReinUsesLisp 0d8f0ad3b3 shader/memory: Implement ATOM.ADD
ATOM operates atomically on global memory. For now only add ATOM.ADD
since that's what was found in commercial games.

This asserts for ATOM.ADD.S32 (handling the others as unimplemented),
although ATOM.ADD.U32 shouldn't be any different.

This change forces us to change the default type on SPIR-V storage
buffers from float to uint. We could also alias the buffers, but it's
simpler for now to just use uint. While we are at it, abstract the code
to avoid repetition.
2020-01-26 01:54:24 -03:00
Fernando Sahmkow 1c2981f6da Core: Refactor CPU Management.
This commit moves ARM Interface and Scheduler handling into the kernel.
2020-01-25 18:55:32 -04:00
Fernando Sahmkow 2e6a1b965d Shader_IR: Address feedback. 2020-01-25 09:04:59 -04:00
ReinUsesLisp 0340f04b84 shader/memory: Implement STL.S16 and STS.S16 2020-01-25 03:16:10 -03:00
ReinUsesLisp edd5e604be shader/memory: Implement unaligned LDL.S16 and LDS.S16 2020-01-25 03:16:10 -03:00
ReinUsesLisp 851d3adc24 shader/memory: Move unaligned load/store to functions 2020-01-25 03:16:10 -03:00
ReinUsesLisp cff97272d2 shader/memory: Implement LDL.S16 and LDS.S16 2020-01-25 03:15:55 -03:00
bunnei ebb840daaf bsd: Stub several more functions.
- Required for Little Town Hero to boot further.
2020-01-25 00:47:15 -05:00
bunnei 53184a16cc Merge pull request #3343 from FearlessTobi/ui-tab
yuzu/configuration: create UI tab and move gamelist settings there
2020-01-25 00:40:13 -05:00
bunnei b6e76fdeb1 Merge pull request #3326 from FearlessTobi/port-5039
Port citra-emu/citra#5039: "common/logging: don't use regex for path trimming"
2020-01-24 20:59:57 -05:00
FearlessTobi 40c05f9028 Disable clang-format for font files 2020-01-24 23:54:19 +01:00
bunnei b6a1315c24 Merge pull request #3344 from ReinUsesLisp/vk-botw
vk_shader_decompiler: Disable default values on unwritten render targets
2020-01-24 17:31:55 -05:00
Fernando Sahmkow 26b5aa702d Shader_IR: Change name of TrackSampler function so it does not confuse with the type. 2020-01-24 16:44:48 -04:00
Fernando Sahmkow 8c800cf312 Shader_IR: Corrections, styling and extras. 2020-01-24 16:44:48 -04:00
Fernando Sahmkow a0cd5fb25f Shader_IR: Correct Custom Variable assignment. 2020-01-24 16:44:47 -04:00
Fernando Sahmkow b6d3153e7e Shader_IR: Propagate bindless index into the GL compiler. 2020-01-24 16:44:47 -04:00
Fernando Sahmkow c066e472b9 Shader_IR: Implement Injectable Custom Variables to the IR. 2020-01-24 16:43:31 -04:00
Fernando Sahmkow 6d6a963173 GL Backend: Introduce indexed samplers into the GL backend 2020-01-24 16:43:31 -04:00
Fernando Sahmkow 123c7cf307 Shader_IR: deduce size of indexed samplers 2020-01-24 16:43:31 -04:00
Fernando Sahmkow 2b9a30d06b Shader_IR: Setup Indexed Samplers on the IR 2020-01-24 16:43:30 -04:00
Fernando Sahmkow f93bff419e Shader_IR: Implement initial code for tracking indexed samplers. 2020-01-24 16:43:30 -04:00
Fernando Sahmkow c0c5fa078b Shader_IR: Address Feedback 2020-01-24 16:43:30 -04:00
Fernando Sahmkow 5fb7881077 Shader_IR: Allow constant access of guest driver. 2020-01-24 16:43:30 -04:00
Fernando Sahmkow c5fdcd7a2c Shader_IR: Address Feedback 2020-01-24 16:43:29 -04:00
Fernando Sahmkow 87546c5c19 Guest_driver: Correct compiling errors in GCC. 2020-01-24 16:43:29 -04:00
Fernando Sahmkow 61d2053adb Shader_IR: Store Bound buffer on Shader Usage 2020-01-24 16:43:29 -04:00
Fernando Sahmkow e9f3264c8d GPU: Implement guest driver profile and deduce texture handler sizes. 2020-01-24 16:43:29 -04:00
Fernando Sahmkow a402d6e870 Kernel: Implement Physical Core. 2020-01-24 15:38:20 -04:00
bunnei 0d6a9f7d6b Merge pull request #3273 from FernandoS27/txd-array
Shader_IR: Implement TXD Array.
2020-01-24 14:02:40 -05:00
bunnei 97414178cb Merge pull request #3340 from SciresM/pmdx
loader: provide default arguments (zero byte) to NSOs
2020-01-24 10:31:43 -05:00
ReinUsesLisp 84532ba55a vk_shader_decompiler: Disable default values on unwritten render targets
Some games like The Legend of Zelda: Breath of the Wild assign
render targets without writing them from the fragment shader. This
generates Vulkan validation errors, so silence these I previously
introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The
problem is that this is not what games expect. This commit reverts that
change.
2020-01-24 01:16:21 -03:00
FearlessTobi 30b4a50d29 audio_core: Switch to a faster interpolation technique 2020-01-24 00:38:22 +01:00
FearlessTobi f857c56aee yuzu/configuration: create UI tab and move gamelist settings there 2020-01-24 00:15:51 +01:00
BreadFish64 45e463971b common/logging: don't use regex for path trimming 2020-01-23 23:08:05 +01:00
FearlessTobi e0e3b5d899 Replace GetString with Get function
This should hopefully fix compilation errors.
2020-01-23 20:55:26 +01:00
FearlessTobi e89cbc93dd Address second part of review comments 2020-01-23 20:55:26 +01:00
FearlessTobi af272d88d9 Address review comments 2020-01-23 20:55:26 +01:00
fearlessTobi b2f53cceb6 Input: UDP Client to provide motion and touch controls
An implementation of the cemuhook motion/touch protocol, this adds the
ability for users to connect several different devices to citra to send
direct motion and touch data to citra.

Co-Authored-By: jroweboy <jroweboy@gmail.com>
2020-01-23 20:55:26 +01:00
bunnei ad4f27978a Merge pull request #3341 from bunnei/time-posix-myrule
service: time: Implement ToPosixTimeWithMyRule.
2020-01-23 12:04:01 -05:00
Fernando Sahmkow 9b89afce60 Merge pull request #3338 from ReinUsesLisp/no-fastmath
gl_shader_cache: Disable fastmath on Nvidia
2020-01-23 10:08:45 -04:00
bunnei dcd1617ee2 service: time: Implement ToPosixTimeWithMyRule.
- Used by Pokemon Mystery Dungeon.
2020-01-22 23:20:19 -05:00
Michael Scire 56137d471a loader: provide default arguments (zero byte) to NSOs
Certain newer unity games (Terraria, Pokemon Mystery Dungeon) require
that the argument region be populated. Failure to do so results in
an integer underflow in argument count, and eventually an unmapped
read at 0x800000000. Providing this default fixes this.

Note that the behavior of official software is as yet unverified,
arguments-wise.
2020-01-22 20:14:06 -08:00
bunnei eab03ad919 Merge pull request #3324 from FearlessTobi/port-5037
Port citra-emu/citra#5037: "CMake: Create thin archives on Linux"
2020-01-22 19:48:15 -05:00
Bartosz Kaszubowski 9333dab6f0 GUI: fix minor issues with dark themes
GUI: rename and reorder themes
2020-01-22 21:12:45 +01:00
ReinUsesLisp 402f69fb3e gl_shader_cache: Disable fastmath on Nvidia 2020-01-21 19:08:08 -03:00
Fernando Sahmkow cb436f6f6f Merge pull request #3330 from ReinUsesLisp/vk-blit-screen
vk_blit_screen: Initial implementation
2020-01-20 22:32:16 -04:00
ReinUsesLisp aa09f9385c vk_blit_screen: Address feedback 2020-01-20 18:43:11 -03:00
bunnei c0a7b5ee4c time: Fix month off-by-one error.
- Fixes timestamp in ZLA and Astral Chain saves.
2020-01-20 14:20:32 -05:00
bunnei 5172d3bdac Merge pull request #3332 from bunnei/config-audio-tab
yuzu_qt: config: Move audio to its own tab.
2020-01-20 04:24:51 -05:00
bunnei 38c28ce329 Merge pull request #3328 from ReinUsesLisp/vulkan-atoms
vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V
2020-01-20 00:01:52 -05:00
bunnei 57816a5b55 Merge pull request #3322 from ReinUsesLisp/vk-front-face
vk_graphics_pipeline: Set front facing properly
2020-01-19 23:22:34 -05:00
bunnei 91c7c20c02 yuzu_qt: config: Move audio to its own tab.
- We have some important audio settings, makes them more discoverable.
2020-01-19 23:17:53 -05:00
bunnei 96029f90d1 Merge pull request #3271 from bunnei/time-rewrite
service: time: Rewrite implementation of glue services.
2020-01-19 22:45:05 -05:00
ReinUsesLisp fcc78abc3c vk_blit_screen: Initial implementation
This abstraction takes care of presenting accelerated and
non-accelerated or "framebuffer" images to the Vulkan swapchain.
2020-01-19 21:12:43 -03:00
bunnei f6aa2acacf Merge pull request #3313 from ReinUsesLisp/vk-rasterizer
vk_rasterizer: Implement Vulkan's rasterizer
2020-01-19 18:09:01 -05:00
Bartosz Kaszubowski ca9353c81c GUI/gamelist: add "None" as an option for second row and remove dynamically duplicate row options (#3309)
* GUI/gamelist: add "None" as an option for second row and remove duplicated row options

* fix clang-format warnings
2020-01-19 15:56:49 -05:00
ReinUsesLisp 6b54252b77 vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V
Also updates sirit to include atomic instructions.
2020-01-19 16:40:31 -03:00
FearlessTobi 6df85b466d system_archive: Fix Chinese font
Adds the proper OSS font for the Chinese language.
2020-01-19 15:09:53 +01:00
FearlessTobi 4be062de19 system_archive: Fix Korean font
Fixes Korean fonts when using Open-source system archives.
2020-01-19 15:09:50 +01:00
Léo Lam 78f6eea4aa CMake: Create thin archives on Linux
This significantly reduces unnecessary disk writes and space usage
when building Citra.

libcore.a is now only ~1MB rather than several hundred megabytes.
2020-01-19 12:52:09 +01:00
Fernando Sahmkow 6b8406f575 Merge pull request #3317 from ReinUsesLisp/gl-decomp-cc-decomp
gl_shader_decompiler: Fix decompilation of condition codes
2020-01-18 19:56:55 -04:00
ReinUsesLisp 1538f99365 gl_state: Use bool instead of GLboolean
This fixes template resolution considering GLboolean an integer instead
of a bool.
2020-01-18 19:10:34 -03:00
ReinUsesLisp 4862fc4970 vk_graphics_pipeline: Set front facing properly
Front face was being forced to a certain value when cull face is
disabled. Set a default value on initialization and drop the forcefully
set front facing value with culling disabled.
2020-01-18 18:50:47 -03:00
bunnei 621e10788e Merge pull request #3298 from Simek/missing_hotkeys
GUI: add few missing hotkeys to main menu
2020-01-18 13:07:13 -05:00
Markus Wick 4042bd107b core/memory: Create a special MapMemoryRegion for physical memory.
This allows us to create a fastmem arena within the memory.cpp helpers.
2020-01-18 08:38:47 +01:00
Markus Wick b18f6d19e2 core/hle: Simplify PhysicalMemory usage in vm_manager. 2020-01-18 08:29:19 +01:00
Markus Wick b8b3264c31 core/loaders: Simplify PhysicalMemory usage.
It is currently a std::vector, however we might want to replace it with a more fancy allocator.
So we can't use the C++ iterators any more.
2020-01-18 08:29:19 +01:00
bunnei 726029a9ae Merge pull request #3305 from ReinUsesLisp/point-size-program
gl_state: Implement PROGRAM_POINT_SIZE
2020-01-18 01:56:32 -05:00
bunnei d6eb2b1632 Merge pull request #3312 from ReinUsesLisp/atoms-u32
shader/memory: Implement ATOMS.ADD.U32
2020-01-18 00:54:07 -05:00
James Rowe afd360f85d Remove unused CPU Vendor string and telemtry field
The information is duplicated in the brand string and the telemetry field is unused
2020-01-17 18:41:18 -07:00
ReinUsesLisp 9a3f0d3d1e vk_rasterizer: Address feedback 2020-01-17 21:40:01 -03:00
ReinUsesLisp 203353a4d6 gl_shader_decompiler: Fix decompilation of condition codes
Use Visit instead of reimplementing it. Fixes unimplemented negations
for condition codes.
2020-01-17 21:23:01 -03:00
TotalCaesar659 410c130a80 Add headbar icon on Linux 2020-01-18 02:46:07 +03:00
bunnei 0a9bf02136 Merge pull request #3306 from ReinUsesLisp/gl-texture
gl_texture_cache: Minor fixes and style changes
2020-01-17 15:44:02 -05:00
bunnei 17daec30dc Merge pull request #3311 from ReinUsesLisp/z32fx24s8
format_lookup_table: Fix ZF32_X24S8 component types
2020-01-17 08:22:32 -05:00
ReinUsesLisp ef4b9a6e39 vk_rasterizer: Implement Vulkan's rasterizer
This abstraction is Vulkan's equivalent to OpenGL's rasterizer. It takes
care of joining all parts of the backend and rendering accordingly on
demand.
2020-01-16 23:05:15 -03:00
ReinUsesLisp b52586eaaa renderer_vulkan: Add header as placeholder 2020-01-16 22:54:15 -03:00
bunnei d9854c29ac Merge pull request #3300 from ReinUsesLisp/vk-texture-cache
vk_texture_cache: Implement generic texture cache on Vulkan
2020-01-16 19:19:26 -05:00
ReinUsesLisp affa8cef27 vk_texture_cache: Address feedback 2020-01-16 18:23:10 -03:00
ReinUsesLisp c4fd02b47f shader/memory: Implement ATOMS.ADD.U32 2020-01-16 17:30:55 -03:00
ReinUsesLisp 078193d8bd format_lookup_table: Fix ZF32_X24S8 component types
Component types for ZF32_X24S8 were using UNORM. Drivers will set FLOAT,
UINT, UNORM, UNORM; causing a format mismatch. This commit addresses
that.
2020-01-16 17:29:13 -03:00
Rodrigo Locatti ec6681ecf4 vk_texture_cache: Fix typo in commentary
Co-Authored-By: MysticExile <30736337+MysticExile@users.noreply.github.com>
2020-01-16 16:59:46 -03:00
bunnei c87f3bef74 Merge pull request #3308 from lioncash/private
maxwell_3d: Make dirty_pointers private
2020-01-16 13:26:35 -05:00
bunnei afbfad0d60 Merge pull request #3304 from lioncash/fwd-decl
renderer_opengl/utils: Forward declare private structs
2020-01-16 11:21:18 -05:00
Lioncash e481a676de maxwell_3d: Make dirty_pointers private
This isn't used outside of the class itself, so we can make it private
for the time being.
2020-01-16 04:07:15 -05:00
James Rowe 47197f6b18 Fix git version in scm_rev.cpp 2020-01-16 00:12:50 -07:00
ReinUsesLisp 1692dab134 gl_state: Implement PROGRAM_POINT_SIZE
For gl_PointSize to have effect we have to activate
GL_PROGRAM_POINT_SIZE.
2020-01-15 16:14:17 -03:00
Lioncash 6ab1c2a461 renderer_opengl/utils: Remove unused header inclusions
Nothing from these headers are used, so they can be removed.
2020-01-15 06:31:23 -05:00
Lioncash 0cb80ac6dc renderer_opengl/utils: Forward declare private structs
Keeps the definitions hidden and allows changes to the structs without
needing to recompile all users of classes containing said structs.
2020-01-15 06:30:01 -05:00
CJBok be576083dd Moved analog direction logic to sdl_impl 2020-01-15 11:25:15 +01:00
CJBok 5af2a8b2f6 Corrected directional states sensitivity 2020-01-14 21:51:58 +01:00
ReinUsesLisp dcde4b9186 gl_texture_cache: Use local variables to simplify DownloadTexture 2020-01-14 17:39:48 -03:00
ReinUsesLisp 50e0bb04b3 gl_texture_cache: Fix format for RGBX16F 2020-01-14 17:38:33 -03:00
ReinUsesLisp 549ddc898e gl_texture_cache: Use Snorm internal format for RG8S 2020-01-14 17:37:58 -03:00
ReinUsesLisp d45f4d62fb gl_texture_cache: Use Snorm internal format for ABGR8S 2020-01-14 17:37:23 -03:00
Rodrigo Locatti 399da88e9f Merge pull request #3303 from lioncash/reorder
control_flow: Silence -Wreorder warning for CFGRebuildState
2020-01-14 16:15:18 -03:00
Rodrigo Locatti b6d2e25699 Merge pull request #3302 from lioncash/unused-var
gl_shader_cache: Remove unused variables
2020-01-14 16:14:47 -03:00
Lioncash a4792176ce control_flow: Silence -Wreorder warning for CFGRebuildState
Organizes the initializer list in the same order that the variables
would actually be initialized in.
2020-01-14 13:28:48 -05:00
bunnei f2844126fc Merge pull request #3296 from Simek/hotkeys_resize
GUI/configure: resize hotkeys action column to fit content
2020-01-14 13:17:16 -05:00
Lioncash b3810c5a5f gl_shader_cache: Remove unused STAGE_RESERVED_UBOS constant
Given this isn't used, this can be removed entirely.
2020-01-14 13:16:52 -05:00
Lioncash f0ed92d90d gl_shader_cache: std::move entries in CachedShader constructor
Avoids several reallocations of std::vector instances where applicable.
2020-01-14 13:14:16 -05:00
Lioncash 15b0cdd6bb gl_shader_cache: Remove unused entries variable in BuildShader()
Eliminates a few unnecessary constructions of std::vectors.
2020-01-14 13:11:49 -05:00
bunnei 8f44846de6 Merge pull request #3287 from ReinUsesLisp/ldg-stg-16
shader_ir/memory: Implement u16 and u8 for STG and LDG
2020-01-14 09:57:08 -05:00
bunnei 193ac8974d Merge pull request #3288 from ReinUsesLisp/uncurse-aoffi
shader_ir/texture: Simplify AOFFI code
2020-01-13 23:52:12 -05:00
bunnei 1608826ecc Merge pull request #3290 from ReinUsesLisp/gl-clamp
maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver
2020-01-13 19:16:06 -05:00
bunnei bb1fbb05d1 Merge pull request #3292 from degasus/heap_space_fix
core/kernel: Fix GetTotalPhysicalMemoryUsed.
2020-01-13 19:15:43 -05:00
ReinUsesLisp f47fdb4b09 vk_texture_cache: Implement generic texture cache on Vulkan
It currently ignores PBO linearizations since these should be dropped as
soon as possible on OpenGL.
2020-01-13 20:37:50 -03:00
ReinUsesLisp 6fd13dc3b8 texture_cache/surface_params: Make GetNumLayers public 2020-01-13 20:35:43 -03:00
Bartosz Kaszubowski 943d33f20c GUI: add few missing hotkeys to main menu 2020-01-13 00:49:44 +01:00
CJBok 0b20089298 Merge remote-tracking branch 'upstream/master' 2020-01-12 23:21:30 +01:00
Bartosz Kaszubowski f0da8c2b83 GUI/configure: resize hotkeys column to content 2020-01-12 22:46:28 +01:00
Markus Wick 2049ebc50e core/kernel: Fix GetTotalPhysicalMemoryUsed.
module._memory was already moved over to a new shared_ptr.
So code_memory_size was not increased at all.

This lowers the heap space and so saves a bit of memory, usually between 50 to 100 MB.

This fixes a regression of b8ccd49d77
2020-01-11 14:04:44 +01:00
Rodrigo Locatti e5f1158dac vk_compute_pass: Address feedback
Comment hardcoded SPIR-V modules.
2020-01-10 22:46:34 -03:00
ReinUsesLisp 18c91ef3e2 maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver
Nvidia's driver defaults invalid enumerations to GL_CLAMP. Vulkan
doesn't expose GL_CLAMP through its API, but we can hack it on Nvidia's
driver using the internal driver defaults.
2020-01-10 17:12:50 -03:00
ReinUsesLisp 6d7d0e48ad shader_ir/texture: Simplify AOFFI code 2020-01-09 03:50:37 -03:00
ReinUsesLisp 5fbd305638 shader_ir/memory: Implement u16 and u8 for STG and LDG
Using the same technique we used for u8 on LDG, implement u16.

In the case of STG, load memory and insert the value we want to set
into it with bitfieldInsert. Then set that value.
2020-01-09 02:12:29 -03:00
CJBok 57998ae780 hid: Fix analog sticks directional states 2020-01-09 02:40:55 +01:00
ReinUsesLisp 832dd7920a vk_compute_pass: Add compute passes to emulate missing Vulkan features
This currently only supports quad arrays and u8 indices.

In the future we can remove quad arrays with a table written from the
CPU, but this was used to bootstrap the other passes helpers and it
was left in the code.

The blob code is generated from the "shaders/" directory. Read the
instructions there to know how to generate the SPIR-V.
2020-01-08 19:24:26 -03:00
ReinUsesLisp 0961937585 vk_shader_util: Add helper to build SPIR-V shaders 2020-01-08 19:22:20 -03:00
Fernando Sahmkow 36e23e4cda Merge pull request #3279 from ReinUsesLisp/vk-pipeline-cache
vk_pipeline_cache: Initial implementation
2020-01-08 17:31:20 -04:00
bunnei 9bca3fcdb0 Merge pull request #3272 from bunnei/vi-close-layer
service: vi: Implement CloseLayer.
2020-01-07 12:45:34 -05:00
ReinUsesLisp 8db329bb9e vk_pipeline_cache: Initial implementation
Given a pipeline key, this cache returns a pipeline abstraction (for
graphics or compute).
2020-01-06 22:02:26 -03:00
ReinUsesLisp 2c7928f71a vk_graphics_pipeline: Initial implementation
This abstractio represents the state of the 3D engine at a given draw.
Instead of changing individual bits of the pipeline how it's done in
APIs like D3D11, OpenGL and NVN; on Vulkan we are forced to put
everything together into a single, immutable object.

It takes advantage of the few dynamic states Vulkan offers.
2020-01-06 22:02:26 -03:00
ReinUsesLisp e89b88bf80 vk_compute_pipeline: Initial implementation
This abstraction represents a Vulkan compute pipeline.
2020-01-06 22:02:26 -03:00
ReinUsesLisp 836580aada vk_pipeline_cache: Add file and define descriptor update template filler
This function allows us to share code between compute and graphics
pipelines compilation.
2020-01-06 22:02:26 -03:00
ReinUsesLisp a067862bd3 fixed_pipeline_state: Add depth clamp 2020-01-06 22:02:26 -03:00
ReinUsesLisp 3b5cccbf0b vk_rasterizer: Add placeholder 2020-01-06 22:02:26 -03:00
bunnei 7348d17961 Merge pull request #3276 from ReinUsesLisp/pipeline-reqs
vk_update_descriptor/vk_renderpass_cache: Add pipeline cache dependencies
2020-01-06 17:03:34 -05:00