A Nintendo 3DS Emulator
Go to file
GPUCode dfa2fd0e0d
Add vulkan backend (#6512)
* code: Prepare frontend for vulkan support

* citra_qt: Add vulkan options to the GUI

* vk_instance: Collect tooling info

* renderer_vulkan: Add vulkan backend

* qt: Fix fullscreen and resize issues on macOS. (#47)

* qt: Fix bugged macOS full screen transition.

* renderer/vulkan: Fix swapchain recreation destroying in-use semaphore.

* renderer/vulkan: Make gl_Position invariant. (#48)

This fixes an issue with black artifacts in Pokemon games on Apple GPUs.
If the vertex calculations differ slightly between render passes, it can
cause parts of model faces to fail depth test.

* vk_renderpass_cache: Bump pixel format count

* android: Custom driver code

* vk_instance: Set moltenvk configuration

* rasterizer_cache: Proper surface unregister

* citra_qt: Fix invalid characters

* vk_rasterizer: Correct special unbind

* android: Allow async presentation toggle

* vk_graphics_pipeline: Fix async shader compilation

* We were actually waiting for the pipelines regardless of the setting, oops

* vk_rasterizer: More robust attribute loading

* android: Move PollEvents to OpenGL window

* Vulkan does not need this and it causes problems

* vk_instance: Enable robust buffer access

* Improves stability on mali devices

* vk_renderpass_cache: Bring back renderpass flushing

* externals: Update vulkan-headers

* gl_rasterizer: Separable shaders for everyone

* vk_blit_helper: Corect depth to color convertion

* renderer_vulkan: Implement reinterpretation with copy

* Allows reinterpreteration with simply copy on AMD

* vk_graphics_pipeline: Only fast compile if no shaders are pending

* With this shaders weren't being compiled in parallel

* vk_swapchain: Ensure vsync doesn't lock framerate

* vk_present_window: Match guest swapchain size to vulkan image count

* Less latency and fixes crashes that were caused by images being deleted before free

* vk_instance: Blacklist VK_EXT_pipeline_creation_cache_control with nvidia gpus

* Resolves crashes when async shader compilation is enabled

* vk_rasterizer: Bump async threshold to 6

* Many games have fullscreen quads with 6 vertices. Fixes pokemon textures missing with async shaders

* android: More robust surface recreation

* renderer_vulkan: Fix dynamic state being lost

* vk_pipeline_cache: Skip cache save when no pipeline cache exists

* This is the cache when loading a save state

* sdl: Fix surface initialization on macOS. (#49)

* sdl: Fix surface initialization on macOS.

* sdl: Fix render window events not being handled under Vulkan.

* renderer/vulkan: Fix binding/unbinding of shadow rendering buffer.

* vk_stream_buffer: Respect non coherent access alignment

* Required by nvidia GPUs on MacOS

* renderer/vulkan: Support VK_EXT_fragment_shader_interlock for shadow rendering. (#51)

* renderer_vulkan: Port some recent shader fixes

* vk_pipeline_cache: Improve shadow detection

* vk_swapchain: Add missing check

* renderer_vulkan: Fix hybrid screen

* Revert "gl_rasterizer: Separable shaders for everyone"

Causes crashes on mali GPUs, will need separate PR

This reverts commit d22d556d30.

* renderer_vulkan: Fix flipped screenshot

---------

Co-authored-by: Steveice10 <1269164+Steveice10@users.noreply.github.com>
2023-09-13 01:28:50 +03:00
.ci ci: Remove compatibility artifact naming for releases. (#6647) 2023-08-20 16:41:13 -07:00
.github build: Enable link time optimization in release builds. (#6887) 2023-08-26 11:15:13 -07:00
CMakeModules build: Fix Qt installer build script. (#6938) 2023-09-01 15:18:47 -07:00
dist build: Fix Qt installer build script. (#6938) 2023-09-01 15:18:47 -07:00
externals Add vulkan backend (#6512) 2023-09-13 01:28:50 +03:00
hooks hook: remove clang-format check 2017-02-17 13:52:23 +02:00
src Add vulkan backend (#6512) 2023-09-13 01:28:50 +03:00
.gitattributes Meta: Add gitattributes file 2018-09-22 14:59:15 -06:00
.gitignore Add Kdevelop files to .gitignore (#6951) 2023-09-07 11:52:40 -07:00
.gitmodules Add vulkan backend (#6512) 2023-09-13 01:28:50 +03:00
.lgtm.yml Add LGTM static analyzer config file (#5495) 2020-08-07 09:34:39 +08:00
CMakeLists.txt build: Enable link time optimization in release builds. (#6887) 2023-08-26 11:15:13 -07:00
CONTRIBUTING.md CONTRIBUTING.md: migrate to the wiki 2018-11-08 00:15:55 -05:00
Doxyfile Remove every trailing whitespace from the project (but externals). 2015-05-29 21:59:29 +01:00
keys.tar.enc Flatpak support (#4383) 2018-11-07 21:33:36 -05:00
license.txt Replace non-commercial icons with free icons from icons8 (#5093) 2020-03-26 13:40:03 -05:00
README.md github: Improve Readme and add better issue templates (#6276) 2023-02-13 14:51:09 +01:00


Citra
Citra

Citra is the world's most popular, open-source, Nintendo 3DS emulator.
It is written in C++ with portability in mind and builds are actively maintained for Windows, Linux, Android and macOS.

GitHub Actions Build Status Discord

Compatibility | Releases | Development | Building | Support | License

Compatibility

The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.

For a full list of games Citra supports, please visit our Compatibility page

Check out our website for the latest news on exciting features, progress reports, and more! Please read the FAQ before getting started with the project.

Need help? Check out our asking for help guide.

Releases

Citra has two main release channels: Nightly and Canary.

The Nightly build is based on the master branch, and contains already reviewed and tested features.

The Canary build is based on the master branch, but with additional features still under review. PRs tagged canary-merge are merged only into the Canary builds.

Both builds can be installed with the installer provided on the website, but those looking for specific versions or standalone releases can find them in the release tabs of the Nightly and Canary repositories.

Android builds can be downloaded from the Google Play Store.

A Flatpak for Citra is available on Flathub. Details on the build process can be found in our Flathub repository.

Development

Most of the development happens on GitHub. It's also where our central repository is hosted. For development discussion, please join us on our Discord server or at #citra-dev on libera.

If you want to contribute please take a look at the Contributor's Guide and Developer Information. You can 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 Citra project on transifex. We centralize the translation work there, and periodically upstream translations.

Building

Support

If you enjoy the project and want to support us financially, check out our Patreon!

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

  • 3DS consoles for developers to explore the hardware
  • 3DS games for testing
  • Any equipment required for homebrew
  • Infrastructure setup

We also more than gladly accept used 3DS consoles! If you would like to give yours away, don't hesitate to join our Discord server and talk to bunnei.

License

Citra is licensed under the GPLv2 (or any later version). Refer to the LICENSE.txt file.