Geminus

Geminus brings multi-monitor support, screen rotation (for LCD panels that can be used in portrait modes), graphics acceleration and faster JPEG rendering to the IYONIX pc desktop.

Other features include the ability to transform/rotate JPEGs, which is available for all RISC OS machines, and Red/Blue colour swapping to support other graphics cards and digital outputs such as DVI (not yet supported by the NVidia driver module).

Download Geminus now.
Instructions are included in the download, and may also be found here.

Geminus was originally available through Spellings Ltd. Thanks to Neil for distributing my software, and for agreeing to it being made freely available.

Update on 25th Feb 2018

At the RISC OS South West Show 2018 I demonstrated an early prototype of Geminus ported to run on the ARMX6 from R-Comp. This code uses the ARM NEON multimedia coprocessor to accelerate block copies and fills (eg. window drags, scrolling and clearing) in place of the nVIDIA graphics operations that are used by Geminus when running on the IYONIX pc.

All of the following machines support NEON coprocessor instructions and may thus benefit from this version of Geminus when it has been developed to the point of a working release:

I shall be particularly interested to see its performance on the machines that are Cortex-A15 based (Titanium, TiMachine, RapidO, IGEPv5) since this CPU architecture has twice the NEON performance per clock on account of having a wider NEON data pipe (128 bits rather than the 64 bits of the Cortex-A9)

That said, what is really needed to attain maximum performance from any of these targets is to use the dedicated hardware blocks (eg. 2D GPU or, failing that, generic DMA engine) to perform the block copy/fill operations. Using NEON instructions to perform these operations is unlikely to offer comparable performance since CPU hardware is unable to predict sufficiently far ahead of usage, which data within the memory will be required. Hardware blocks are able to perform specific prefetching, and are designed to mask the latency of memory fetches through the use of internal buffering.

Geminus - particularly in the form of cacheing window contents - offers a level of more intelligent acceleration over and above that attainable even with the dedicated hardware blocks. Hopefully, in time, better use may be made of each to attain the best of both.

Update on 6th May 2018

I have working prototype code for the GPU 2D in the ARMX6 and other i.MX6-based platforms. Coupled with the acceleration code in Geminus it makes such a difference to the feel/speed of the desktop! The code is relatively crude at the moment and is based upon information from the magnificent etnaviv project, and from the open source Vivante drivers.

Still a lot of unexploited potential, and it's wonderful to have some information to use; Geminus was unable to make use of the nVIDIA hardware in the IYONIX pc purely because this information was unavailable.

Update on 17th May 2018

All of the acceleration functionality of the IYONIX pc build of Geminus is now up and running in prototype form on the ARMX6/i.MX6 platforms now, yay! It does make the desktop a lot slicker, especially given my love of having large amount of screen real estate to work with more web pages, PDF documents and images etc.

Update on 29th May 2018

The same functionality is now up and running on the Titanium, which benefits mostly from the JPEG acceleration and, of course, the redraw cacheing even with its faster processor. Always quicker to know the results than to have to compute them ;) I've also been experimenting a little with the prototype DisplayLink driver since I think supporting that is definitely something that could benefit all of the more recent RISC OS platforms.

True, my i.MX6 board can drive an UltraHD monitor or my 2560x1200 monitor, but I find additional screen space very useful and would love for it to be able to drive both!

Copyright © Adrian Lees 2008-2018