Nintendo Switch emulator
Go to file
ReinUsesLisp 420cc13248 renderer_opengl: Add assembly program code paths
Add code required to use OpenGL assembly programs based on
NV_gpu_program5. Decompilation for ARB programs is intended to be added
in a follow up commit. This does **not** include ARB decompilation and
it's not in an usable state.

The intention behind assembly programs is to reduce shader stutter
significantly on drivers supporting NV_gpu_program5 (and other required
extensions). Currently only Nvidia's proprietary driver supports these
extensions.

Add a UI option hidden for now to avoid people enabling this option
accidentally.

This code path has some limitations that OpenGL compatibility doesn't
have:
- NV_shader_storage_buffer_object is limited to 16 entries for a single
OpenGL context state (I don't know if this is an intended limitation, an
specification issue or I am missing something). Currently causes issues
on The Legend of Zelda: Link's Awakening.
- NV_parameter_buffer_object can't bind buffers using an offset
different to zero. The used workaround is to copy to a temporary buffer
(this doesn't happen often so it's not an issue).

On the other hand, it has the following advantages:
- Shaders build a lot faster.
- We have control over how floating point rounding is done over
individual instructions (SPIR-V on Vulkan can't do this).
- Operations on shared memory can be unsigned and signed.
- Transform feedbacks are dynamic state (not yet implemented).
- Parameter buffers (uniform buffers) are per stage, matching NVN and
hardware's behavior.
- The API to bind and create assembly programs makes sense, unlike
ARB_separate_shader_objects.
2020-05-19 18:00:04 -03:00
.ci CI: Don't check clang format on early access builds 2020-05-08 18:49:33 -06:00
.github .github: Create FUNDING.yml 2019-06-08 17:00:32 +02:00
.travis Revert "CMake: Get Git submodule dependencies via CMake (#2474)" 2019-06-29 22:19:47 +02:00
CMakeModules Make compatible with the current MinGW cross-compiler 2020-05-01 22:17:29 -04:00
dist Replace non-commercial icons with free icons from icons8 (#5093) 2020-03-27 22:31:54 +01:00
externals Add version check to Findnlohmann_json.cmake 2020-05-09 12:47:59 +02:00
hooks pre-commit: Change comment from citra to yuzu 2018-03-26 21:34:19 +02:00
src renderer_opengl: Add assembly program code paths 2020-05-19 18:00:04 -03:00
.gitattributes Meta: Add gitattributes file 2018-09-22 23:31:44 +02:00
.gitignore Port #3702 from Citra 2018-07-26 15:35:24 +02:00
.gitmodules Replace externals with Conan (#3735) 2020-05-08 17:09:29 -04:00
.travis.yml travis: Update to using Xcode 10.2 2019-05-07 06:40:30 -04:00
CMakeLists.txt Mark the opus version check as broken. 2020-05-09 12:47:59 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2019-11-12 21:42:43 -05:00
Doxyfile Minor cleanup 2018-01-13 23:56:18 +00:00
license.txt Replace non-commercial icons with free icons from icons8 (#5093) 2020-03-27 22:31:54 +01:00
README.md Update README.md 2020-03-24 22:30:37 +00:00

yuzu emulator

Travis CI Build Status Azure Mainline CI Build Status Discord

yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of Citra.

It is written in C++ with portability in mind, with builds actively maintained for Windows and Linux. The emulator is capable of running several commercial games.

yuzu only emulates a subset of Switch hardware and therefore most commercial games do not run at full speed or are not fully functional.

Do you want to check which games are compatible and which ones are not? Please visit our Compatibility page!

yuzu is licensed under the GPLv2 (or any later version). Refer to the license.txt file included.

Check out our website!

For development discussion, please join us on Discord.

Development

Most of the development happens on GitHub. It's also where our central repository is hosted.

If you want to contribute please take a look at the Contributor's Guide and Developer Information. You should also contact any of the developers on Discord in order to know about the current state of the emulator.

Building

Support

We happily accept monetary donations or donated games and hardware. Please see our donations page for more information on how you can contribute to yuzu. Any donations received will go towards things like:

  • Switch consoles to explore and reverse-engineer the hardware
  • Switch games for testing, reverse-engineering, and implementing new features
  • Web hosting and infrastructure setup
  • Software licenses (e.g. Visual Studio, IDA Pro, etc.)
  • Additional hardware (e.g. GPUs as-needed to improve rendering support, other peripherals to add support for, etc.)

We also more than gladly accept used Switch consoles, preferably ones with firmware 3.0.0 or lower! If you would like to give yours away, don't hesitate to join our Discord and talk to bunnei. You may also contact: donations@yuzu-emu.org.