Difference between revisions of "Unit Framebuffer"
Line 123: | Line 123: | ||
− | ''Init handlers''' | + | '''Init handlers''' |
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
Revision as of 03:13, 5 January 2017
Return to Unit Reference
Description
Ultibo Framebuffer interface unit
To be documented
Constants
FRAMEBUFFER_*
FRAMEBUFFER_NAME_PREFIX = 'Framebuffer';
|
Name prefix for Framebuffer Devices |
FRAMEBUFFER_TYPE_*
FRAMEBUFFER_TYPE_NONE = 0;
|
|
FRAMEBUFFER_TYPE_HARDWARE = 1;
|
|
FRAMEBUFFER_TYPE_VIRTUAL = 2;
|
FRAMEBUFFER_STATE_*
FRAMEBUFFER_STATE_DISABLED = 0;
|
|
FRAMEBUFFER_STATE_ENABLED = 1;
|
FRAMEBUFFER_FLAG_*
FRAMEBUFFER_FLAG_NONE = $00000000;
|
|
FRAMEBUFFER_FLAG_DMA = $00000001;
|
If set the framebuffer supports DMA for read/write operations |
FRAMEBUFFER_FLAG_MARK = $00000002;
|
If set the framebuffer requires mark after write operations |
FRAMEBUFFER_FLAG_COMMIT = $00000004;
|
If set the framebuffer requires commit after write operations |
FRAMEBUFFER_FLAG_BLANK = $00000008;
|
If set the framebuffer supports blanking the screen |
FRAMEBUFFER_FLAG_CACHED = $00000010;
|
If set framebuffer is in cached memory and cache cleaning should be used |
FRAMEBUFFER_FLAG_SWAP = $00000020;
|
If set framebuffer requires byte order of colors to be reversed (BGR <-> RGB) |
FRAMEBUFFER_FLAG_BACKLIGHT = $00000040;
|
If set the framebuffer supports setting the backlight brightness |
FRAMEBUFFER_FLAG_VIRTUAL = $00000080;
|
If set the framebuffer supports virtual width and height |
FRAMEBUFFER_FLAG_OFFSETX = $00000100;
|
If set the framebuffer supports virtual offset X (Horizontal Pan/Flip etc) |
FRAMEBUFFER_FLAG_OFFSETY = $00000200;
|
If set the framebuffer supports virtual offset Y (Vertical Pan/Flip etc) |
FRAMEBUFFER_FLAG_SYNC = $00000400;
|
If set the framebuffer supports waiting for vertical sync |
FRAMEBUFFER_TRANSFER_*
FRAMEBUFFER_TRANSFER_NONE = $00000000;
|
|
FRAMEBUFFER_TRANSFER_DMA = $00000001;
|
Use DMA for transfer operations (Note: Buffers must be DMA compatible) |
Type definitions
To be documented
Public variables
Init handlers
FramebufferInitHandler:TFramebufferInit;
|
Function declarations
Initialization functions
procedure FramebufferInit;
Note | None documented |
---|
Framebuffer functions
function FramebufferDeviceAllocate(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Framebuffer | The framebuffer device to allocate |
---|---|
Properties | The framebuffer properties (Width/Height/Depth etc) to use for allocation (Optional) |
Return | ERROR_SUCCESS if completed or another error code on failure |
function FramebufferDeviceRelease(Framebuffer:PFramebufferDevice):LongWord;
Framebuffer | The framebuffer device to release |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
function FramebufferDeviceBlank(Framebuffer:PFramebufferDevice; Blank:Boolean):LongWord;
Framebuffer | The framebuffer device to blank |
---|---|
Blank | Turn off the display if True / Turn on the display if False |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support blank, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. Devices that support blank should set the flag FRAMEBUFFER_FLAG_BLANK. |
function FramebufferDeviceRead(Framebuffer:PFramebufferDevice; X,Y:LongWord; Buffer:Pointer; Len,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to read from |
---|---|
X | The column to start reading from |
Y | The row to start reading from |
Buffer | Pointer to a buffer to receive the read pixels |
Len | The number of pixels to read starting at X,Y |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Pixel data will be returned in the color format of the framebuffer. The default method assumes that framebuffer memory is DMA coherent and does not require cache cleaning before a DMA read. |
function FramebufferDeviceWrite(Framebuffer:PFramebufferDevice; X,Y:LongWord; Buffer:Pointer; Len,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to write to |
---|---|
X | The column to start writing from |
Y | The row to start writing from |
Buffer | Pointer to a buffer containing the pixels to write |
Len | The number of pixels to write starting at X,Y |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Caller must ensure pixel data is in the correct color format for the framebuffer. The default method assumes that framebuffer memory is DMA coherent and does not require cache invalidation after a DMA write. |
function FramebufferDeviceMark(Framebuffer:PFramebufferDevice; X,Y,Width,Height,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to mark |
---|---|
X | The starting column of the mark |
Y | The starting row of the mark |
Width | The number of columns to mark |
Height | The number of rows to mark |
Flags | The flags used for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support mark, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. Devices that support and require mark should set the flag FRAMEBUFFER_FLAG_MARK. |
function FramebufferDeviceCommit(Framebuffer:PFramebufferDevice; Address,Size,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to commit |
---|---|
Address | The starting address of the commit |
Size | The size in bytes of the commit |
Flags | The flags used for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support commit, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. Devices that support and require commit should set the flag FRAMEBUFFER_FLAG_COMMIT. |
function FramebufferDeviceGetRect(Framebuffer:PFramebufferDevice; X,Y:LongWord; Buffer:Pointer; Width,Height,Skip,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to get from |
---|---|
X | The starting column of the get |
Y | The starting row of the get |
Buffer | Pointer to a block of memory large enough to hold the pixels in a contiguous block of rows |
Width | The number of columns to get |
Height | The number of rows to get |
Skip | The number of pixels to skip in the buffer after each row (Optional) |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Pixel data will be returned in the color format of the framebuffer. The default method assumes that framebuffer memory is DMA coherent and does not require cache cleaning before a DMA read. |
function FramebufferDevicePutRect(Framebuffer:PFramebufferDevice; X,Y:LongWord;Buffer:Pointer; Width,Height,Skip,Flags:LongWord):LongWord;
Framebuffer | The framebuffer device to put to |
---|---|
X | The starting column of the put |
Y | The starting row of the put |
Buffer | Pointer to a block of memory containing the pixels in a contiguous block of rows |
Width | The number of columns to put |
Height | The number of rows to put |
Skip | The number of pixels to skip in the buffer after each row (Optional) |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Caller must ensure pixel data is in the correct color format for the framebuffer. The default method assumes that framebuffer memory is DMA coherent and does not require cache invalidation after a DMA write. |
function FramebufferDeviceCopyRect(Framebuffer:PFramebufferDevice; X1,Y1,X2,Y2,Width,Height,Flags:LongWord):LongWord;
Frambuffer | The framebuffer device to copy on |
---|---|
X1 | The starting column to copy from |
Y1 | The starting row to copy from |
X2 | The starting column to copy to |
Y2 | The starting row to copy to |
Width | The number of columns to copy |
Height | The number of rows to copy |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | The default method assumes that framebuffer memory is DMA coherent and does not require cache clean/invalidate before or after a DMA read/write. |
function FramebufferDeviceFillRect(Framebuffer:PFramebufferDevice; X,Y,Width,Height,Color,Flags:LongWord):LongWord;
Frambuffer | The framebuffer device to fill on |
---|---|
X | The starting column of the fill |
Y | The starting row of the fill |
Width | The number of columns to fill |
Height | The number of rows to fill |
Color | The color to use for the fill |
Flags | The flags for the transfer (eg FRAMEBUFFER_TRANSFER_DMA) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Color must be specified in the correct format for the framebuffer. The default method assumes that framebuffer memory is DMA coherent and does not require cache invalidation after a DMA write. |
function FramebufferDeviceGetLine(Framebuffer:PFramebufferDevice; Y:LongWord):Pointer;
Framebuffer | The framebuffer device to get the start address from |
---|---|
Y | The row to get the start address of |
Return | Pointer to the start address of the row or nil on failure |
function FramebufferDeviceGetPoint(Framebuffer:PFramebufferDevice; X,Y:LongWord):Pointer;
Framebuffer | The framebuffer device to get the address from |
---|---|
X | The column to get the start address of |
Y | The row to get the start address of |
Return | Pointer to the address of the row and column or nil on failure |
function FramebufferDeviceWaitSync(Framebuffer:PFramebufferDevice):LongWord;
Framebuffer | The framebuffer device to wait for |
---|---|
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support wait sync, returns ERROR_CALL_NOT_IMPLEMENTED if not supported.
Devices that support wait sync should set the flag FRAMEBUFFER_FLAG_SYNC |
function FramebufferDeviceGetOffset(Framebuffer:PFramebufferDevice; var X,Y:LongWord):LongWord;
Framebuffer | The framebuffer device to get the offset from |
---|---|
X | The X (Column) offset value in pixels returned from the device if successful |
Y | The Y (Row) offset value in pixels returned from the device if successful |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | X and Y are relative to the virtual buffer and NOT the physical screen (Where applicable)
Not all framebuffer devices support X and/or Y offset
|
function FramebufferDeviceSetOffset(Framebuffer:PFramebufferDevice; X,Y:LongWord; Pan:Boolean):LongWord;
Framebuffer | The framebuffer device to set the offset for |
---|---|
X | The X (Column) offset value in pixels to set |
Y | The Y (Row) offset value in pixels to set |
Pan | If True then pan the display without updating the Offset X and/or Y |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | X and Y are relative to the virtual buffer and NOT the physical screen (Where applicable)
Not all framebuffer devices support X and/or Y offset, returns ERROR_CALL_NOT_IMPLEMENTED if not supported
|
function FramebufferDeviceGetPalette(Framebuffer:PFramebufferDevice; Palette:PFramebufferPalette):LongWord;
Framebuffer | The framebuffer device to get the palette from |
---|---|
Palette | Pointer to a TFramebufferPalette structure for the palette data |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support 8 bit palette, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. |
function FramebufferDeviceSetPalette(Framebuffer:PFramebufferDevice; Palette:PFramebufferPalette):LongWord;
Framebuffer | The framebuffer device to set the palette for |
---|---|
Palette | Pointer to a TFramebufferPalette structure for the palette data |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support 8 bit palette, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. |
function FramebufferDeviceSetBacklight(Framebuffer:PFramebufferDevice; Brightness:LongWord):LongWord;
Framebuffer | The framebuffer device to set the backlight |
---|---|
Brightness | The brightness value to set (Normally 0 to 100) |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Not all framebuffer devices support set backlight, returns ERROR_CALL_NOT_IMPLEMENTED if not supported. Devices that support set backlight should set the flag FRAMEBUFFER_FLAG_BACKLIGHT. |
function FramebufferDeviceGetProperties(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Framebuffer | The framebuffer device to get properties from |
---|---|
Properties | Pointer to a TFramebufferProperties structure to return |
Return | ERROR_SUCCESS if completed or another error code on failure |
function FramebufferDeviceSetProperties(Framebuffer:PFramebufferDevice; Properties:PFramebufferProperties):LongWord;
Framebuffer | The framebuffer device to set properties for |
---|---|
Properties | Pointer to a TFramebufferProperties structure containing the properties |
Return | ERROR_SUCCESS if completed or another error code on failure |
Note | Changing certain properties may cause the framebuffer to be reallocated |
function FramebufferDeviceCheckFlag(Framebuffer:PFramebufferDevice; Flag:LongWord):Boolean;
Note | None documented |
---|
function FramebufferDeviceGetFormat(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function FramebufferDeviceCreate:PFramebufferDevice;
Return | Pointer to new Framebuffer entry or nil if Framebuffer could not be created |
---|
function FramebufferDeviceCreateEx(Size:LongWord):PFramebufferDevice;
Size | Size in bytes to allocate for new Framebuffer (Including the Framebuffer entry) |
---|---|
Return | Pointer to new Framebuffer entry or nil if Framebuffer could not be created |
function FramebufferDeviceDestroy(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function FramebufferDeviceRegister(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function FramebufferDeviceDeregister(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function FramebufferDeviceFind(FramebufferId:LongWord):PFramebufferDevice;
Note | None documented |
---|
function FramebufferDeviceFindByName(const Name:String):PFramebufferDevice; inline;
Note | None documented |
---|
function FramebufferDeviceFindByDescription(const Description:String):PFramebufferDevice; inline;
Note | None documented |
---|
function FramebufferDeviceEnumerate(Callback:TFramebufferEnumerate; Data:Pointer):LongWord;
Note | None documented |
---|
function FramebufferDeviceNotification(Framebuffer:PFramebufferDevice; Callback:TFramebufferNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Note | None documented |
---|
RTL framebuffer functions
function SysFramebufferAvailable:Boolean;
Note | None documented |
---|
Framebuffer helper functions
function FramebufferDeviceGetCount:LongWord; inline;
Note | None documented |
---|
function FramebufferDeviceGetDefault:PFramebufferDevice; inline;
Note | None documented |
---|
function FramebufferDeviceSetDefault(Framebuffer:PFramebufferDevice):LongWord;
Note | None documented |
---|
function FramebufferDeviceCheck(Framebuffer:PFramebufferDevice):PFramebufferDevice;
Note | None documented |
---|
function FramebufferDeviceSwap(Value:LongWord):LongWord; inline;
Note | None documented |
---|
function FramebufferDepthToString(Depth:LongWord):String;
Note | None documented |
---|
function FramebufferOrderToString(Order:LongWord):String;
Note | None documented |
---|
function FramebufferModeToString(Mode:LongWord):String;
Note | None documented |
---|
function FramebufferRotationToString(Rotation:LongWord):String;
Note | None documented |
---|
Return to Unit Reference