In order to edit this wiki, you must register and verify your account.

Difference between revisions of "Roadmap"

From Cemu Wiki
Jump to:navigation Jump to:search
(Created page with "=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 ar...")
m (Protected "Roadmap": This page is meant to be edited only by the Cemu team ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))

Revision as of 17:34, 14 January 2022

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 makefile

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 makefile, 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