| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859 |
- /****************************************************************************
- *
- * 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_h_
- #define __gc_hal_h_
- #include "gc_hal_rename.h"
- #include "gc_hal_types.h"
- #include "gc_hal_enum.h"
- #include "gc_hal_base.h"
- #include "gc_hal_profiler.h"
- #include "gc_hal_driver.h"
- #if gcdENABLE_3D
- #include "gc_hal_statistics.h"
- #endif
- #if gcdSECURITY
- #include "gc_hal_security_interface.h"
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- /******************************************************************************\
- ******************************* Alignment Macros *******************************
- \******************************************************************************/
- /* Alignment with a non-power of two value. */
- #define gcmALIGN_NP2(n, align) \
- ( \
- ((n) + (align) - 1) - (((n) + (align) - 1) % (align)) \
- )
- /* Alignment with a power of two value. */
- #define gcmALIGN(n, align) \
- ( \
- ((n) + ((align) - 1)) & ~((align) - 1) \
- )
- #define gcmALIGN_BASE(n, align) \
- ( \
- ((n) & ~((align) - 1)) \
- )
- /******************************************************************************\
- ***************************** Element Count Macro *****************************
- \******************************************************************************/
- #define gcmSIZEOF(a) \
- ( \
- (gctSIZE_T) (sizeof(a)) \
- )
- #define gcmCOUNTOF(a) \
- ( \
- sizeof(a) / sizeof(a[0]) \
- )
- /******************************************************************************\
- ********************************* Cast Macro **********************************
- \******************************************************************************/
- #define gcmNAME_TO_PTR(na) \
- gckKERNEL_QueryPointerFromName(kernel, gcmALL_TO_UINT32(na))
- #define gcmPTR_TO_NAME(ptr) \
- gckKERNEL_AllocateNameFromPointer(kernel, ptr)
- #define gcmRELEASE_NAME(na) \
- gckKERNEL_DeleteName(kernel, gcmALL_TO_UINT32(na))
- #define gcmALL_TO_UINT32(t) \
- ( \
- (gctUINT32) (gctUINTPTR_T) (t)\
- )
- #define gcmPTR_TO_UINT64(p) \
- ( \
- (gctUINT64) (gctUINTPTR_T) (p)\
- )
- #define gcmUINT64_TO_PTR(u) \
- ( \
- (gctPOINTER) (gctUINTPTR_T) (u)\
- )
- #define gcmUINT64_TO_TYPE(u, t) \
- ( \
- (t) (gctUINTPTR_T) (u)\
- )
- /******************************************************************************\
- ******************************** Useful Macro *********************************
- \******************************************************************************/
- #define gcvINVALID_ADDRESS ~0U
- #define gcmGET_PRE_ROTATION(rotate) \
- ((rotate) & (~(gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y)))
- #define gcmGET_POST_ROTATION(rotate) \
- ((rotate) & (gcvSURF_POST_FLIP_X | gcvSURF_POST_FLIP_Y))
- /******************************************************************************\
- ******************************** gcsOBJECT Object *******************************
- \******************************************************************************/
- /* Type of objects. */
- typedef enum _gceOBJECT_TYPE
- {
- gcvOBJ_UNKNOWN = 0,
- gcvOBJ_2D = gcmCC('2','D',' ',' '),
- gcvOBJ_3D = gcmCC('3','D',' ',' '),
- gcvOBJ_ATTRIBUTE = gcmCC('A','T','T','R'),
- gcvOBJ_BRUSHCACHE = gcmCC('B','R','U','$'),
- gcvOBJ_BRUSHNODE = gcmCC('B','R','U','n'),
- gcvOBJ_BRUSH = gcmCC('B','R','U','o'),
- gcvOBJ_BUFFER = gcmCC('B','U','F','R'),
- gcvOBJ_COMMAND = gcmCC('C','M','D',' '),
- gcvOBJ_COMMANDBUFFER = gcmCC('C','M','D','B'),
- gcvOBJ_CONTEXT = gcmCC('C','T','X','T'),
- gcvOBJ_DEVICE = gcmCC('D','E','V',' '),
- gcvOBJ_DUMP = gcmCC('D','U','M','P'),
- gcvOBJ_EVENT = gcmCC('E','V','N','T'),
- gcvOBJ_FUNCTION = gcmCC('F','U','N','C'),
- gcvOBJ_HAL = gcmCC('H','A','L',' '),
- gcvOBJ_HARDWARE = gcmCC('H','A','R','D'),
- gcvOBJ_HEAP = gcmCC('H','E','A','P'),
- gcvOBJ_INDEX = gcmCC('I','N','D','X'),
- gcvOBJ_INTERRUPT = gcmCC('I','N','T','R'),
- gcvOBJ_KERNEL = gcmCC('K','E','R','N'),
- gcvOBJ_KERNEL_FUNCTION = gcmCC('K','F','C','N'),
- gcvOBJ_MEMORYBUFFER = gcmCC('M','E','M','B'),
- gcvOBJ_MMU = gcmCC('M','M','U',' '),
- gcvOBJ_OS = gcmCC('O','S',' ',' '),
- gcvOBJ_OUTPUT = gcmCC('O','U','T','P'),
- gcvOBJ_PAINT = gcmCC('P','N','T',' '),
- gcvOBJ_PATH = gcmCC('P','A','T','H'),
- gcvOBJ_QUEUE = gcmCC('Q','U','E',' '),
- gcvOBJ_SAMPLER = gcmCC('S','A','M','P'),
- gcvOBJ_SHADER = gcmCC('S','H','D','R'),
- gcvOBJ_STREAM = gcmCC('S','T','R','M'),
- gcvOBJ_SURF = gcmCC('S','U','R','F'),
- gcvOBJ_TEXTURE = gcmCC('T','X','T','R'),
- gcvOBJ_UNIFORM = gcmCC('U','N','I','F'),
- gcvOBJ_VARIABLE = gcmCC('V','A','R','I'),
- gcvOBJ_VERTEX = gcmCC('V','R','T','X'),
- gcvOBJ_VIDMEM = gcmCC('V','M','E','M'),
- gcvOBJ_VG = gcmCC('V','G',' ',' '),
- gcvOBJ_BUFOBJ = gcmCC('B','U','F','O'),
- gcvOBJ_UNIFORM_BLOCK = gcmCC('U','B','L','K'),
- gcvOBJ_CL = gcmCC('C','L',' ',' '),
- }
- gceOBJECT_TYPE;
- /* gcsOBJECT object defintinon. */
- typedef struct _gcsOBJECT
- {
- /* Type of an object. */
- gceOBJECT_TYPE type;
- }
- gcsOBJECT;
- typedef struct _gckHARDWARE * gckHARDWARE;
- /* CORE flags. */
- typedef enum _gceCORE
- {
- gcvCORE_MAJOR = 0x0,
- gcvCORE_2D = 0x1,
- gcvCORE_VG = 0x2,
- #if gcdMULTI_GPU_AFFINITY
- gcvCORE_OCL = 0x3,
- #endif
- }
- gceCORE;
- #if gcdMULTI_GPU_AFFINITY
- #define gcdMAX_GPU_COUNT 4
- #else
- #define gcdMAX_GPU_COUNT 3
- #endif
- #define gcdMAX_SURF_LAYERS 4
- #define gcdMAX_DRAW_BUFFERS 8
- /*******************************************************************************
- **
- ** gcmVERIFY_OBJECT
- **
- ** Assert if an object is invalid or is not of the specified type. If the
- ** object is invalid or not of the specified type, gcvSTATUS_INVALID_OBJECT
- ** will be returned from the current function. In retail mode this macro
- ** does nothing.
- **
- ** ARGUMENTS:
- **
- ** obj Object to test.
- ** t Expected type of the object.
- */
- #if gcmIS_DEBUG(gcdDEBUG_TRACE)
- #define _gcmVERIFY_OBJECT(prefix, obj, t) \
- if ((obj) == gcvNULL) \
- { \
- prefix##TRACE(gcvLEVEL_ERROR, \
- #prefix "VERIFY_OBJECT failed: NULL"); \
- prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \
- gcmCC_PRINT(t)); \
- prefix##ASSERT((obj) != gcvNULL); \
- prefix##FOOTER_ARG("status=%d", gcvSTATUS_INVALID_OBJECT); \
- return gcvSTATUS_INVALID_OBJECT; \
- } \
- else if (((gcsOBJECT*) (obj))->type != t) \
- { \
- prefix##TRACE(gcvLEVEL_ERROR, \
- #prefix "VERIFY_OBJECT failed: %c%c%c%c", \
- gcmCC_PRINT(((gcsOBJECT*) (obj))->type)); \
- prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \
- gcmCC_PRINT(t)); \
- prefix##ASSERT(((gcsOBJECT*)(obj))->type == t); \
- prefix##FOOTER_ARG("status=%d", gcvSTATUS_INVALID_OBJECT); \
- return gcvSTATUS_INVALID_OBJECT; \
- }
- # define gcmVERIFY_OBJECT(obj, t) _gcmVERIFY_OBJECT(gcm, obj, t)
- # define gcmkVERIFY_OBJECT(obj, t) _gcmVERIFY_OBJECT(gcmk, obj, t)
- #else
- # define gcmVERIFY_OBJECT(obj, t) do {} while (gcvFALSE)
- # define gcmkVERIFY_OBJECT(obj, t) do {} while (gcvFALSE)
- #endif
- /******************************************************************************/
- /*VERIFY_OBJECT if special return expected*/
- /******************************************************************************/
- #ifndef EGL_API_ANDROID
- # define _gcmVERIFY_OBJECT_RETURN(prefix, obj, t, retVal) \
- do \
- { \
- if ((obj) == gcvNULL) \
- { \
- prefix##PRINT_VERSION(); \
- prefix##TRACE(gcvLEVEL_ERROR, \
- #prefix "VERIFY_OBJECT_RETURN failed: NULL"); \
- prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \
- gcmCC_PRINT(t)); \
- prefix##ASSERT((obj) != gcvNULL); \
- prefix##FOOTER_ARG("retVal=%d", retVal); \
- return retVal; \
- } \
- else if (((gcsOBJECT*) (obj))->type != t) \
- { \
- prefix##PRINT_VERSION(); \
- prefix##TRACE(gcvLEVEL_ERROR, \
- #prefix "VERIFY_OBJECT_RETURN failed: %c%c%c%c", \
- gcmCC_PRINT(((gcsOBJECT*) (obj))->type)); \
- prefix##TRACE(gcvLEVEL_ERROR, " expected: %c%c%c%c", \
- gcmCC_PRINT(t)); \
- prefix##ASSERT(((gcsOBJECT*)(obj))->type == t); \
- prefix##FOOTER_ARG("retVal=%d", retVal); \
- return retVal; \
- } \
- } \
- while (gcvFALSE)
- # define gcmVERIFY_OBJECT_RETURN(obj, t, retVal) \
- _gcmVERIFY_OBJECT_RETURN(gcm, obj, t, retVal)
- # define gcmkVERIFY_OBJECT_RETURN(obj, t, retVal) \
- _gcmVERIFY_OBJECT_RETURN(gcmk, obj, t, retVal)
- #else
- # define gcmVERIFY_OBJECT_RETURN(obj, t) do {} while (gcvFALSE)
- # define gcmVERIFY_OBJECT_RETURN(obj, t) do {} while (gcvFALSE)
- #endif
- /******************************************************************************\
- ********************************** gckOS Object *********************************
- \******************************************************************************/
- /* Construct a new gckOS object. */
- gceSTATUS
- gckOS_Construct(
- IN gctPOINTER Context,
- OUT gckOS * Os
- );
- /* Destroy an gckOS object. */
- gceSTATUS
- gckOS_Destroy(
- IN gckOS Os
- );
- /* Query the video memory. */
- gceSTATUS
- gckOS_QueryVideoMemory(
- IN gckOS Os,
- OUT gctPHYS_ADDR * InternalAddress,
- OUT gctSIZE_T * InternalSize,
- OUT gctPHYS_ADDR * ExternalAddress,
- OUT gctSIZE_T * ExternalSize,
- OUT gctPHYS_ADDR * ContiguousAddress,
- OUT gctSIZE_T * ContiguousSize
- );
- /* Allocate memory from the heap. */
- gceSTATUS
- gckOS_Allocate(
- IN gckOS Os,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Memory
- );
- /* Free allocated memory. */
- gceSTATUS
- gckOS_Free(
- IN gckOS Os,
- IN gctPOINTER Memory
- );
- /* Wrapper for allocation memory.. */
- gceSTATUS
- gckOS_AllocateMemory(
- IN gckOS Os,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Memory
- );
- /* Wrapper for freeing memory. */
- gceSTATUS
- gckOS_FreeMemory(
- IN gckOS Os,
- IN gctPOINTER Memory
- );
- /* Allocate paged memory. */
- gceSTATUS
- gckOS_AllocatePagedMemory(
- IN gckOS Os,
- IN gctSIZE_T Bytes,
- OUT gctPHYS_ADDR * Physical
- );
- /* Allocate paged memory. */
- gceSTATUS
- gckOS_AllocatePagedMemoryEx(
- IN gckOS Os,
- IN gctUINT32 Flag,
- IN gctSIZE_T Bytes,
- OUT gctUINT32 * Gid,
- OUT gctPHYS_ADDR * Physical
- );
- /* Lock pages. */
- gceSTATUS
- gckOS_LockPages(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctBOOL Cacheable,
- OUT gctPOINTER * Logical,
- OUT gctSIZE_T * PageCount
- );
- /* Map pages. */
- gceSTATUS
- gckOS_MapPages(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T PageCount,
- IN gctPOINTER PageTable
- );
- /* Map pages. */
- gceSTATUS
- gckOS_MapPagesEx(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T PageCount,
- IN gctUINT32 Address,
- IN gctPOINTER PageTable
- );
- gceSTATUS
- gckOS_UnmapPages(
- IN gckOS Os,
- IN gctSIZE_T PageCount,
- IN gctUINT32 Address
- );
- /* Unlock pages. */
- gceSTATUS
- gckOS_UnlockPages(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical
- );
- /* Free paged memory. */
- gceSTATUS
- gckOS_FreePagedMemory(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes
- );
- /* Allocate non-paged memory. */
- gceSTATUS
- gckOS_AllocateNonPagedMemory(
- IN gckOS Os,
- IN gctBOOL InUserSpace,
- IN OUT gctSIZE_T * Bytes,
- OUT gctPHYS_ADDR * Physical,
- OUT gctPOINTER * Logical
- );
- /* Free non-paged memory. */
- gceSTATUS
- gckOS_FreeNonPagedMemory(
- IN gckOS Os,
- IN gctSIZE_T Bytes,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical
- );
- /* Allocate contiguous memory. */
- gceSTATUS
- gckOS_AllocateContiguous(
- IN gckOS Os,
- IN gctBOOL InUserSpace,
- IN OUT gctSIZE_T * Bytes,
- OUT gctPHYS_ADDR * Physical,
- OUT gctPOINTER * Logical
- );
- /* Free contiguous memory. */
- gceSTATUS
- gckOS_FreeContiguous(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical,
- IN gctSIZE_T Bytes
- );
- /* Get the number fo bytes per page. */
- gceSTATUS
- gckOS_GetPageSize(
- IN gckOS Os,
- OUT gctSIZE_T * PageSize
- );
- /* Get the physical address of a corresponding logical address. */
- gceSTATUS
- gckOS_GetPhysicalAddress(
- IN gckOS Os,
- IN gctPOINTER Logical,
- OUT gctUINT32 * Address
- );
- /* Get the physical address of a corresponding user logical address. */
- gceSTATUS
- gckOS_UserLogicalToPhysical(
- IN gckOS Os,
- IN gctPOINTER Logical,
- OUT gctUINT32 * Address
- );
- /* Get the physical address of a corresponding logical address. */
- gceSTATUS
- gckOS_GetPhysicalAddressProcess(
- IN gckOS Os,
- IN gctPOINTER Logical,
- IN gctUINT32 ProcessID,
- OUT gctUINT32 * Address
- );
- /* Map physical memory. */
- gceSTATUS
- gckOS_MapPhysical(
- IN gckOS Os,
- IN gctUINT32 Physical,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Logical
- );
- /* Unmap previously mapped physical memory. */
- gceSTATUS
- gckOS_UnmapPhysical(
- IN gckOS Os,
- IN gctPOINTER Logical,
- IN gctSIZE_T Bytes
- );
- /* Get real physical address from descriptor. */
- gceSTATUS
- gckOS_PhysicalToPhysicalAddress(
- IN gckOS Os,
- IN gctPOINTER Physical,
- OUT gctUINT32 * PhysicalAddress
- );
- /* Read data from a hardware register. */
- gceSTATUS
- gckOS_ReadRegister(
- IN gckOS Os,
- IN gctUINT32 Address,
- OUT gctUINT32 * Data
- );
- /* Read data from a hardware register. */
- gceSTATUS
- gckOS_ReadRegisterEx(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT32 Address,
- OUT gctUINT32 * Data
- );
- /* Write data to a hardware register. */
- gceSTATUS
- gckOS_WriteRegister(
- IN gckOS Os,
- IN gctUINT32 Address,
- IN gctUINT32 Data
- );
- /* Write data to a hardware register. */
- gceSTATUS
- gckOS_WriteRegisterEx(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT32 Address,
- IN gctUINT32 Data
- );
- #if gcdMULTI_GPU
- gceSTATUS
- gckOS_ReadRegisterByCoreId(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT32 CoreId,
- IN gctUINT32 Address,
- OUT gctUINT32 * Data
- );
- gceSTATUS
- gckOS_WriteRegisterByCoreId(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT32 CoreId,
- IN gctUINT32 Address,
- IN gctUINT32 Data
- );
- #endif
- /* Write data to a 32-bit memory location. */
- gceSTATUS
- gckOS_WriteMemory(
- IN gckOS Os,
- IN gctPOINTER Address,
- IN gctUINT32 Data
- );
- /* Map physical memory into the process space. */
- gceSTATUS
- gckOS_MapMemory(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Logical
- );
- /* Unmap physical memory from the specified process space. */
- gceSTATUS
- gckOS_UnmapMemoryEx(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical,
- IN gctUINT32 PID
- );
- /* Unmap physical memory from the process space. */
- gceSTATUS
- gckOS_UnmapMemory(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical
- );
- /* Unmap user logical memory out of physical memory.
- * This function is only supported in Linux currently.
- */
- gceSTATUS
- gckOS_UnmapUserLogical(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical
- );
- /* Create a new mutex. */
- gceSTATUS
- gckOS_CreateMutex(
- IN gckOS Os,
- OUT gctPOINTER * Mutex
- );
- /* Delete a mutex. */
- gceSTATUS
- gckOS_DeleteMutex(
- IN gckOS Os,
- IN gctPOINTER Mutex
- );
- /* Acquire a mutex. */
- gceSTATUS
- gckOS_AcquireMutex(
- IN gckOS Os,
- IN gctPOINTER Mutex,
- IN gctUINT32 Timeout
- );
- /* Release a mutex. */
- gceSTATUS
- gckOS_ReleaseMutex(
- IN gckOS Os,
- IN gctPOINTER Mutex
- );
- /* Atomically exchange a pair of 32-bit values. */
- gceSTATUS
- gckOS_AtomicExchange(
- IN gckOS Os,
- IN OUT gctUINT32_PTR Target,
- IN gctUINT32 NewValue,
- OUT gctUINT32_PTR OldValue
- );
- /* Atomically exchange a pair of pointers. */
- gceSTATUS
- gckOS_AtomicExchangePtr(
- IN gckOS Os,
- IN OUT gctPOINTER * Target,
- IN gctPOINTER NewValue,
- OUT gctPOINTER * OldValue
- );
- gceSTATUS
- gckOS_AtomSetMask(
- IN gctPOINTER Atom,
- IN gctUINT32 Mask
- );
- gceSTATUS
- gckOS_AtomClearMask(
- IN gctPOINTER Atom,
- IN gctUINT32 Mask
- );
- gceSTATUS
- gckOS_DumpCallStack(
- IN gckOS Os
- );
- gceSTATUS
- gckOS_GetProcessNameByPid(
- IN gctINT Pid,
- IN gctSIZE_T Length,
- OUT gctUINT8_PTR String
- );
- /*******************************************************************************
- **
- ** gckOS_AtomConstruct
- **
- ** Create an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** OUTPUT:
- **
- ** gctPOINTER * Atom
- ** Pointer to a variable receiving the constructed atom.
- */
- gceSTATUS
- gckOS_AtomConstruct(
- IN gckOS Os,
- OUT gctPOINTER * Atom
- );
- /*******************************************************************************
- **
- ** gckOS_AtomDestroy
- **
- ** Destroy an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gctPOINTER Atom
- ** Pointer to the atom to destroy.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckOS_AtomDestroy(
- IN gckOS Os,
- OUT gctPOINTER Atom
- );
- /*******************************************************************************
- **
- ** gckOS_AtomGet
- **
- ** Get the 32-bit value protected by an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gctPOINTER Atom
- ** Pointer to the atom.
- **
- ** OUTPUT:
- **
- ** gctINT32_PTR Value
- ** Pointer to a variable the receives the value of the atom.
- */
- gceSTATUS
- gckOS_AtomGet(
- IN gckOS Os,
- IN gctPOINTER Atom,
- OUT gctINT32_PTR Value
- );
- /*******************************************************************************
- **
- ** gckOS_AtomSet
- **
- ** Set the 32-bit value protected by an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gctPOINTER Atom
- ** Pointer to the atom.
- **
- ** gctINT32 Value
- ** The value of the atom.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckOS_AtomSet(
- IN gckOS Os,
- IN gctPOINTER Atom,
- IN gctINT32 Value
- );
- /*******************************************************************************
- **
- ** gckOS_AtomIncrement
- **
- ** Atomically increment the 32-bit integer value inside an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gctPOINTER Atom
- ** Pointer to the atom.
- **
- ** OUTPUT:
- **
- ** gctINT32_PTR Value
- ** Pointer to a variable the receives the original value of the atom.
- */
- gceSTATUS
- gckOS_AtomIncrement(
- IN gckOS Os,
- IN gctPOINTER Atom,
- OUT gctINT32_PTR Value
- );
- /*******************************************************************************
- **
- ** gckOS_AtomDecrement
- **
- ** Atomically decrement the 32-bit integer value inside an atom.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gctPOINTER Atom
- ** Pointer to the atom.
- **
- ** OUTPUT:
- **
- ** gctINT32_PTR Value
- ** Pointer to a variable the receives the original value of the atom.
- */
- gceSTATUS
- gckOS_AtomDecrement(
- IN gckOS Os,
- IN gctPOINTER Atom,
- OUT gctINT32_PTR Value
- );
- /* Delay a number of microseconds. */
- gceSTATUS
- gckOS_Delay(
- IN gckOS Os,
- IN gctUINT32 Delay
- );
- /* Get time in milliseconds. */
- gceSTATUS
- gckOS_GetTicks(
- OUT gctUINT32_PTR Time
- );
- /* Compare time value. */
- gceSTATUS
- gckOS_TicksAfter(
- IN gctUINT32 Time1,
- IN gctUINT32 Time2,
- OUT gctBOOL_PTR IsAfter
- );
- /* Get time in microseconds. */
- gceSTATUS
- gckOS_GetTime(
- OUT gctUINT64_PTR Time
- );
- /* Memory barrier. */
- gceSTATUS
- gckOS_MemoryBarrier(
- IN gckOS Os,
- IN gctPOINTER Address
- );
- /* Map user pointer. */
- gceSTATUS
- gckOS_MapUserPointer(
- IN gckOS Os,
- IN gctPOINTER Pointer,
- IN gctSIZE_T Size,
- OUT gctPOINTER * KernelPointer
- );
- /* Unmap user pointer. */
- gceSTATUS
- gckOS_UnmapUserPointer(
- IN gckOS Os,
- IN gctPOINTER Pointer,
- IN gctSIZE_T Size,
- IN gctPOINTER KernelPointer
- );
- /*******************************************************************************
- **
- ** gckOS_QueryNeedCopy
- **
- ** Query whether the memory can be accessed or mapped directly or it has to be
- ** copied.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to an gckOS object.
- **
- ** gctUINT32 ProcessID
- ** Process ID of the current process.
- **
- ** OUTPUT:
- **
- ** gctBOOL_PTR NeedCopy
- ** Pointer to a boolean receiving gcvTRUE if the memory needs a copy or
- ** gcvFALSE if the memory can be accessed or mapped dircetly.
- */
- gceSTATUS
- gckOS_QueryNeedCopy(
- IN gckOS Os,
- IN gctUINT32 ProcessID,
- OUT gctBOOL_PTR NeedCopy
- );
- /*******************************************************************************
- **
- ** gckOS_CopyFromUserData
- **
- ** Copy data from user to kernel memory.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to an gckOS object.
- **
- ** gctPOINTER KernelPointer
- ** Pointer to kernel memory.
- **
- ** gctPOINTER Pointer
- ** Pointer to user memory.
- **
- ** gctSIZE_T Size
- ** Number of bytes to copy.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckOS_CopyFromUserData(
- IN gckOS Os,
- IN gctPOINTER KernelPointer,
- IN gctPOINTER Pointer,
- IN gctSIZE_T Size
- );
- /*******************************************************************************
- **
- ** gckOS_CopyToUserData
- **
- ** Copy data from kernel to user memory.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to an gckOS object.
- **
- ** gctPOINTER KernelPointer
- ** Pointer to kernel memory.
- **
- ** gctPOINTER Pointer
- ** Pointer to user memory.
- **
- ** gctSIZE_T Size
- ** Number of bytes to copy.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckOS_CopyToUserData(
- IN gckOS Os,
- IN gctPOINTER KernelPointer,
- IN gctPOINTER Pointer,
- IN gctSIZE_T Size
- );
- gceSTATUS
- gckOS_SuspendInterrupt(
- IN gckOS Os
- );
- gceSTATUS
- gckOS_SuspendInterruptEx(
- IN gckOS Os,
- IN gceCORE Core
- );
- gceSTATUS
- gckOS_ResumeInterrupt(
- IN gckOS Os
- );
- gceSTATUS
- gckOS_ResumeInterruptEx(
- IN gckOS Os,
- IN gceCORE Core
- );
- /* Get the base address for the physical memory. */
- gceSTATUS
- gckOS_GetBaseAddress(
- IN gckOS Os,
- OUT gctUINT32_PTR BaseAddress
- );
- /* Perform a memory copy. */
- gceSTATUS
- gckOS_MemCopy(
- IN gctPOINTER Destination,
- IN gctCONST_POINTER Source,
- IN gctSIZE_T Bytes
- );
- /* Zero memory. */
- gceSTATUS
- gckOS_ZeroMemory(
- IN gctPOINTER Memory,
- IN gctSIZE_T Bytes
- );
- /* Device I/O control to the kernel HAL layer. */
- gceSTATUS
- gckOS_DeviceControl(
- IN gckOS Os,
- IN gctBOOL FromUser,
- IN gctUINT32 IoControlCode,
- IN gctPOINTER InputBuffer,
- IN gctSIZE_T InputBufferSize,
- OUT gctPOINTER OutputBuffer,
- IN gctSIZE_T OutputBufferSize
- );
- /*******************************************************************************
- **
- ** gckOS_GetProcessID
- **
- ** Get current process ID.
- **
- ** INPUT:
- **
- ** Nothing.
- **
- ** OUTPUT:
- **
- ** gctUINT32_PTR ProcessID
- ** Pointer to the variable that receives the process ID.
- */
- gceSTATUS
- gckOS_GetProcessID(
- OUT gctUINT32_PTR ProcessID
- );
- gceSTATUS
- gckOS_GetCurrentProcessID(
- OUT gctUINT32_PTR ProcessID
- );
- /*******************************************************************************
- **
- ** gckOS_GetThreadID
- **
- ** Get current thread ID.
- **
- ** INPUT:
- **
- ** Nothing.
- **
- ** OUTPUT:
- **
- ** gctUINT32_PTR ThreadID
- ** Pointer to the variable that receives the thread ID.
- */
- gceSTATUS
- gckOS_GetThreadID(
- OUT gctUINT32_PTR ThreadID
- );
- #if gcdSECURITY
- gceSTATUS
- gckOS_OpenSecurityChannel(
- IN gckOS Os,
- IN gceCORE Core,
- OUT gctUINT32 *Channel
- );
- gceSTATUS
- gckOS_CloseSecurityChannel(
- IN gctUINT32 Channel
- );
- gceSTATUS
- gckOS_CallSecurityService(
- IN gctUINT32 Channel,
- IN gcsTA_INTERFACE * Interface
- );
- gceSTATUS
- gckOS_InitSecurityChannel(
- OUT gctUINT32 Channel
- );
- gceSTATUS
- gckOS_AllocatePageArray(
- IN gckOS Os,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T PageCount,
- OUT gctPOINTER * PageArrayLogical,
- OUT gctPHYS_ADDR * PageArrayPhysical
- );
- #endif
- /******************************************************************************\
- ********************************** Signal Object *********************************
- \******************************************************************************/
- /* Create a signal. */
- gceSTATUS
- gckOS_CreateSignal(
- IN gckOS Os,
- IN gctBOOL ManualReset,
- OUT gctSIGNAL * Signal
- );
- /* Destroy a signal. */
- gceSTATUS
- gckOS_DestroySignal(
- IN gckOS Os,
- IN gctSIGNAL Signal
- );
- /* Signal a signal. */
- gceSTATUS
- gckOS_Signal(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- IN gctBOOL State
- );
- /* Wait for a signal. */
- gceSTATUS
- gckOS_WaitSignal(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- IN gctUINT32 Wait
- );
- #ifdef __QNXNTO__
- gceSTATUS
- gckOS_SignalPulse(
- IN gckOS Os,
- IN gctSIGNAL Signal
- );
- gceSTATUS
- gckOS_SignalPending(
- IN gckOS Os,
- IN gctSIGNAL Signal
- );
- #endif
- /* Map a user signal to the kernel space. */
- gceSTATUS
- gckOS_MapSignal(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- IN gctHANDLE Process,
- OUT gctSIGNAL * MappedSignal
- );
- /* Unmap a user signal */
- gceSTATUS
- gckOS_UnmapSignal(
- IN gckOS Os,
- IN gctSIGNAL Signal
- );
- /* Map user memory. */
- gceSTATUS
- gckOS_MapUserMemory(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctPOINTER Memory,
- IN gctUINT32 Physical,
- IN gctSIZE_T Size,
- OUT gctPOINTER * Info,
- OUT gctUINT32_PTR Address
- );
- /* Unmap user memory. */
- gceSTATUS
- gckOS_UnmapUserMemory(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctPOINTER Memory,
- IN gctSIZE_T Size,
- IN gctPOINTER Info,
- IN gctUINT32 Address
- );
- /******************************************************************************\
- ************************** Android Native Fence Sync ***************************
- \******************************************************************************/
- gceSTATUS
- gckOS_CreateSyncTimeline(
- IN gckOS Os,
- OUT gctHANDLE * Timeline
- );
- gceSTATUS
- gckOS_DestroySyncTimeline(
- IN gckOS Os,
- IN gctHANDLE Timeline
- );
- gceSTATUS
- gckOS_CreateSyncPoint(
- IN gckOS Os,
- OUT gctSYNC_POINT * SyncPoint
- );
- gceSTATUS
- gckOS_ReferenceSyncPoint(
- IN gckOS Os,
- IN gctSYNC_POINT SyncPoint
- );
- gceSTATUS
- gckOS_DestroySyncPoint(
- IN gckOS Os,
- IN gctSYNC_POINT SyncPoint
- );
- gceSTATUS
- gckOS_SignalSyncPoint(
- IN gckOS Os,
- IN gctSYNC_POINT SyncPoint
- );
- gceSTATUS
- gckOS_QuerySyncPoint(
- IN gckOS Os,
- IN gctSYNC_POINT SyncPoint,
- OUT gctBOOL_PTR State
- );
- gceSTATUS
- gckOS_CreateNativeFence(
- IN gckOS Os,
- IN gctHANDLE Timeline,
- IN gctSYNC_POINT SyncPoint,
- OUT gctINT * FenceFD
- );
- #if !USE_NEW_LINUX_SIGNAL
- /* Create signal to be used in the user space. */
- gceSTATUS
- gckOS_CreateUserSignal(
- IN gckOS Os,
- IN gctBOOL ManualReset,
- OUT gctINT * SignalID
- );
- /* Destroy signal used in the user space. */
- gceSTATUS
- gckOS_DestroyUserSignal(
- IN gckOS Os,
- IN gctINT SignalID
- );
- /* Wait for signal used in the user space. */
- gceSTATUS
- gckOS_WaitUserSignal(
- IN gckOS Os,
- IN gctINT SignalID,
- IN gctUINT32 Wait
- );
- /* Signal a signal used in the user space. */
- gceSTATUS
- gckOS_SignalUserSignal(
- IN gckOS Os,
- IN gctINT SignalID,
- IN gctBOOL State
- );
- #endif /* USE_NEW_LINUX_SIGNAL */
- /* Set a signal owned by a process. */
- #if defined(__QNXNTO__)
- gceSTATUS
- gckOS_UserSignal(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- IN gctINT Recvid,
- IN gctINT Coid
- );
- #else
- gceSTATUS
- gckOS_UserSignal(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- IN gctHANDLE Process
- );
- #endif
- /******************************************************************************\
- ** Cache Support
- */
- gceSTATUS
- gckOS_CacheClean(
- gckOS Os,
- gctUINT32 ProcessID,
- gctPHYS_ADDR Handle,
- gctUINT32 Physical,
- gctPOINTER Logical,
- gctSIZE_T Bytes
- );
- gceSTATUS
- gckOS_CacheFlush(
- gckOS Os,
- gctUINT32 ProcessID,
- gctPHYS_ADDR Handle,
- gctUINT32 Physical,
- gctPOINTER Logical,
- gctSIZE_T Bytes
- );
- gceSTATUS
- gckOS_CacheInvalidate(
- gckOS Os,
- gctUINT32 ProcessID,
- gctPHYS_ADDR Handle,
- gctUINT32 Physical,
- gctPOINTER Logical,
- gctSIZE_T Bytes
- );
- gceSTATUS
- gckOS_CPUPhysicalToGPUPhysical(
- IN gckOS Os,
- IN gctUINT32 CPUPhysical,
- IN gctUINT32_PTR GPUPhysical
- );
- gceSTATUS
- gckOS_GPUPhysicalToCPUPhysical(
- IN gckOS Os,
- IN gctUINT32 GPUPhysical,
- IN gctUINT32_PTR CPUPhysical
- );
- gceSTATUS
- gckOS_QueryOption(
- IN gckOS Os,
- IN gctCONST_STRING Option,
- OUT gctUINT32 * Value
- );
- /******************************************************************************\
- ** Debug Support
- */
- void
- gckOS_SetDebugLevel(
- IN gctUINT32 Level
- );
- void
- gckOS_SetDebugZone(
- IN gctUINT32 Zone
- );
- void
- gckOS_SetDebugLevelZone(
- IN gctUINT32 Level,
- IN gctUINT32 Zone
- );
- void
- gckOS_SetDebugZones(
- IN gctUINT32 Zones,
- IN gctBOOL Enable
- );
- void
- gckOS_SetDebugFile(
- IN gctCONST_STRING FileName
- );
- /*******************************************************************************
- ** Broadcast interface.
- */
- typedef enum _gceBROADCAST
- {
- /* GPU might be idle. */
- gcvBROADCAST_GPU_IDLE,
- /* A commit is going to happen. */
- gcvBROADCAST_GPU_COMMIT,
- /* GPU seems to be stuck. */
- gcvBROADCAST_GPU_STUCK,
- /* First process gets attached. */
- gcvBROADCAST_FIRST_PROCESS,
- /* Last process gets detached. */
- gcvBROADCAST_LAST_PROCESS,
- /* AXI bus error. */
- gcvBROADCAST_AXI_BUS_ERROR,
- /* Out of memory. */
- gcvBROADCAST_OUT_OF_MEMORY,
- }
- gceBROADCAST;
- gceSTATUS
- gckOS_Broadcast(
- IN gckOS Os,
- IN gckHARDWARE Hardware,
- IN gceBROADCAST Reason
- );
- gceSTATUS
- gckOS_BroadcastHurry(
- IN gckOS Os,
- IN gckHARDWARE Hardware,
- IN gctUINT Urgency
- );
- gceSTATUS
- gckOS_BroadcastCalibrateSpeed(
- IN gckOS Os,
- IN gckHARDWARE Hardware,
- IN gctUINT Idle,
- IN gctUINT Time
- );
- /*******************************************************************************
- **
- ** gckOS_SetGPUPower
- **
- ** Set the power of the GPU on or off.
- **
- ** INPUT:
- **
- ** gckOS Os
- ** Pointer to a gckOS object.
- **
- ** gceCORE Core
- ** GPU whose power is set.
- **
- ** gctBOOL Clock
- ** gcvTRUE to turn on the clock, or gcvFALSE to turn off the clock.
- **
- ** gctBOOL Power
- ** gcvTRUE to turn on the power, or gcvFALSE to turn off the power.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckOS_SetGPUPower(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctBOOL Clock,
- IN gctBOOL Power
- );
- gceSTATUS
- gckOS_ResetGPU(
- IN gckOS Os,
- IN gceCORE Core
- );
- gceSTATUS
- gckOS_PrepareGPUFrequency(
- IN gckOS Os,
- IN gceCORE Core
- );
- gceSTATUS
- gckOS_FinishGPUFrequency(
- IN gckOS Os,
- IN gceCORE Core
- );
- gceSTATUS
- gckOS_QueryGPUFrequency(
- IN gckOS Os,
- IN gceCORE Core,
- OUT gctUINT32 * Frequency,
- OUT gctUINT8 * Scale
- );
- gceSTATUS
- gckOS_SetGPUFrequency(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctUINT8 Scale
- );
- /*******************************************************************************
- ** Semaphores.
- */
- /* Create a new semaphore. */
- gceSTATUS
- gckOS_CreateSemaphore(
- IN gckOS Os,
- OUT gctPOINTER * Semaphore
- );
- #if gcdENABLE_VG
- gceSTATUS
- gckOS_CreateSemaphoreVG(
- IN gckOS Os,
- OUT gctPOINTER * Semaphore
- );
- #endif
- /* Delete a semahore. */
- gceSTATUS
- gckOS_DestroySemaphore(
- IN gckOS Os,
- IN gctPOINTER Semaphore
- );
- /* Acquire a semahore. */
- gceSTATUS
- gckOS_AcquireSemaphore(
- IN gckOS Os,
- IN gctPOINTER Semaphore
- );
- /* Try to acquire a semahore. */
- gceSTATUS
- gckOS_TryAcquireSemaphore(
- IN gckOS Os,
- IN gctPOINTER Semaphore
- );
- /* Release a semahore. */
- gceSTATUS
- gckOS_ReleaseSemaphore(
- IN gckOS Os,
- IN gctPOINTER Semaphore
- );
- /*******************************************************************************
- ** Timer API.
- */
- typedef void (*gctTIMERFUNCTION)(gctPOINTER);
- /* Create a timer. */
- gceSTATUS
- gckOS_CreateTimer(
- IN gckOS Os,
- IN gctTIMERFUNCTION Function,
- IN gctPOINTER Data,
- OUT gctPOINTER * Timer
- );
- /* Destory a timer. */
- gceSTATUS
- gckOS_DestroyTimer(
- IN gckOS Os,
- IN gctPOINTER Timer
- );
- /* Start a timer. */
- gceSTATUS
- gckOS_StartTimer(
- IN gckOS Os,
- IN gctPOINTER Timer,
- IN gctUINT32 Delay
- );
- /* Stop a timer. */
- gceSTATUS
- gckOS_StopTimer(
- IN gckOS Os,
- IN gctPOINTER Timer
- );
- /******************************************************************************\
- ********************************* gckHEAP Object ********************************
- \******************************************************************************/
- typedef struct _gckHEAP * gckHEAP;
- /* Construct a new gckHEAP object. */
- gceSTATUS
- gckHEAP_Construct(
- IN gckOS Os,
- IN gctSIZE_T AllocationSize,
- OUT gckHEAP * Heap
- );
- /* Destroy an gckHEAP object. */
- gceSTATUS
- gckHEAP_Destroy(
- IN gckHEAP Heap
- );
- /* Allocate memory. */
- gceSTATUS
- gckHEAP_Allocate(
- IN gckHEAP Heap,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Node
- );
- /* Free memory. */
- gceSTATUS
- gckHEAP_Free(
- IN gckHEAP Heap,
- IN gctPOINTER Node
- );
- /* Profile the heap. */
- gceSTATUS
- gckHEAP_ProfileStart(
- IN gckHEAP Heap
- );
- gceSTATUS
- gckHEAP_ProfileEnd(
- IN gckHEAP Heap,
- IN gctCONST_STRING Title
- );
- /******************************************************************************\
- ******************************** gckVIDMEM Object ******************************
- \******************************************************************************/
- typedef struct _gckVIDMEM * gckVIDMEM;
- typedef struct _gckKERNEL * gckKERNEL;
- typedef struct _gckDB * gckDB;
- typedef struct _gckDVFS * gckDVFS;
- /* Construct a new gckVIDMEM object. */
- gceSTATUS
- gckVIDMEM_Construct(
- IN gckOS Os,
- IN gctUINT32 BaseAddress,
- IN gctSIZE_T Bytes,
- IN gctSIZE_T Threshold,
- IN gctSIZE_T Banking,
- OUT gckVIDMEM * Memory
- );
- /* Destroy an gckVDIMEM object. */
- gceSTATUS
- gckVIDMEM_Destroy(
- IN gckVIDMEM Memory
- );
- /* Allocate linear memory. */
- gceSTATUS
- gckVIDMEM_AllocateLinear(
- IN gckKERNEL Kernel,
- IN gckVIDMEM Memory,
- IN gctSIZE_T Bytes,
- IN gctUINT32 Alignment,
- IN gceSURF_TYPE Type,
- IN gctBOOL Specified,
- OUT gcuVIDMEM_NODE_PTR * Node
- );
- /* Free memory. */
- gceSTATUS
- gckVIDMEM_Free(
- IN gckKERNEL Kernel,
- IN gcuVIDMEM_NODE_PTR Node
- );
- /* Lock memory. */
- gceSTATUS
- gckVIDMEM_Lock(
- IN gckKERNEL Kernel,
- IN gckVIDMEM_NODE Node,
- IN gctBOOL Cacheable,
- OUT gctUINT32 * Address,
- OUT gctUINT32 * Gid,
- OUT gctUINT64 * PhysicalAddress
- );
- /* Unlock memory. */
- gceSTATUS
- gckVIDMEM_Unlock(
- IN gckKERNEL Kernel,
- IN gckVIDMEM_NODE Node,
- IN gceSURF_TYPE Type,
- IN OUT gctBOOL * Asynchroneous
- );
- /* Construct a gcuVIDMEM_NODE union for virtual memory. */
- gceSTATUS
- gckVIDMEM_ConstructVirtual(
- IN gckKERNEL Kernel,
- IN gctUINT32 Flag,
- IN gctSIZE_T Bytes,
- OUT gcuVIDMEM_NODE_PTR * Node
- );
- /* Destroy a gcuVIDMEM_NODE union for virtual memory. */
- gceSTATUS
- gckVIDMEM_DestroyVirtual(
- IN gcuVIDMEM_NODE_PTR Node
- );
- /******************************************************************************\
- ******************************** gckKERNEL Object ******************************
- \******************************************************************************/
- struct _gcsHAL_INTERFACE;
- /* Notifications. */
- typedef enum _gceNOTIFY
- {
- gcvNOTIFY_INTERRUPT,
- gcvNOTIFY_COMMAND_QUEUE,
- }
- gceNOTIFY;
- /* Flush flags. */
- typedef enum _gceKERNEL_FLUSH
- {
- gcvFLUSH_COLOR = 0x01,
- gcvFLUSH_DEPTH = 0x02,
- gcvFLUSH_TEXTURE = 0x04,
- gcvFLUSH_2D = 0x08,
- #if gcdMULTI_GPU
- gcvFLUSH_L2 = 0x10,
- #endif
- gcvFLUSH_TILE_STATUS = 0x20,
- gcvFLUSH_ALL = gcvFLUSH_COLOR
- | gcvFLUSH_DEPTH
- | gcvFLUSH_TEXTURE
- | gcvFLUSH_2D
- #if gcdMULTI_GPU
- | gcvFLUSH_L2
- #endif
- | gcvFLUSH_TILE_STATUS
- }
- gceKERNEL_FLUSH;
- /* Construct a new gckKERNEL object. */
- gceSTATUS
- gckKERNEL_Construct(
- IN gckOS Os,
- IN gceCORE Core,
- IN gctPOINTER Context,
- IN gckDB SharedDB,
- OUT gckKERNEL * Kernel
- );
- /* Destroy an gckKERNEL object. */
- gceSTATUS
- gckKERNEL_Destroy(
- IN gckKERNEL Kernel
- );
- /* Dispatch a user-level command. */
- gceSTATUS
- gckKERNEL_Dispatch(
- IN gckKERNEL Kernel,
- IN gctBOOL FromUser,
- IN OUT struct _gcsHAL_INTERFACE * Interface
- );
- /* Query Database requirements. */
- gceSTATUS
- gckKERNEL_QueryDatabase(
- IN gckKERNEL Kernel,
- IN gctUINT32 ProcessID,
- IN OUT gcsHAL_INTERFACE * Interface
- );
- /* Query the video memory. */
- gceSTATUS
- gckKERNEL_QueryVideoMemory(
- IN gckKERNEL Kernel,
- OUT struct _gcsHAL_INTERFACE * Interface
- );
- /* Lookup the gckVIDMEM object for a pool. */
- gceSTATUS
- gckKERNEL_GetVideoMemoryPool(
- IN gckKERNEL Kernel,
- IN gcePOOL Pool,
- OUT gckVIDMEM * VideoMemory
- );
- gceSTATUS
- gckKERNEL_AllocateLinearMemory(
- IN gckKERNEL Kernel,
- IN gctUINT32 ProcessID,
- IN OUT gcePOOL * Pool,
- IN gctSIZE_T Bytes,
- IN gctUINT32 Alignment,
- IN gceSURF_TYPE Type,
- IN gctUINT32 Flag,
- OUT gctUINT32 * Node
- );
- gceSTATUS
- gckKERNEL_ReleaseVideoMemory(
- IN gckKERNEL Kernel,
- IN gctUINT32 ProcessID,
- IN gctUINT32 Handle
- );
- gceSTATUS
- gckKERNEL_LockVideoMemory(
- IN gckKERNEL Kernel,
- IN gceCORE Core,
- IN gctUINT32 ProcessID,
- IN gctBOOL FromUser,
- IN OUT gcsHAL_INTERFACE * Interface
- );
- gceSTATUS
- gckKERNEL_UnlockVideoMemory(
- IN gckKERNEL Kernel,
- IN gctUINT32 ProcessID,
- IN OUT gcsHAL_INTERFACE * Interface
- );
- /* Map video memory. */
- gceSTATUS
- gckKERNEL_MapVideoMemory(
- IN gckKERNEL Kernel,
- IN gctBOOL InUserSpace,
- IN gctUINT32 Address,
- #ifdef __QNXNTO__
- IN gctUINT32 Pid,
- IN gctUINT32 Bytes,
- #endif
- OUT gctPOINTER * Logical
- );
- /* Map video memory. */
- gceSTATUS
- gckKERNEL_MapVideoMemoryEx(
- IN gckKERNEL Kernel,
- IN gceCORE Core,
- IN gctBOOL InUserSpace,
- IN gctUINT32 Address,
- #ifdef __QNXNTO__
- IN gctUINT32 Pid,
- IN gctUINT32 Bytes,
- #endif
- OUT gctPOINTER * Logical
- );
- #ifdef __QNXNTO__
- /* Unmap video memory. */
- gceSTATUS
- gckKERNEL_UnmapVideoMemory(
- IN gckKERNEL Kernel,
- IN gctPOINTER Logical,
- IN gctUINT32 Pid,
- IN gctUINT32 Bytes
- );
- #endif
- /* Map memory. */
- gceSTATUS
- gckKERNEL_MapMemory(
- IN gckKERNEL Kernel,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- OUT gctPOINTER * Logical
- );
- /* Unmap memory. */
- gceSTATUS
- gckKERNEL_UnmapMemory(
- IN gckKERNEL Kernel,
- IN gctPHYS_ADDR Physical,
- IN gctSIZE_T Bytes,
- IN gctPOINTER Logical
- );
- /* Notification of events. */
- gceSTATUS
- gckKERNEL_Notify(
- IN gckKERNEL Kernel,
- #if gcdMULTI_GPU
- IN gctUINT CoreId,
- #endif
- IN gceNOTIFY Notifcation,
- IN gctBOOL Data
- );
- gceSTATUS
- gckKERNEL_QuerySettings(
- IN gckKERNEL Kernel,
- OUT gcsKERNEL_SETTINGS * Settings
- );
- /*******************************************************************************
- **
- ** gckKERNEL_Recovery
- **
- ** Try to recover the GPU from a fatal error.
- **
- ** INPUT:
- **
- ** gckKERNEL Kernel
- ** Pointer to an gckKERNEL object.
- **
- ** OUTPUT:
- **
- ** Nothing.
- */
- gceSTATUS
- gckKERNEL_Recovery(
- IN gckKERNEL Kernel
- );
- /* Set the value of timeout on HW operation. */
- void
- gckKERNEL_SetTimeOut(
- IN gckKERNEL Kernel,
- IN gctUINT32 timeOut
- );
- /* Get access to the user data. */
- gceSTATUS
- gckKERNEL_OpenUserData(
- IN gckKERNEL Kernel,
- IN gctBOOL NeedCopy,
- IN gctPOINTER StaticStorage,
- IN gctPOINTER UserPointer,
- IN gctSIZE_T Size,
- OUT gctPOINTER * KernelPointer
- );
- /* Release resources associated with the user data connection. */
- gceSTATUS
- gckKERNEL_CloseUserData(
- IN gckKERNEL Kernel,
- IN gctBOOL NeedCopy,
- IN gctBOOL FlushData,
- IN gctPOINTER UserPointer,
- IN gctSIZE_T Size,
- OUT gctPOINTER * KernelPointer
- );
- gceSTATUS
- gckDVFS_Construct(
- IN gckHARDWARE Hardware,
- OUT gckDVFS * Frequency
- );
- gceSTATUS
- gckDVFS_Destroy(
- IN gckDVFS Dvfs
- );
- gceSTATUS
- gckDVFS_Start(
- IN gckDVFS Dvfs
- );
- gceSTATUS
- gckDVFS_Stop(
- IN gckDVFS Dvfs
- );
- /******************************************************************************\
- ******************************* gckHARDWARE Object *****************************
- \******************************************************************************/
- /* Construct a new gckHARDWARE object. */
- gceSTATUS
- gckHARDWARE_Construct(
- IN gckOS Os,
- IN gceCORE Core,
- OUT gckHARDWARE * Hardware
- );
- /* Destroy an gckHARDWARE object. */
- gceSTATUS
- gckHARDWARE_Destroy(
- IN gckHARDWARE Hardware
- );
- /* Get hardware type. */
- gceSTATUS
- gckHARDWARE_GetType(
- IN gckHARDWARE Hardware,
- OUT gceHARDWARE_TYPE * Type
- );
- /* Query system memory requirements. */
- gceSTATUS
- gckHARDWARE_QuerySystemMemory(
- IN gckHARDWARE Hardware,
- OUT gctSIZE_T * SystemSize,
- OUT gctUINT32 * SystemBaseAddress
- );
- /* Build virtual address. */
- gceSTATUS
- gckHARDWARE_BuildVirtualAddress(
- IN gckHARDWARE Hardware,
- IN gctUINT32 Index,
- IN gctUINT32 Offset,
- OUT gctUINT32 * Address
- );
- /* Query command buffer requirements. */
- gceSTATUS
- gckHARDWARE_QueryCommandBuffer(
- IN gckHARDWARE Hardware,
- OUT gctUINT32 * Alignment,
- OUT gctUINT32 * ReservedHead,
- OUT gctUINT32 * ReservedTail
- );
- /* Add a WAIT/LINK pair in the command queue. */
- gceSTATUS
- gckHARDWARE_WaitLink(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctUINT32 Offset,
- IN OUT gctUINT32 * Bytes,
- OUT gctUINT32 * WaitOffset,
- OUT gctUINT32 * WaitBytes
- );
- /* Kickstart the command processor. */
- gceSTATUS
- gckHARDWARE_Execute(
- IN gckHARDWARE Hardware,
- IN gctUINT32 Address,
- IN gctSIZE_T Bytes
- );
- /* Add an END command in the command queue. */
- gceSTATUS
- gckHARDWARE_End(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN OUT gctUINT32 * Bytes
- );
- #if gcdMULTI_GPU
- gceSTATUS
- gckHARDWARE_ChipEnable(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gceCORE_3D_MASK ChipEnable,
- IN OUT gctSIZE_T * Bytes
- );
- #endif
- /* Add a NOP command in the command queue. */
- gceSTATUS
- gckHARDWARE_Nop(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN OUT gctSIZE_T * Bytes
- );
- /* Add a PIPESELECT command in the command queue. */
- gceSTATUS
- gckHARDWARE_PipeSelect(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gcePIPE_SELECT Pipe,
- IN OUT gctUINT32 * Bytes
- );
- /* Add a LINK command in the command queue. */
- gceSTATUS
- gckHARDWARE_Link(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctUINT32 FetchAddress,
- IN gctUINT32 FetchSize,
- IN OUT gctUINT32 * Bytes
- );
- /* Add an EVENT command in the command queue. */
- gceSTATUS
- gckHARDWARE_Event(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctUINT8 Event,
- IN gceKERNEL_WHERE FromWhere,
- IN OUT gctUINT32 * Bytes
- );
- /* Query the available memory. */
- gceSTATUS
- gckHARDWARE_QueryMemory(
- IN gckHARDWARE 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
- gckHARDWARE_QueryChipIdentity(
- IN gckHARDWARE Hardware,
- OUT gcsHAL_QUERY_CHIP_IDENTITY_PTR Identity
- );
- /* Query the shader uniforms support. */
- gceSTATUS
- gckHARDWARE_QueryShaderCaps(
- IN gckHARDWARE Hardware,
- OUT gctUINT * VertexUniforms,
- OUT gctUINT * FragmentUniforms,
- OUT gctBOOL * UnifiedUnforms
- );
- /* Split a harwdare specific address into API stuff. */
- gceSTATUS
- gckHARDWARE_SplitMemory(
- IN gckHARDWARE Hardware,
- IN gctUINT32 Address,
- OUT gcePOOL * Pool,
- OUT gctUINT32 * Offset
- );
- /* Update command queue tail pointer. */
- gceSTATUS
- gckHARDWARE_UpdateQueueTail(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctUINT32 Offset
- );
- /* Convert logical address to hardware specific address. */
- gceSTATUS
- gckHARDWARE_ConvertLogical(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctBOOL InUserSpace,
- OUT gctUINT32 * Address
- );
- /* Interrupt manager. */
- gceSTATUS
- gckHARDWARE_Interrupt(
- IN gckHARDWARE Hardware,
- #if gcdMULTI_GPU
- IN gctUINT CoreId,
- #endif
- IN gctBOOL InterruptValid
- );
- /* Program MMU. */
- gceSTATUS
- gckHARDWARE_SetMMU(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical
- );
- /* Flush the MMU. */
- gceSTATUS
- gckHARDWARE_FlushMMU(
- IN gckHARDWARE Hardware
- );
- /* Set the page table base address. */
- gceSTATUS
- gckHARDWARE_SetMMUv2(
- IN gckHARDWARE Hardware,
- IN gctBOOL Enable,
- IN gctPOINTER MtlbAddress,
- IN gceMMU_MODE Mode,
- IN gctPOINTER SafeAddress,
- IN gctBOOL FromPower
- );
- #if gcdPROCESS_ADDRESS_SPACE
- /* Configure mmu configuration. */
- gceSTATUS
- gckHARDWARE_ConfigMMU(
- IN gckHARDWARE Hardware,
- IN gctPOINTER Logical,
- IN gctPOINTER MtlbLogical,
- IN gctUINT32 Offset,
- IN OUT gctSIZE_T * Bytes,
- OUT gctSIZE_T * WaitLinkOffset,
- OUT gctSIZE_T * WaitLinkBytes
- );
- #endif
- /* Get idle register. */
- gceSTATUS
- gckHARDWARE_GetIdle(
- IN gckHARDWARE Hardware,
- IN gctBOOL Wait,
- OUT gctUINT32 * Data
- );
- /* Flush the caches. */
- gceSTATUS
- gckHARDWARE_Flush(
- IN gckHARDWARE Hardware,
- IN gceKERNEL_FLUSH Flush,
- IN gctPOINTER Logical,
- IN OUT gctUINT32 * Bytes
- );
- /* Enable/disable fast clear. */
- gceSTATUS
- gckHARDWARE_SetFastClear(
- IN gckHARDWARE Hardware,
- IN gctINT Enable,
- IN gctINT Compression
- );
- gceSTATUS
- gckHARDWARE_ReadInterrupt(
- IN gckHARDWARE Hardware,
- OUT gctUINT32_PTR IDs
- );
- /* Power management. */
- gceSTATUS
- gckHARDWARE_SetPowerManagementState(
- IN gckHARDWARE Hardware,
- IN gceCHIPPOWERSTATE State
- );
- gceSTATUS
- gckHARDWARE_QueryPowerManagementState(
- IN gckHARDWARE Hardware,
- OUT gceCHIPPOWERSTATE* State
- );
- gceSTATUS
- gckHARDWARE_SetPowerManagement(
- IN gckHARDWARE Hardware,
- IN gctBOOL PowerManagement
- );
- gceSTATUS
- gckHARDWARE_SetGpuProfiler(
- IN gckHARDWARE Hardware,
- IN gctBOOL GpuProfiler
- );
- #if gcdENABLE_FSCALE_VAL_ADJUST
- gceSTATUS
- gckHARDWARE_SetFscaleValue(
- IN gckHARDWARE Hardware,
- IN gctUINT32 FscaleValue
- );
- gceSTATUS
- gckHARDWARE_GetFscaleValue(
- IN gckHARDWARE Hardware,
- IN gctUINT * FscaleValue,
- IN gctUINT * MinFscaleValue,
- IN gctUINT * MaxFscaleValue
- );
- gceSTATUS
- gckHARDWARE_SetMinFscaleValue(
- IN gckHARDWARE Hardware,
- IN gctUINT MinFscaleValue
- );
- #endif
- #if gcdPOWEROFF_TIMEOUT
- gceSTATUS
- gckHARDWARE_SetPowerOffTimeout(
- IN gckHARDWARE Hardware,
- IN gctUINT32 Timeout
- );
- gceSTATUS
- gckHARDWARE_QueryPowerOffTimeout(
- IN gckHARDWARE Hardware,
- OUT gctUINT32* Timeout
- );
- #endif
- /* Profile 2D Engine. */
- gceSTATUS
- gckHARDWARE_ProfileEngine2D(
- IN gckHARDWARE Hardware,
- OUT gcs2D_PROFILE_PTR Profile
- );
- gceSTATUS
- gckHARDWARE_InitializeHardware(
- IN gckHARDWARE Hardware
- );
- gceSTATUS
- gckHARDWARE_Reset(
- IN gckHARDWARE Hardware
- );
- typedef gceSTATUS (*gctISRMANAGERFUNC)(gctPOINTER Context);
- gceSTATUS
- gckHARDWARE_SetIsrManager(
- IN gckHARDWARE Hardware,
- IN gctISRMANAGERFUNC StartIsr,
- IN gctISRMANAGERFUNC StopIsr,
- IN gctPOINTER Context
- );
- /* Start a composition. */
- gceSTATUS
- gckHARDWARE_Compose(
- IN gckHARDWARE Hardware,
- IN gctUINT32 ProcessID,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical,
- IN gctSIZE_T Offset,
- IN gctSIZE_T Size,
- IN gctUINT8 EventID
- );
- /* Check for Hardware features. */
- gceSTATUS
- gckHARDWARE_IsFeatureAvailable(
- IN gckHARDWARE Hardware,
- IN gceFEATURE Feature
- );
- gceSTATUS
- gckHARDWARE_DumpMMUException(
- IN gckHARDWARE Hardware
- );
- gceSTATUS
- gckHARDWARE_DumpGPUState(
- IN gckHARDWARE Hardware
- );
- gceSTATUS
- gckHARDWARE_InitDVFS(
- IN gckHARDWARE Hardware
- );
- gceSTATUS
- gckHARDWARE_QueryLoad(
- IN gckHARDWARE Hardware,
- OUT gctUINT32 * Load
- );
- gceSTATUS
- gckHARDWARE_SetDVFSPeroid(
- IN gckHARDWARE Hardware,
- IN gctUINT32 Frequency
- );
- gceSTATUS
- gckHARDWARE_PrepareFunctions(
- gckHARDWARE Hardware
- );
- gceSTATUS
- gckHARDWARE_SetMMUStates(
- IN gckHARDWARE Hardware,
- IN gctPOINTER MtlbAddress,
- IN gceMMU_MODE Mode,
- IN gctPOINTER SafeAddress,
- IN gctPOINTER Logical,
- IN OUT gctUINT32 * Bytes
- );
- #if !gcdENABLE_VG
- /******************************************************************************\
- ***************************** gckINTERRUPT Object ******************************
- \******************************************************************************/
- typedef struct _gckINTERRUPT * gckINTERRUPT;
- typedef gceSTATUS (* gctINTERRUPT_HANDLER)(
- IN gckKERNEL Kernel
- );
- gceSTATUS
- gckINTERRUPT_Construct(
- IN gckKERNEL Kernel,
- OUT gckINTERRUPT * Interrupt
- );
- gceSTATUS
- gckINTERRUPT_Destroy(
- IN gckINTERRUPT Interrupt
- );
- gceSTATUS
- gckINTERRUPT_SetHandler(
- IN gckINTERRUPT Interrupt,
- IN OUT gctINT32_PTR Id,
- IN gctINTERRUPT_HANDLER Handler
- );
- gceSTATUS
- gckINTERRUPT_Notify(
- IN gckINTERRUPT Interrupt,
- IN gctBOOL Valid
- );
- #endif
- /******************************************************************************\
- ******************************** gckEVENT Object *******************************
- \******************************************************************************/
- typedef struct _gckEVENT * gckEVENT;
- /* Construct a new gckEVENT object. */
- gceSTATUS
- gckEVENT_Construct(
- IN gckKERNEL Kernel,
- OUT gckEVENT * Event
- );
- /* Destroy an gckEVENT object. */
- gceSTATUS
- gckEVENT_Destroy(
- IN gckEVENT Event
- );
- /* Reserve the next available hardware event. */
- #if gcdMULTI_GPU
- gceSTATUS
- gckEVENT_GetEvent(
- IN gckEVENT Event,
- IN gctBOOL Wait,
- OUT gctUINT8 * EventID,
- IN gceKERNEL_WHERE Source,
- IN gceCORE_3D_MASK ChipEnable
- );
- #else
- gceSTATUS
- gckEVENT_GetEvent(
- IN gckEVENT Event,
- IN gctBOOL Wait,
- OUT gctUINT8 * EventID,
- IN gceKERNEL_WHERE Source
- );
- #endif
- /* Add a new event to the list of events. */
- gceSTATUS
- gckEVENT_AddList(
- IN gckEVENT Event,
- IN gcsHAL_INTERFACE_PTR Interface,
- IN gceKERNEL_WHERE FromWhere,
- IN gctBOOL AllocateAllowed,
- IN gctBOOL FromKernel
- );
- /* Schedule a FreeNonPagedMemory event. */
- gceSTATUS
- gckEVENT_FreeNonPagedMemory(
- IN gckEVENT Event,
- IN gctSIZE_T Bytes,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical,
- IN gceKERNEL_WHERE FromWhere
- );
- /* Schedule a FreeContiguousMemory event. */
- gceSTATUS
- gckEVENT_FreeContiguousMemory(
- IN gckEVENT Event,
- IN gctSIZE_T Bytes,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical,
- IN gceKERNEL_WHERE FromWhere
- );
- /* Schedule a FreeVideoMemory event. */
- gceSTATUS
- gckEVENT_FreeVideoMemory(
- IN gckEVENT Event,
- IN gcuVIDMEM_NODE_PTR VideoMemory,
- IN gceKERNEL_WHERE FromWhere
- );
- /* Schedule a signal event. */
- gceSTATUS
- gckEVENT_Signal(
- IN gckEVENT Event,
- IN gctSIGNAL Signal,
- IN gceKERNEL_WHERE FromWhere
- );
- /* Schedule an Unlock event. */
- gceSTATUS
- gckEVENT_Unlock(
- IN gckEVENT Event,
- IN gceKERNEL_WHERE FromWhere,
- IN gctPOINTER Node,
- IN gceSURF_TYPE Type
- );
- gceSTATUS
- gckEVENT_CommitDone(
- IN gckEVENT Event,
- IN gceKERNEL_WHERE FromWhere
- );
- /* Schedule a FreeVirtualCommandBuffer event. */
- gceSTATUS
- gckEVENT_DestroyVirtualCommandBuffer(
- IN gckEVENT Event,
- IN gctSIZE_T Bytes,
- IN gctPHYS_ADDR Physical,
- IN gctPOINTER Logical,
- IN gceKERNEL_WHERE FromWhere
- );
- #if gcdMULTI_GPU
- gceSTATUS
- gckEVENT_Submit(
- IN gckEVENT Event,
- IN gctBOOL Wait,
- IN gctBOOL FromPower,
- IN gceCORE_3D_MASK ChipEnable
- );
- #else
- gceSTATUS
- gckEVENT_Submit(
- IN gckEVENT Event,
- IN gctBOOL Wait,
- IN gctBOOL FromPower
- );
- #endif
- #if gcdMULTI_GPU
- gceSTATUS
- gckEVENT_Commit(
- IN gckEVENT Event,
- IN gcsQUEUE_PTR Queue,
- IN gceCORE_3D_MASK ChipEnable
- );
- #else
- gceSTATUS
- gckEVENT_Commit(
- IN gckEVENT Event,
- IN gcsQUEUE_PTR Queue
- );
- #endif
- /* Schedule a composition event. */
- gceSTATUS
- gckEVENT_Compose(
- IN gckEVENT Event,
- IN gcsHAL_COMPOSE_PTR Info
- );
- /* Event callback routine. */
- gceSTATUS
- gckEVENT_Notify(
- IN gckEVENT Event,
- IN gctUINT32 IDs
- );
- /* Event callback routine. */
- gceSTATUS
- gckEVENT_Interrupt(
- IN gckEVENT Event,
- #if gcdMULTI_GPU
- IN gctUINT CoreId,
- #endif
- IN gctUINT32 IDs
- );
- gceSTATUS
- gckEVENT_Dump(
- IN gckEVENT Event
- );
- /******************************************************************************\
- ******************************* gckCOMMAND Object ******************************
- \******************************************************************************/
- typedef struct _gckCOMMAND * gckCOMMAND;
- /* Construct a new gckCOMMAND object. */
- gceSTATUS
- gckCOMMAND_Construct(
- IN gckKERNEL Kernel,
- OUT gckCOMMAND * Command
- );
- /* Destroy an gckCOMMAND object. */
- gceSTATUS
- gckCOMMAND_Destroy(
- IN gckCOMMAND Command
- );
- /* Acquire command queue synchronization objects. */
- gceSTATUS
- gckCOMMAND_EnterCommit(
- IN gckCOMMAND Command,
- IN gctBOOL FromPower
- );
- /* Release command queue synchronization objects. */
- gceSTATUS
- gckCOMMAND_ExitCommit(
- IN gckCOMMAND Command,
- IN gctBOOL FromPower
- );
- /* Start the command queue. */
- gceSTATUS
- gckCOMMAND_Start(
- IN gckCOMMAND Command
- );
- /* Stop the command queue. */
- gceSTATUS
- gckCOMMAND_Stop(
- IN gckCOMMAND Command,
- IN gctBOOL FromRecovery
- );
- #if gcdMULTI_GPU
- /* Commit a buffer to the command queue. */
- gceSTATUS
- gckCOMMAND_Commit(
- IN gckCOMMAND Command,
- IN gckCONTEXT Context,
- IN gcoCMDBUF CommandBuffer,
- IN gcsSTATE_DELTA_PTR StateDelta,
- IN gcsQUEUE_PTR EventQueue,
- IN gctUINT32 ProcessID,
- IN gceCORE_3D_MASK ChipEnable
- );
- #else
- gceSTATUS
- gckCOMMAND_Commit(
- IN gckCOMMAND Command,
- IN gckCONTEXT Context,
- IN gcoCMDBUF CommandBuffer,
- IN gcsSTATE_DELTA_PTR StateDelta,
- IN gcsQUEUE_PTR EventQueue,
- IN gctUINT32 ProcessID
- );
- #endif
- /* Reserve space in the command buffer. */
- gceSTATUS
- gckCOMMAND_Reserve(
- IN gckCOMMAND Command,
- IN gctUINT32 RequestedBytes,
- OUT gctPOINTER * Buffer,
- OUT gctUINT32 * BufferSize
- );
- /* Execute reserved space in the command buffer. */
- gceSTATUS
- gckCOMMAND_Execute(
- IN gckCOMMAND Command,
- IN gctUINT32 RequstedBytes
- );
- /* Stall the command queue. */
- #if gcdMULTI_GPU
- gceSTATUS
- gckCOMMAND_Stall(
- IN gckCOMMAND Command,
- IN gctBOOL FromPower,
- IN gceCORE_3D_MASK ChipEnable
- );
- #else
- gceSTATUS
- gckCOMMAND_Stall(
- IN gckCOMMAND Command,
- IN gctBOOL FromPower
- );
- #endif
- /* Attach user process. */
- gceSTATUS
- gckCOMMAND_Attach(
- IN gckCOMMAND Command,
- OUT gckCONTEXT * Context,
- OUT gctSIZE_T * StateCount,
- IN gctUINT32 ProcessID
- );
- /* Detach user process. */
- gceSTATUS
- gckCOMMAND_Detach(
- IN gckCOMMAND Command,
- IN gckCONTEXT Context
- );
- /* Dump command buffer being executed by GPU. */
- gceSTATUS
- gckCOMMAND_DumpExecutingBuffer(
- IN gckCOMMAND Command
- );
- /* Whether a kernel command buffer address. */
- gceSTATUS
- gckCOMMAND_AddressInKernelCommandBuffer(
- IN gckCOMMAND Command,
- IN gctUINT32 Address,
- OUT gctBOOL *In
- );
- /******************************************************************************\
- ********************************* gckMMU Object ********************************
- \******************************************************************************/
- typedef struct _gckMMU * gckMMU;
- /* Construct a new gckMMU object. */
- gceSTATUS
- gckMMU_Construct(
- IN gckKERNEL Kernel,
- IN gctSIZE_T MmuSize,
- OUT gckMMU * Mmu
- );
- /* Destroy an gckMMU object. */
- gceSTATUS
- gckMMU_Destroy(
- IN gckMMU Mmu
- );
- /* Allocate pages inside the MMU. */
- gceSTATUS
- gckMMU_AllocatePages(
- IN gckMMU Mmu,
- IN gctSIZE_T PageCount,
- OUT gctPOINTER * PageTable,
- OUT gctUINT32 * Address
- );
- gceSTATUS
- gckMMU_AllocatePagesEx(
- IN gckMMU Mmu,
- IN gctSIZE_T PageCount,
- IN gceSURF_TYPE Type,
- OUT gctPOINTER * PageTable,
- OUT gctUINT32 * Address
- );
- /* Remove a page table from the MMU. */
- gceSTATUS
- gckMMU_FreePages(
- IN gckMMU Mmu,
- IN gctPOINTER PageTable,
- IN gctSIZE_T PageCount
- );
- /* Set the MMU page with info. */
- gceSTATUS
- gckMMU_SetPage(
- IN gckMMU Mmu,
- IN gctUINT32 PageAddress,
- IN gctUINT32 *PageEntry
- );
- gceSTATUS
- gckMMU_Flush(
- IN gckMMU Mmu,
- IN gceSURF_TYPE Type
- );
- gceSTATUS
- gckMMU_DumpPageTableEntry(
- IN gckMMU Mmu,
- IN gctUINT32 Address
- );
- #if VIVANTE_PROFILER
- gceSTATUS
- gckHARDWARE_QueryProfileRegisters(
- IN gckHARDWARE Hardware,
- IN gctBOOL Reset,
- OUT gcsPROFILER_COUNTERS * Counters
- );
- #endif
- #if VIVANTE_PROFILER_CONTEXT
- gceSTATUS
- gckHARDWARE_QueryContextProfile(
- IN gckHARDWARE Hardware,
- IN gctBOOL Reset,
- IN gckCONTEXT Context,
- OUT gcsPROFILER_COUNTERS * Counters
- );
- gceSTATUS
- gckHARDWARE_UpdateContextProfile(
- IN gckHARDWARE Hardware,
- IN gckCONTEXT Context
- );
- #endif
- #if VIVANTE_PROFILER_NEW
- gceSTATUS
- gckHARDWARE_InitProfiler(
- IN gckHARDWARE Hardware
- );
- #endif
- gceSTATUS
- gckOS_SignalQueryHardware(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- OUT gckHARDWARE * Hardware
- );
- gceSTATUS
- gckOS_SignalSetHardware(
- IN gckOS Os,
- IN gctSIGNAL Signal,
- gckHARDWARE Hardware
- );
- gceSTATUS
- gckOS_DetectProcessByName(
- IN gctCONST_POINTER Name
- );
- void
- gckOS_DumpParam(
- void
- );
- #ifdef __cplusplus
- }
- #endif
- #if gcdENABLE_VG
- #include "gc_hal_vg.h"
- #endif
- #endif /* __gc_hal_h_ */
|