Go to file
ReinUsesLisp 82c2601555 video_core: Reimplement the buffer cache
Reimplement the buffer cache using cached bindings and page level
granularity for modification tracking. This also drops the usage of
shared pointers and virtual functions from the cache.

- Bindings are cached, allowing to skip work when the game changes few
  bits between draws.
- OpenGL Assembly shaders no longer copy when a region has been modified
  from the GPU to emulate constant buffers, instead GL_EXT_memory_object
  is used to alias sub-buffers within the same allocation.
- OpenGL Assembly shaders stream constant buffer data using
  glProgramBufferParametersIuivNV, from NV_parameter_buffer_object. In
  theory this should save one hash table resolve inside the driver
  compared to glBufferSubData.
- A new OpenGL stream buffer is implemented based on fences for drivers
  that are not Nvidia's proprietary, due to their low performance on
  partial glBufferSubData calls synchronized with 3D rendering (that
  some games use a lot).
- Most optimizations are shared between APIs now, allowing Vulkan to
  cache more bindings than before, skipping unnecesarry work.

This commit adds the necessary infrastructure to use Vulkan object from
OpenGL. Overall, it improves performance and fixes some bugs present on
the old cache. There are still some edge cases hit by some games that
harm performance on some vendors, this are planned to be fixed in later
commits.
2021-02-13 02:17:22 -03:00
.ci ci/windows: Copy downloaded FFmpeg libraries 2021-02-05 14:49:57 -05:00
.github .github: add a new issue template 2020-06-28 20:46:46 +02:00
.travis travis/linux: Use correct ccache directory 2020-12-10 03:34:16 -05:00
CMakeModules cmake: Revert FFmpeg 4.3.1 update for Windows builds 2021-02-08 23:11:59 -05:00
dist Make settings controller image change with controller input 2021-02-06 09:43:41 -06:00
externals ffmpeg: Checkout tag n4.3.1 2021-02-06 03:19:07 -05:00
hooks
src video_core: Reimplement the buffer cache 2021-02-13 02:17:22 -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 externals: Add submodule ffmpeg 2021-02-05 13:41:45 -05:00
.lgtm.yml Remove bad and useless packages from LGTM build 2020-09-11 17:32:22 +03:00
.travis.yml travis: Update to using Xcode 10.2 2019-05-07 06:40:30 -04:00
CMakeLists.txt cmake: Revert FFmpeg 4.3.1 update for Windows builds 2021-02-08 23:11:59 -05:00
CONTRIBUTING.md Update CONTRIBUTING.md 2019-11-12 21:42:43 -05:00
Doxyfile
license.txt Replace non-commercial icons with free icons from icons8 (#5093) 2020-03-27 22:31:54 +01:00
README.md README Edit for EA 2021-02-08 07:46:09 -08: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.

If you want to contribute to the user interface translation, please check out the yuzu project on transifex. We centralize translation work there, and periodically upstream translations.

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.