Geminus graphics accleration and multi-monitor support

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).

Geminus modes

Geminus mode configuration window.
Supporting multiple monitors and portrait modes on RISC OS for the first time, Geminus provides a setup utility for configuring the desired screen modes. From the current monitor configuration, it will suggest a list of sensible screen modes which may be added to the list of defined modes for fast access.

Mode change window

Geminus offers an extended mode change window for selecting the extended desktop modes that it offers, including multi-monitor and portrait modes.

Application settings

Geminus permits the configuration settings to be changed for each application for maximum performance benefit and compatibility

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 2560x1600 monitor, but I find additional screen space very useful and would love for it to be able to drive both!

Update on 22nd Oct 2018

2D GPU acceleration for ARMX6 and other i.MX6-based platforms released as a separate driver by R-Comp Interactive. Geminus itself which also uses the fruits of that development effort, extending it with the cacheing of window contents etc, will take a little long to reach a release state because of other ongoing development work. In the meantime, to accelerate your ARMX6/i.MX6 desktop using the Vivante GPU (particularly beneficial above, say, 2048x1536 because the CPU really isn't suited to reading a large amount of data from the frame buffer) visit the R-Comp store or contact R-Comp. No, I'm not on sales commission, I just want the work to benefit people. :)

Copyright © Adrian Lees 2008-2018