Showing changes from revision #8 to #9:
Added | Removed | Changed
Entry | |
---|---|
R0 | Flags: |
Bit 0: Synchronise | |
Bit 1: Synchronise if unclaimed | |
R1 | Render operation: |
0 = No-op | |
1 = Copy rectangle | |
2 = Fill rectangle | |
R2 | Pointer to operation parameter block |
R4 | Bits 0-15: 13 (reason code) |
Bits 16-23: Head number | |
Bits 24-31: Driver number |
Exit | |
---|---|
R4 | 0 |
- | All other registers preserved |
The kernel issues this call to instruct the driver to perform a hardware-accelerated rendering task. The appropriate driver should respond to the call in the following manner:
Screen memory will typically be bufferable – GraphicsV driver implementations should make sure to perform the necessary memory barrier operations at the start/end of any given acceleration op (e.g. write barrier at start, read barrier at end). Suitable barrier routines are available via OS_MMUControl 2.
If no driver responds to the request request, then there is no generic software fallback in place. Software rendering fallbacks must be handled on a case-by-case basis by the caller. Therefore Therefore, any user software which wishes to make use of hardware acceleration should either do so via theVDU interface (e.g. use block copy/fill OS_Plot operations, which will have the appropriate fallbacks in place inside the kernel), or call GraphicsV directly and use their own software fallback for any unsupported operations. Just because one call succeeds succeeds, it does not guarantee that the next call will succeed, or that a call made with slightly different parameters will succeed.