Some people had asked (mostly curiously) what improvements that can still be made, even theoretically.
Here's a wish list :
- IPU dynamic resizing support
Obviously one of the most requested feature and the one that would be the most significant in terms of improvements.
If you have access to kernel source code, you can actually change the virtual screen resolution to anything (256x224 etc...) as it would be then upscaled to 320x480.
But we would need to do it on the fly (We request a certain resolution, RetroFW detects said size and then upscales it accordingly).
Looking at the code, it would require some changes, especially if we want to do it the proper way.
The GCW0 already does this and it's definitely useful for some emulators/games.
This one is a bit more specific to some emulators, mainly reGBA and PCSX4ALL.
There are some consoles like the GBA and PSX that natively work in the BGR colorspace.
Since the RS-97 (and other devices) work in the RGB colorspace, this requires some conversion.
Supporting this in the kernel would mean that the code for it can be greatly simplified :https://github.com/gameblabla/pcsx4all/blob/master/src/gpu/gpulib/vout_port.c#L124
...which obviously results in greater speed.
GCW0 kernel has support for this in the upcoming kernel. There's also a patch for SDL to support this :https://github.com/gcwnow/buildroot/commit/40685f89fa445b5f6db42ba67bbab3ead654d7a3
- Support for the 2D accelerator inside of the JZ4760 (Vivante GC200)
The Vivante GC200 is a 2D accelerator that can rotate, resize, and accelerate 2D content.
Definitely not as useful as a 3D accelerator (Vivante refers to it as a compositing accelerator) but given that software rendering is expensive, this could be useful to accelerate the framebuffer.
TonyJih also said that the accelerator could be used to support for LCD screens which are expected to be rotated for landscape. (phone screens)
Etnaviv in the upstream linux kernel has DRM support for it. Stock kernel also has the GPLv2 vivante code but it is currently unknown how to use it from userspace as it is poorly documented.
Supporting the 2D accelerator would mean either to use the upstream linux kernel (doesn't currently support JZ4760 board), or use it in the stock kernel. (would require Tony to support this in the JZ4760 code)
Btw, that's also where the OpenVG claim support comes from.
OpenVG in itself however is not very useful and support for it got removed in Mesa 10.1, it never resulted in wide adoption. (if any)
The VPU is a MIPS, general purpose cpu core that is intended for accelerating video content.
The only software to make use of it, Mplayer, is provided as part of the stock firmware. It can play back MPEG2 content.
However said Mplayer only targets the first generation of MXU (SIMD 1), not the second one. (SIMD 2)
Similarly related, the MXU is an instruction set that targets said VPU and is designed for video acceleration. This is what Mplayer uses to accelerate such content.
It was not possible to use mplayer on Useless because the rootfs was not compatible with it. (mplayer targets legacy dingux)
However, RetroFW now does have some compatibility with legacy dingux software so it's possible that mplayer works on it again.
(I need to test it and if it works, package it)
The GTE code(3D part of the PSX) in PCSX4ALL part5 also plans to make use of the MXU. This should result in greater speed on 3D games so stay tuned.