Go to file
ReinUsesLisp 5b2b6d594c shader/texture: Join separate image and sampler pairs offline
Games using D3D idioms can join images and samplers when a shader
executes, instead of baking them into a combined sampler image. This is
also possible on Vulkan.

One approach to this solution would be to use separate samplers on
Vulkan and leave this unimplemented on OpenGL, but we can't do this
because there's no consistent way of determining which constant buffer
holds a sampler and which one an image. We could in theory find the
first bit and if it's in the TIC area, it's an image; but this falls
apart when an image or sampler handle use an index of zero.

The used approach is to track for a LOP.OR operation (this is done at an
IR level, not at an ISA level), track again the constant buffers used as
source and store this pair. Then, outside of shader execution, join
the sample and image pair with a bitwise or operation.

This approach won't work on games that truly use separate samplers in a
meaningful way. For example, pooling textures in a 2D array and
determining at runtime what sampler to use.

This invalidates OpenGL's disk shader cache :)

- Used mostly by D3D ports to Switch
2020-06-05 00:24:51 -03:00
.ci CI: Don't check clang format on early access builds 2020-05-08 18:49:33 -06:00
.github
.travis
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 xbyak external 2020-05-30 10:55:27 +10:00
hooks
src shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
.gitattributes
.gitignore
.gitmodules Add xbyak external 2020-05-30 10:55:27 +10:00
.travis.yml
CMakeLists.txt Update CMakeLists.txt 2020-05-31 18:35:36 -04:00
CONTRIBUTING.md
Doxyfile
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.