Cemu roadmap reveals open-source plans, Linux port and more
Team Cemu have revealed a roadmap that details their future plans for the popular Wii U emulator in 2022 and beyond.
The proposed targets include a native Linux version of Cemu which they state is currently about 70% complete but is reliant on other proposed changes (which they document) to see completion. They go on to commit to making the project open-source which they say will happen after the code base is restructured and rewritten in C++ (currently C).
Other planned changes include a new shader decompiler which they propose should drastically reduce the compilation time required for shaders and related stutter, as well as a transition to H264 decoding support rather than Windows DXVA2 and much more.
You can check out the complete roadmap via the link below.
Roadmap - Cemu Wiki said:Roadmap - Planned features in Cemu
This is the official list of planned features for Cemu. Some of these are already in the works, some are in the planning stage and some are hints at were Cemu might be going in the not-so-near future. Furthermore these are listed in no particular order. Something being at the top of the list does not mean it will be completed earlier than something at the bottom. This list also does not contain every small feature and idea, but rather only major subprojects. Think of this list as something that gives you a general idea where Cemu is heading in the next few years.
LLVM as a CPU JIT backend
Currently Cemu uses a custom solution for translating Wii U PowerPC code to native x86 code. This custom approach made sense when work on Cemu initially started for a variety of verbose reasons, but today LLVM is a good replacement candidate. Switching to LLVM would make it significantly easier to add support for additional host architectures, like ARM. LLVM's optimizer passes are also far more sophisticated than ours and thus the generated code should be more efficient, leading to improved CPU emulation performance.
Status: Idea stage
Software fallback for H.264 decoding
Currently Cemu uses DXVA2 to emulate the Wii U's H.264 video decoder. While this generally works fine, support for DXVA2 is spotty on older GPUs. DXVA2 is also only available on Windows. We would therefore like to implement another decoder that can run on any CPU and any OS.
Status: Planning and research phase
Cubeb audio backend
In an effort to make the core of Cemu as platform-agnostic as possible, we want to add the Cubeb audio library as replacement for our DirectAudio/XAudio backends. This would likely also benefit Windows as Cubeb uses WASAPI which has very low latency.
Status: Planned
Linux port
We eventually want to offer a native Linux version. This has been an ongoing side-project, albeit progressing relatively slowly due to somewhat low-priority nature and being dependent on other tasks. About 70% of the work has been done at this point. Porting is tied to some other tasks on this roadmap, like the cubeb backend, software H264 decoder and migration to makefile.
Status: In progress
Upgrading to modern C++, switching to cmake
Very early versions of Cemu were written mostly in the C language. This was out of habit more than any actual reason. Since then, we are continuously rewritting code to make use of new C++20/23 features. Another related task has been switching the project from a Visual Studio solution to cmake, a necessary step for porting to other OSes. We are also using the opportunity to re-think and improve the general source file and folder structure or just to clean up code from the early days.
Status: In progress
Going open-source
As originally promised, we plan to publish the source code of Cemu and open up development to anyone who wants to contribute. There is no exact ETA when this will happen but it is planned for this year, probably after we are done restructuring the source code (see above task).
Status: Planned for this year
A new shader decompiler
To emulate shaders Cemu has to translate them from Wii U shader binary back to a higher level language that can be consumed by OpenGL/Vulkan. Our current shader decompiler is very simplistic and translates each machine instruction one-by-one to GLSL. This results in very bloated shaders with high compile time. Furthermore, for Vulkan an additional translation pass from GLSL to SPIR-V is required.
We have started work on a far more sophisticated shader decompiler which is able to output both optimized GLSL and SPIR-V. In theory, this should cut down on the compilation time of shaders and consequently reduce shader compilation stutter. No significant runtime (FPS) performance improvements are expected because GPU drivers are already very good at optimizing shaders regardless of whether the input is already pre-optimized or not.
Status: In very early stages of development
Compatibility with all games
The long-term plan for Cemu is to reach 100% compatibility with every Wii U game. A secondary goal is to support all homebrew and allow for pretty much everything a real Wii U does, although the scope of this secondary goal is quite enormous and hard to attain. Improving compatibility isn't one single thing. Rather, it's many unique problems with very different solutions. Since we cant list them all this entry acts as a placeholder.
Status: In progress
Roadmap - Cemu Wiki