Entry | |
---|---|
R0 | Flags |
Bit 0 = pointer display enable (0=off, 1=on) | |
Bit 1 = pointer shape update (0=no change, 1=updated) | |
Bits 2-31 reserved | |
R1 | X position of pointer |
R2 | Y position of pointer |
R3 | shape_t descriptor block |
R4 | Bits 0-23: 5 (reason code) |
Bits 24-31: Display number |
Exit | |
---|---|
R4 | 0 |
- | All other registers preserved |
The kernel issues this call during VSync when the pointer shape or position changes. The appropriate driver should respond by performing the requested action and setting R4 to 0 to claim the call.
The coordinates given in R1 and R2 are measured in pixels, and indicate the top-left corner of the pointer image. 0,0 would place the image in the top-left corner of the screen.
R3 points to a shape_t descriptor block:
typedef struct shape_t { uint8 width; /* unpadded width in bytes (see notes) */ uint8 height; /* in pixels */ uint8 padding[2]; /* 2 bytes of padding for field alignment */ void *buffLA; /* logical address of buffer holding pixel data */ void *buffPA; /* corresponding physical address of buffer */ }
Notes:
A simple video driver, where hardware permits, can use the shape data in the buffer directly, ignoring the updated flag. The OS guarantees that the buffer data is valid for the whole time it is to be displayed. Other drivers may need to make copies of the data, e.g. for conversion to different pixel formats.
The default claimant of this call is the kernel. If the call is left unclaimed the kernel will claim it and call HAL_Video_UpdatePointer?.