Find a file
ReinUsesLisp 58b0ae84b5 renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore
This reworks how host<->device synchronization works on the Vulkan
backend. Instead of "protecting" resources with a fence and signalling
these as free when the fence is known to be signalled by the host GPU,
use timeline semaphores.

Vulkan timeline semaphores allow use to work on a subset of D3D12
fences. As far as we are concerned, timeline semaphores are a value set
by the host or the device that can be waited by either of them.

Taking advantange of this, we can have a monolithically increasing
atomic value for each submission to the graphics queue. Instead of
protecting resources with a fence, we simply store the current logical
tick (the atomic value stored in CPU memory). When we want to know if a
resource is free, it can be compared to the current GPU tick.

This greatly simplifies resource management code and the free status of
resources should have less false negatives.

To workaround bugs in validation layers, when these are attached there's
a thread waiting for timeline semaphores.
2020-09-19 01:46:37 -03:00
.ci General: Tidy up clang-format warnings part 2 2020-08-13 14:19:08 -04:00
.github .github: add a new issue template 2020-06-28 20:46:46 +02:00
.travis ci: Make use of clang-format 10.0 2020-08-02 20:55:54 -04:00
CMakeModules cmake: stop linking against QGL after c6a0ab9792 2020-07-01 22:11:39 +00:00
dist Resolve spacing inconsistencies in style.qrc/qss files 2020-09-04 12:23:26 -04:00
externals Merge pull request #4611 from lioncash/xbyak2 2020-09-03 20:24:27 -04:00
hooks pre-commit: Change comment from citra to yuzu 2018-03-26 21:34:19 +02:00
src renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore 2020-09-19 01:46:37 -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: Track upstream libusb 2020-08-26 02:45:11 -04: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: Update to Qt 5.12.8 2020-09-09 08:50:39 -04: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 Address trivial review comments. 2020-07-18 14:09:13 +02: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.