123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889 |
- /****************************************************************************
- *
- * Copyright (c) 2005 - 2014 by Vivante Corp. All rights reserved.
- *
- * The material in this file is confidential and contains trade secrets
- * of Vivante Corporation. This is proprietary information owned by
- * Vivante Corporation. No part of this work may be disclosed,
- * reproduced, copied, transmitted, or used in any way for any purpose,
- * without the express written permission of Vivante Corporation.
- *
- *****************************************************************************/
- #ifndef __gc_hal_vg_h_
- #define __gc_hal_vg_h_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "gc_hal_rename.h"
- #include "gc_hal_types.h"
- #include "gc_hal_enum.h"
- #include "gc_hal_base.h"
- #if gcdENABLE_VG
- /* Thread routine type. */
- #if defined(LINUX)
- typedef gctINT gctTHREADFUNCRESULT;
- typedef gctPOINTER gctTHREADFUNCPARAMETER;
- # define gctTHREADFUNCTYPE
- #elif defined(WIN32)
- typedef gctUINT gctTHREADFUNCRESULT;
- typedef gctPOINTER gctTHREADFUNCPARAMETER;
- # define gctTHREADFUNCTYPE __stdcall
- #elif defined(__QNXNTO__)
- typedef void * gctTHREADFUNCRESULT;
- typedef gctPOINTER gctTHREADFUNCPARAMETER;
- # define gctTHREADFUNCTYPE
- #endif
- typedef gctTHREADFUNCRESULT (gctTHREADFUNCTYPE * gctTHREADFUNC) (
- gctTHREADFUNCPARAMETER ThreadParameter
- );
- #if defined(gcvDEBUG)
- # undef gcvDEBUG
- #endif
- #define gcdFORCE_DEBUG 0
- #define gcdFORCE_MESSAGES 0
- #if DBG || defined(DEBUG) || defined(_DEBUG) || gcdFORCE_DEBUG
- # define gcvDEBUG 1
- #else
- # define gcvDEBUG 0
- #endif
- #define _gcmERROR_RETURN(prefix, func) \
- status = func; \
- if (gcmIS_ERROR(status)) \
- { \
- prefix##PRINT_VERSION(); \
- prefix##TRACE(gcvLEVEL_ERROR, \
- #prefix "ERR_RETURN: status=%d(%s) @ %s(%d)", \
- status, gcoOS_DebugStatus2Name(status), __FUNCTION__, __LINE__); \
- return status; \
- } \
- do { } while (gcvFALSE)
- #define gcmERROR_RETURN(func) _gcmERROR_RETURN(gcm, func)
- #define gcmLOG_LOCATION()
- #define gcmkIS_ERROR(status) (status < 0)
- #define gcmALIGNDOWN(n, align) \
- ( \
- (n) & ~((align) - 1) \
- )
- #define gcmIS_VALID_INDEX(Index, Array) \
- (((gctUINT) (Index)) < gcmCOUNTOF(Array))
- #define gcmIS_NAN(x) \
- ( \
- ((* (gctUINT32_PTR) &(x)) & 0x7FFFFFFF) == 0x7FFFFFFF \
- )
- #define gcmLERP(v1, v2, w) \
- ((v1) * (w) + (v2) * (1.0f - (w)))
- #define gcmINTERSECT(Start1, Start2, Length) \
- (gcmABS((Start1) - (Start2)) < (Length))
- /*******************************************************************************
- **
- ** gcmERR_GOTO
- **
- ** Prints a message and terminates the current loop on error.
- **
- ** ASSUMPTIONS:
- **
- ** 'status' variable of gceSTATUS type must be defined.
- **
- ** ARGUMENTS:
- **
- ** Function
- ** Function to evaluate.
- */
- #define gcmERR_GOTO(Function) \
- status = Function; \
- if (gcmIS_ERROR(status)) \
- { \
- gcmTRACE( \
- gcvLEVEL_ERROR, \
- "gcmERR_GOTO: status=%d @ line=%d in function %s.\n", \
- status, __LINE__, __FUNCTION__ \
- ); \
- goto ErrorHandler; \
- }
- #if gcvDEBUG || gcdFORCE_MESSAGES
- # define gcmVERIFY_BOOLEAN(Expression) \
- gcmASSERT( \
- ( (Expression) == gcvFALSE ) || \
- ( (Expression) == gcvTRUE ) \
- )
- #else
- # define gcmVERIFY_BOOLEAN(Expression)
- #endif
- /*******************************************************************************
- **
- ** gcmVERIFYFIELDFIT
- **
- ** Verify whether the value fits in the field.
- **
- ** ARGUMENTS:
- **
- ** data Data value.
- ** reg Name of register.
- ** field Name of field within register.
- ** value Value for field.
- */
- #define gcmVERIFYFIELDFIT(reg, field, value) \
- gcmASSERT( \
- (value) <= gcmFIELDMAX(reg, field) \
- )
- /*******************************************************************************
- **
- ** gcmFIELDMAX
- **
- ** Get field maximum value.
- **
- ** ARGUMENTS:
- **
- ** reg Name of register.
- ** field Name of field within register.
- */
- #define gcmFIELDMAX(reg, field) \
- ( \
- (gctUINT32) \
- ( \
- (__gcmGETSIZE(reg##_##field) == 32) \
- ? ~0 \
- : (~(~0 << __gcmGETSIZE(reg##_##field))) \
- ) \
- )
- /* ANSI C does not have the 'f' functions, define replacements here. */
- #define gcmSINF(x) ((gctFLOAT) sin(x))
- #define gcmCOSF(x) ((gctFLOAT) cos(x))
- #define gcmASINF(x) ((gctFLOAT) asin(x))
- #define gcmACOSF(x) ((gctFLOAT) acos(x))
- #define gcmSQRTF(x) ((gctFLOAT) sqrt(x))
- #define gcmFABSF(x) ((gctFLOAT) fabs(x))
- #define gcmFMODF(x, y) ((gctFLOAT) fmod((x), (y)))
- #define gcmCEILF(x) ((gctFLOAT) ceil(x))
- #define gcmFLOORF(x) ((gctFLOAT) floor(x))
- /* Fixed point constants. */
- #define gcvZERO_X ((gctFIXED_POINT) 0x00000000)
- #define gcvHALF_X ((gctFIXED_POINT) 0x00008000)
- #define gcvONE_X ((gctFIXED_POINT) 0x00010000)
- #define gcvNEGONE_X ((gctFIXED_POINT) 0xFFFF0000)
- #define gcvTWO_X ((gctFIXED_POINT) 0x00020000)
- /* Integer constants. */
- #define gcvMAX_POS_INT ((gctINT) 0x7FFFFFFF)
- #define gcvMAX_NEG_INT ((gctINT) 0x80000000)
- /* Float constants. */
- #define gcvMAX_POS_FLOAT ((gctFLOAT) 3.4028235e+038)
- #define gcvMAX_NEG_FLOAT ((gctFLOAT) -3.4028235e+038)
- /******************************************************************************\
- ***************************** Miscellaneous Macro ******************************
- \******************************************************************************/
- #define gcmKB2BYTES(Kilobyte) \
- ( \
- (Kilobyte) << 10 \
- )
- #define gcmMB2BYTES(Megabyte) \
- ( \
- (Megabyte) << 20 \
- )
- #define gcmMAT(Matrix, Row, Column) \
- ( \
- (Matrix) [(Row) * 3 + (Column)] \
- )
- #define gcmMAKE2CHAR(Char1, Char2) \
- ( \
- ((gctUINT16) (gctUINT8) (Char1) << 0) | \
- ((gctUINT16) (gctUINT8) (Char2) << 8) \
- )
- #define gcmMAKE4CHAR(Char1, Char2, Char3, Char4) \
- ( \
- ((gctUINT32)(gctUINT8) (Char1) << 0) | \
- ((gctUINT32)(gctUINT8) (Char2) << 8) | \
- ((gctUINT32)(gctUINT8) (Char3) << 16) | \
- ((gctUINT32)(gctUINT8) (Char4) << 24) \
- )
- /* some platforms need to fix the physical address for HW to access*/
- #define gcmFIXADDRESS(address) \
- (\
- (address)\
- )
- #define gcmkFIXADDRESS(address) \
- (\
- (address)\
- )
- /******************************************************************************\
- ****************************** Kernel Debug Macro ******************************
- \******************************************************************************/
- /* Set signal to signaled state for specified process. */
- gceSTATUS
- gckOS_SetSignal(
- IN gckOS Os,
- IN gctHANDLE Process,
- IN gctSIGNAL Signal
- );
- /* Return the kernel logical pointer for the given physical one. */
- gceSTATUS
- gckOS_GetKernelLogical(
- IN gckOS Os,
- IN gctUINT32 Address,
- OUT gctPOINTER * KernelPointer
- );
- /* Return the kernel logical pointer for the given physical one. */
- gceSTATUS
- gckOS_GetKernelLogicalEx(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT32 Address,
- OUT gctPOINTER * KernelPointer
- );
- /*----------------------------------------------------------------------------*/
- /*----------------------------- Semaphore Object -----------------------------*/
- /* Increment the value of a semaphore. */
- gceSTATUS
- gckOS_IncrementSemaphore(
- IN gckOS Os,
- IN gctSEMAPHORE Semaphore
- );
- /* Decrement the value of a semaphore (waiting might occur). */
- gceSTATUS
- gckOS_DecrementSemaphore(
- IN gckOS Os,
- IN gctSEMAPHORE Semaphore
- );
- /*----------------------------------------------------------------------------*/
- /*------------------------------- Thread Object ------------------------------*/
- /* Start a thread. */
- gceSTATUS
- gckOS_StartThread(
- IN gckOS Os,
- IN gctTHREADFUNC ThreadFunction,
- IN gctPOINTER ThreadParameter,
- OUT gctTHREAD * Thread
- );
- /* Stop a thread. */
- gceSTATUS
- gckOS_StopThread(
- IN gckOS Os,
- IN gctTHREAD Thread
- );
- /* Verify whether the thread is still running. */
- gceSTATUS
- gckOS_VerifyThread(
- IN gckOS Os,
- IN gctTHREAD Thread
- );
- /* Construct a new gckVGKERNEL object. */
- gceSTATUS
- gckVGKERNEL_Construct(
- IN gckOS Os,
- IN gctPOINTER Context,
- IN gckKERNEL inKernel,
- OUT gckVGKERNEL * Kernel
- );
- /* Destroy an gckVGKERNEL object. */
- gceSTATUS
- gckVGKERNEL_Destroy(
- IN gckVGKERNEL Kernel
- );
- /* Allocate linear video memory. */
- gceSTATUS
- gckVGKERNEL_AllocateLinearMemory(
- IN gckKERNEL Kernel,
- IN OUT gcePOOL * Pool,
- IN gctSIZE_T Bytes,
- IN gctUINT32 Alignment,
- IN gceSURF_TYPE Type,
- OUT gcuVIDMEM_NODE_PTR * Node
- );
- /* Unmap memory. */
- gceSTATUS
- gckKERNEL_UnmapMemory(
- IN gckKERNEL Kernel,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical
- );
- /* Dispatch a user-level command. */
- gceSTATUS
- gckVGKERNEL_Dispatch(
- IN gckKERNEL Kernel,
- IN gctBOOL FromUser,
- IN OUT struct _gcsHAL_INTERFACE * Interface
- );
- /* Query command buffer requirements. */
- gceSTATUS
- gckKERNEL_QueryCommandBuffer(
- IN gckKERNEL Kernel,
- OUT gcsCOMMAND_BUFFER_INFO_PTR Information
- );
- /******************************************************************************\
- ******************************* gckVGHARDWARE Object ******************************
- \******************************************************************************/
- /* Construct a new gckVGHARDWARE object. */
- gceSTATUS
- gckVGHARDWARE_Construct(
- IN gckOS Os,
- OUT gckVGHARDWARE * Hardware
- );
- /* Destroy an gckVGHARDWARE object. */
- gceSTATUS
- gckVGHARDWARE_Destroy(
- IN gckVGHARDWARE Hardware
- );
- /* Query system memory requirements. */
- gceSTATUS
- gckVGHARDWARE_QuerySystemMemory(
- IN gckVGHARDWARE Hardware,
- OUT gctSIZE_T * SystemSize,
- OUT gctUINT32 * SystemBaseAddress
- );
- /* Build virtual address. */
- gceSTATUS
- gckVGHARDWARE_BuildVirtualAddress(
- IN gckVGHARDWARE Hardware,
- IN gctUINT32 Index,
- IN gctUINT32 Offset,
- OUT gctUINT32 * Address
- );
- /* Kickstart the command processor. */
- gceSTATUS
- gckVGHARDWARE_Execute(
- IN gckVGHARDWARE Hardware,
- IN gctUINT32 Address,
- IN gctUINT32 Count
- );
- /* Query the available memory. */
- gceSTATUS
- gckVGHARDWARE_QueryMemory(
- IN gckVGHARDWARE Hardware,
- OUT gctSIZE_T * InternalSize,
- OUT gctUINT32 * InternalBaseAddress,
- OUT gctUINT32 * InternalAlignment,
- OUT gctSIZE_T * ExternalSize,
- OUT gctUINT32 * ExternalBaseAddress,
- OUT gctUINT32 * ExternalAlignment,
- OUT gctUINT32 * HorizontalTileSize,
- OUT gctUINT32 * VerticalTileSize
- );
- /* Query the identity of the hardware. */
- gceSTATUS
- gckVGHARDWARE_QueryChipIdentity(
- IN gckVGHARDWARE Hardware,
- OUT gceCHIPMODEL* ChipModel,
- OUT gctUINT32* ChipRevision,
- OUT gctUINT32* ChipFeatures,
- OUT gctUINT32* ChipMinorFeatures,
- OUT gctUINT32* ChipMinorFeatures1
- );
- /* Convert an API format. */
- gceSTATUS
- gckVGHARDWARE_ConvertFormat(
- IN gckVGHARDWARE Hardware,
- IN gceSURF_FORMAT Format,
- OUT gctUINT32 * BitsPerPixel,
- OUT gctUINT32 * BytesPerTile
- );
- /* Split a harwdare specific address into API stuff. */
- gceSTATUS
- gckVGHARDWARE_SplitMemory(
- IN gckVGHARDWARE Hardware,
- IN gctUINT32 Address,
- OUT gcePOOL * Pool,
- OUT gctUINT32 * Offset
- );
- /* Align size to tile boundary. */
- gceSTATUS
- gckVGHARDWARE_AlignToTile(
- IN gckVGHARDWARE Hardware,
- IN gceSURF_TYPE Type,
- IN OUT gctUINT32_PTR Width,
- IN OUT gctUINT32_PTR Height
- );
- /* Convert logical address to hardware specific address. */
- gceSTATUS
- gckVGHARDWARE_ConvertLogical(
- IN gckVGHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctBOOL InUserSpace,
- OUT gctUINT32 * Address
- );
- /* Program MMU. */
- gceSTATUS
- gckVGHARDWARE_SetMMU(
- IN gckVGHARDWARE Hardware,
- IN gctPOINTER Logical
- );
- /* Flush the MMU. */
- gceSTATUS
- gckVGHARDWARE_FlushMMU(
- IN gckVGHARDWARE Hardware
- );
- /* Get idle register. */
- gceSTATUS
- gckVGHARDWARE_GetIdle(
- IN gckVGHARDWARE Hardware,
- OUT gctUINT32 * Data
- );
- /* Flush the caches. */
- gceSTATUS
- gckVGHARDWARE_Flush(
- IN gckVGHARDWARE Hardware,
- IN gceKERNEL_FLUSH Flush,
- IN gctPOINTER Logical,
- IN OUT gctSIZE_T * Bytes
- );
- /* Enable/disable fast clear. */
- gceSTATUS
- gckVGHARDWARE_SetFastClear(
- IN gckVGHARDWARE Hardware,
- IN gctINT Enable
- );
- gceSTATUS
- gckVGHARDWARE_ReadInterrupt(
- IN gckVGHARDWARE Hardware,
- OUT gctUINT32_PTR IDs
- );
- /* Power management. */
- gceSTATUS
- gckVGHARDWARE_SetPowerManagementState(
- IN gckVGHARDWARE Hardware,
- IN gceCHIPPOWERSTATE State
- );
- gceSTATUS
- gckVGHARDWARE_QueryPowerManagementState(
- IN gckVGHARDWARE Hardware,
- OUT gceCHIPPOWERSTATE* State
- );
- gceSTATUS
- gckVGHARDWARE_SetPowerManagement(
- IN gckVGHARDWARE Hardware,
- IN gctBOOL PowerManagement
- );
- gceSTATUS
- gckVGHARDWARE_SetPowerOffTimeout(
- IN gckVGHARDWARE Hardware,
- IN gctUINT32 Timeout
- );
- gceSTATUS
- gckVGHARDWARE_QueryPowerOffTimeout(
- IN gckVGHARDWARE Hardware,
- OUT gctUINT32* Timeout
- );
- gceSTATUS
- gckVGHARDWARE_QueryIdle(
- IN gckVGHARDWARE Hardware,
- OUT gctBOOL_PTR IsIdle
- );
- /******************************************************************************\
- *************************** Command Buffer Structures **************************
- \******************************************************************************/
- /* Vacant command buffer marker. */
- #define gcvVACANT_BUFFER ((gcsCOMPLETION_SIGNAL_PTR) ((gctSIZE_T)1))
- /* Command buffer header. */
- typedef struct _gcsCMDBUFFER * gcsCMDBUFFER_PTR;
- typedef struct _gcsCMDBUFFER
- {
- /* Pointer to the completion signal. */
- gcsCOMPLETION_SIGNAL_PTR completion;
- /* The user sets this to the node of the container buffer whitin which
- this particular command buffer resides. The kernel sets this to the
- node of the internally allocated buffer. */
- gcuVIDMEM_NODE_PTR node;
- /* Command buffer hardware address. */
- gctUINT32 address;
- /* The offset of the buffer from the beginning of the header. */
- gctUINT32 bufferOffset;
- /* Size of the area allocated for the data portion of this particular
- command buffer (headers and tail reserves are excluded). */
- gctUINT32 size;
- /* Offset into the buffer [0..size]; reflects exactly how much data has
- been put into the command buffer. */
- gctUINT offset;
- /* The number of command units in the buffer for the hardware to
- execute. */
- gctUINT32 dataCount;
- /* MANAGED BY : user HAL (gcoBUFFER object).
- USED BY : user HAL (gcoBUFFER object).
- Points to the immediate next allocated command buffer. */
- gcsCMDBUFFER_PTR nextAllocated;
- /* MANAGED BY : user layers (HAL and drivers).
- USED BY : kernel HAL (gcoBUFFER object).
- Points to the next subbuffer if any. A family of subbuffers are chained
- together and are meant to be executed inseparably as a unit. Meaning
- that context switching cannot occur while a chain of subbuffers is being
- executed. */
- gcsCMDBUFFER_PTR nextSubBuffer;
- }
- gcsCMDBUFFER;
- /* Command queue element. */
- typedef struct _gcsVGCMDQUEUE
- {
- /* Pointer to the command buffer header. */
- gcsCMDBUFFER_PTR commandBuffer;
- /* Dynamic vs. static command buffer state. */
- gctBOOL dynamic;
- }
- gcsVGCMDQUEUE;
- /* Context map entry. */
- typedef struct _gcsVGCONTEXT_MAP
- {
- /* State index. */
- gctUINT32 index;
- /* New state value. */
- gctUINT32 data;
- /* Points to the next entry in the mod list. */
- gcsVGCONTEXT_MAP_PTR next;
- }
- gcsVGCONTEXT_MAP;
- /* gcsVGCONTEXT structure that holds the current context. */
- typedef struct _gcsVGCONTEXT
- {
- /* Context ID. */
- gctUINT64 id;
- /* State caching ebable flag. */
- gctBOOL stateCachingEnabled;
- /* Current pipe. */
- gctUINT32 currentPipe;
- /* State map/mod buffer. */
- gctUINT32 mapFirst;
- gctUINT32 mapLast;
- gcsVGCONTEXT_MAP_PTR mapContainer;
- gcsVGCONTEXT_MAP_PTR mapPrev;
- gcsVGCONTEXT_MAP_PTR mapCurr;
- gcsVGCONTEXT_MAP_PTR firstPrevMap;
- gcsVGCONTEXT_MAP_PTR firstCurrMap;
- /* Main context buffer. */
- gcsCMDBUFFER_PTR header;
- gctUINT32_PTR buffer;
- /* Completion signal. */
- gctHANDLE process;
- gctSIGNAL signal;
- #if defined(__QNXNTO__)
- gctSIGNAL userSignal;
- gctINT32 coid;
- gctINT32 rcvid;
- #endif
- }
- gcsVGCONTEXT;
- /* User space task header. */
- typedef struct _gcsTASK * gcsTASK_PTR;
- typedef struct _gcsTASK
- {
- /* Pointer to the next task for the same interrupt in user space. */
- gcsTASK_PTR next;
- /* Size of the task data that immediately follows the structure. */
- gctUINT size;
- /* Task data starts here. */
- /* ... */
- }
- gcsTASK;
- /* User space task master table entry. */
- typedef struct _gcsTASK_MASTER_ENTRY * gcsTASK_MASTER_ENTRY_PTR;
- typedef struct _gcsTASK_MASTER_ENTRY
- {
- /* Pointers to the head and to the tail of the task chain. */
- gcsTASK_PTR head;
- gcsTASK_PTR tail;
- }
- gcsTASK_MASTER_ENTRY;
- /* User space task master table entry. */
- typedef struct _gcsTASK_MASTER_TABLE
- {
- /* Table with one entry per block. */
- gcsTASK_MASTER_ENTRY table[gcvBLOCK_COUNT];
- /* The total number of tasks sckeduled. */
- gctUINT count;
- /* The total size of event data in bytes. */
- gctUINT size;
- #if defined(__QNXNTO__)
- gctINT32 coid;
- gctINT32 rcvid;
- #endif
- }
- gcsTASK_MASTER_TABLE;
- /******************************************************************************\
- ***************************** gckVGINTERRUPT Object ******************************
- \******************************************************************************/
- typedef struct _gckVGINTERRUPT * gckVGINTERRUPT;
- typedef gceSTATUS (* gctINTERRUPT_HANDLER)(
- IN gckVGKERNEL Kernel
- );
- gceSTATUS
- gckVGINTERRUPT_Construct(
- IN gckVGKERNEL Kernel,
- OUT gckVGINTERRUPT * Interrupt
- );
- gceSTATUS
- gckVGINTERRUPT_Destroy(
- IN gckVGINTERRUPT Interrupt
- );
- gceSTATUS
- gckVGINTERRUPT_Enable(
- IN gckVGINTERRUPT Interrupt,
- IN OUT gctINT32_PTR Id,
- IN gctINTERRUPT_HANDLER Handler
- );
- gceSTATUS
- gckVGINTERRUPT_Disable(
- IN gckVGINTERRUPT Interrupt,
- IN gctINT32 Id
- );
- #ifndef __QNXNTO__
- gceSTATUS
- gckVGINTERRUPT_Enque(
- IN gckVGINTERRUPT Interrupt
- );
- #else
- gceSTATUS
- gckVGINTERRUPT_Enque(
- IN gckVGINTERRUPT Interrupt,
- OUT gckOS *Os,
- OUT gctSEMAPHORE *Semaphore
- );
- #endif
- gceSTATUS
- gckVGINTERRUPT_DumpState(
- IN gckVGINTERRUPT Interrupt
- );
- /******************************************************************************\
- ******************************* gckVGCOMMAND Object *******************************
- \******************************************************************************/
- typedef struct _gckVGCOMMAND * gckVGCOMMAND;
- /* Construct a new gckVGCOMMAND object. */
- gceSTATUS
- gckVGCOMMAND_Construct(
- IN gckVGKERNEL Kernel,
- IN gctUINT TaskGranularity,
- IN gctUINT QueueSize,
- OUT gckVGCOMMAND * Command
- );
- /* Destroy an gckVGCOMMAND object. */
- gceSTATUS
- gckVGCOMMAND_Destroy(
- IN gckVGCOMMAND Command
- );
- /* Query command buffer attributes. */
- gceSTATUS
- gckVGCOMMAND_QueryCommandBuffer(
- IN gckVGCOMMAND Command,
- OUT gcsCOMMAND_BUFFER_INFO_PTR Information
- );
- /* Allocate a command queue. */
- gceSTATUS
- gckVGCOMMAND_Allocate(
- IN gckVGCOMMAND Command,
- IN gctSIZE_T Size,
- OUT gcsCMDBUFFER_PTR * CommandBuffer,
- OUT gctPOINTER * Data
- );
- /* Release memory held by the command queue. */
- gceSTATUS
- gckVGCOMMAND_Free(
- IN gckVGCOMMAND Command,
- IN gcsCMDBUFFER_PTR CommandBuffer
- );
- /* Schedule the command queue for execution. */
- gceSTATUS
- gckVGCOMMAND_Execute(
- IN gckVGCOMMAND Command,
- IN gcsCMDBUFFER_PTR CommandBuffer
- );
- /* Commit a buffer to the command queue. */
- gceSTATUS
- gckVGCOMMAND_Commit(
- IN gckVGCOMMAND Command,
- IN gcsVGCONTEXT_PTR Context,
- IN gcsVGCMDQUEUE_PTR Queue,
- IN gctUINT EntryCount,
- IN gcsTASK_MASTER_TABLE_PTR TaskTable
- );
- /******************************************************************************\
- ********************************* gckVGMMU Object ********************************
- \******************************************************************************/
- typedef struct _gckVGMMU * gckVGMMU;
- /* Construct a new gckVGMMU object. */
- gceSTATUS
- gckVGMMU_Construct(
- IN gckVGKERNEL Kernel,
- IN gctUINT32 MmuSize,
- OUT gckVGMMU * Mmu
- );
- /* Destroy an gckVGMMU object. */
- gceSTATUS
- gckVGMMU_Destroy(
- IN gckVGMMU Mmu
- );
- /* Allocate pages inside the MMU. */
- gceSTATUS
- gckVGMMU_AllocatePages(
- IN gckVGMMU Mmu,
- IN gctSIZE_T PageCount,
- OUT gctPOINTER * PageTable,
- OUT gctUINT32 * Address
- );
- /* Remove a page table from the MMU. */
- gceSTATUS
- gckVGMMU_FreePages(
- IN gckVGMMU Mmu,
- IN gctPOINTER PageTable,
- IN gctSIZE_T PageCount
- );
- /* Set the MMU page with info. */
- gceSTATUS
- gckVGMMU_SetPage(
- IN gckVGMMU Mmu,
- IN gctUINT32 PageAddress,
- IN gctUINT32 *PageEntry
- );
- /* Flush MMU */
- gceSTATUS
- gckVGMMU_Flush(
- IN gckVGMMU Mmu
- );
- #endif /* gcdENABLE_VG */
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif /* __gc_hal_h_ */
|