Update GraphicsV and other OS components to allow a driver to have multiple heads active at once.
All existing GraphicsV calls will be updated to accept a head number in bits 16-23 of R4, with the exception of GraphicsV 15 (select head), which will become obsolete. Additionally, some new calls are needed:
A call to read the number of available heads, and any other driver-global features.
A call to read the features of an individual head. In particular, it’s expected that it will need to return a bitmask indicating which other heads cannot be active at the same time as this head. For example, the Pandora TV-out cable offers S-Video and Composite as two separate connectors (and therefore separate heads from the user’s perspective), but it’s impossible to use both at once.
This call should also return a localised string containing the name of the head, suitable for display to the user, e.g. in the display manager. A head ID suitable for use in configuration files may also be desirable, however it’s expected that simply using the head number will be sufficient (as the head numbers should remain stable, at least until the user swaps the video card for another)
The OS will issue this call when it begins to use a head for the VDU driver. The driver should use this call as a hint that it should give this head preferential treatment over other heads, e.g. ensuring a hardware cursor overlay is available.
The counterpart to ClaimOS, this call will be issued when the OS stops using a head.
The display manager and screen setup plugin will need updating to allow selection of the head to use. Rather than end up with two new drop downs (one for driver, one for head) it’ll probably make sense to combine them into one list.
Similar to with multiple driver support, consideration will be needed for how the default selection is stored in CMOS.
As most machines will be able to support multiple heads out of the box, display detection support will be required in order to ensure the OS picks the right head on startup.
Once multiple head support is implemented it’s worth considering implementing a Geminus-style app to allow for multiple monitor use within the desktop. There are, broadly speaking, four ways of providing multiple monitor support, each with differing level of implementation complexity:
Dealing with monitors in the arrangement that have differing resolutions, therefore there are ‘holes’ in the combined display.
v1.00 – 31-Jan-2021