1 /*------------------------------------------------------------------------------*/ 2 /* gx_CTR.h */ 3 /* nngx interface definitions */ 4 /* */ 5 /* Copyright (c) 2009, Digital Media Professional. All rights reserved. */ 6 /* */ 7 /*------------------------------------------------------------------------------*/ 8 9 #ifndef _NN_GX_CTR_H_ 10 #define _NN_GX_CTR_H_ 11 12 #include <GLES2/gl2.h> 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #if defined(WIN32) || defined(__VC32__) /* Win32 */ 19 # if defined (NNGX_EXPORTS) 20 # define NNGX_APICALL __declspec(dllexport) 21 # else 22 # define NNGX_APICALL __declspec(dllimport) 23 # endif 24 #elif defined (__ARMCC_VERSION) /* ADS */ 25 # define NNGX_APICALL 26 #elif defined (__SYMBIAN32__) && defined (__GCC32__) /* Symbian GCC */ 27 # define NNGX_APICALL __declspec(dllexport) 28 #elif defined (__GNUC__) /* GCC dependencies (kludge) */ 29 # define NNGX_APICALL 30 #endif 31 32 #if !defined (NNGX_APICALL) 33 # error Unsupported platform! 34 #endif 35 36 #define NNGX_APIENTRY 37 38 /*------------------------------------------------------------------------* 39 * NNGX Initialize API 40 *------------------------------------------------------------------------*/ 41 /* parameter for allocator and deallocator */ 42 /* allocation area */ 43 #define NN_GX_MEM_FCRAM 0x00010000 44 #define NN_GX_MEM_VRAMA 0x00020000 45 #define NN_GX_MEM_VRAMB 0x00030000 46 47 /* allocation usage */ 48 #define NN_GX_MEM_SYSTEM 0x0100 49 #define NN_GX_MEM_TEXTURE 0x0101 50 #define NN_GX_MEM_VERTEXBUFFER 0x0102 51 #define NN_GX_MEM_RENDERBUFFER 0x0103 52 #define NN_GX_MEM_DISPLAYBUFFER 0x0104 53 #define NN_GX_MEM_COMMANDBUFFER 0x0105 54 55 NNGX_APICALL GLboolean NNGX_APIENTRY nngxInitialize(GLvoid* (*allocator)(GLenum, GLenum, GLuint, GLsizei), void (*deallocator)(GLenum, GLenum, GLuint, GLvoid*)); 56 NNGX_APICALL void NNGX_APIENTRY nngxFinalize(void); 57 NNGX_APICALL void NNGX_APIENTRY nngxGetAllocator(GLvoid* (**allocator)(GLenum, GLenum, GLuint, GLsizei), void (**deallocator)(GLenum, GLenum, GLuint, GLvoid*)); 58 59 /*------------------------------------------------------------------------* 60 * NNGX Execution control API 61 *------------------------------------------------------------------------*/ 62 /* command list object parameter */ 63 #define NN_GX_CMDLIST_RUN_MODE 0x0200 64 #define NN_GX_CMDLIST_IS_RUNNING 0x0201 65 #define NN_GX_CMDLIST_USED_BUFSIZE 0x0202 66 #define NN_GX_CMDLIST_USED_REQCOUNT 0x0203 67 #define NN_GX_CMDLIST_MAX_BUFSIZE 0x0204 68 #define NN_GX_CMDLIST_MAX_REQCOUNT 0x0205 69 #define NN_GX_CMDLIST_TOP_BUFADDR 0x0206 70 #define NN_GX_CMDLIST_BINDING 0x0207 71 #define NN_GX_CMDLIST_CURRENT_BUFADDR 0x0208 72 #define NN_GX_CMDLIST_RUN_BUFSIZE 0x0209 73 #define NN_GX_CMDLIST_RUN_REQCOUNT 0x020a 74 #define NN_GX_CMDLIST_TOP_REQADDR 0x020b 75 #define NN_GX_CMDLIST_NEXT_REQTYPE 0x020c 76 #define NN_GX_CMDLIST_NEXT_REQINFO 0x020d 77 #define NN_GX_CMDLIST_HW_STATE 0x020e 78 79 /* parameter for run mode */ 80 #define NN_GX_CMDLIST_SERIAL_RUN 0x0300 81 #define NN_GX_CMDLIST_PARALLEL_RUN 0x0301 82 #define NN_GX_CMDLIST_SYNC_RUN 0x0302 83 84 /* request type */ 85 #define NN_GX_CMDLIST_REQTYPE_DMA 0x0310 86 #define NN_GX_CMDLIST_REQTYPE_RUN3D 0x0311 87 #define NN_GX_CMDLIST_REQTYPE_FILLMEM 0x0312 88 #define NN_GX_CMDLIST_REQTYPE_POSTTRANS 0x0313 89 #define NN_GX_CMDLIST_REQTYPE_COPYTEX 0x0314 90 91 /* display id */ 92 #define NN_GX_DISPLAY0 0x0400 93 #define NN_GX_DISPLAY1 0x0401 94 #define NN_GX_DISPLAY_BOTH 0x0402 95 #define NN_GX_DISPLAY0_EXT 0x0410 96 97 NNGX_APICALL void NNGX_APIENTRY nngxGenCmdlists(GLsizei n, GLuint* cmdlists); 98 NNGX_APICALL void NNGX_APIENTRY nngxDeleteCmdlists(GLsizei n, const GLuint* cmdlists); 99 NNGX_APICALL void NNGX_APIENTRY nngxBindCmdlist(GLuint cmdlist); 100 NNGX_APICALL void NNGX_APIENTRY nngxCmdlistStorage(GLsizei bufsize, GLsizei requestcount); 101 NNGX_APICALL void NNGX_APIENTRY nngxRunCmdlist(void); 102 NNGX_APICALL void NNGX_APIENTRY nngxStopCmdlist(void); 103 NNGX_APICALL void NNGX_APIENTRY nngxReserveStopCmdlist(GLint id); 104 NNGX_APICALL void NNGX_APIENTRY nngxSplitDrawCmdlist(void); 105 NNGX_APICALL void NNGX_APIENTRY nngxClearCmdlist(void); 106 NNGX_APICALL void NNGX_APIENTRY nngxSetCmdlistCallback(void (*func)(GLint)); 107 NNGX_APICALL void NNGX_APIENTRY nngxEnableCmdlistCallback(GLint id); 108 NNGX_APICALL void NNGX_APIENTRY nngxDisableCmdlistCallback(GLint id); 109 NNGX_APICALL void NNGX_APIENTRY nngxSetCmdlistParameteri(GLenum pname, GLint param); 110 NNGX_APICALL void NNGX_APIENTRY nngxGetCmdlistParameteri(GLenum pname, GLint* param); 111 NNGX_APICALL GLint NNGX_APIENTRY nngxCheckVSync(GLenum display); 112 NNGX_APICALL void NNGX_APIENTRY nngxWaitVSync(GLenum display); 113 NNGX_APICALL void NNGX_APIENTRY nngxSetVSyncCallback(GLenum display, void (*func)(GLenum)); 114 NNGX_APICALL void NNGX_APIENTRY nngxWaitCmdlistDone(void); 115 NNGX_APICALL void NNGX_APIENTRY nngxAddVramDmaCommand(const GLvoid* srcaddr, GLvoid* dstaddr, GLsizei size); 116 NNGX_APICALL void NNGX_APIENTRY nngxClearFillCmdlist(GLuint data); 117 NNGX_APICALL void NNGX_APIENTRY nngxSetTimeout(GLint64EXT time, void (*callback)(void)); 118 NNGX_APICALL void NNGX_APIENTRY nngxSetGasAutoAccumulationUpdate(GLint id); 119 NNGX_APICALL void NNGX_APIENTRY nngxAddL2BTransferCommand(const GLvoid* srcaddr, GLvoid* dstaddr, GLsizei width, GLsizei height, GLenum format, GLsizei blocksize); 120 NNGX_APICALL void NNGX_APIENTRY nngxAddB2LTransferCommand(const GLvoid* srcaddr, GLsizei srcwidth, GLsizei srcheight, GLenum srcformat, GLvoid* dstaddr, GLsizei dstwidth, GLsizei dstheight, GLenum dstformat, GLenum aamode, GLboolean yflip, GLsizei blocksize); 121 NNGX_APICALL void NNGX_APIENTRY nngxAddBlockImageCopyCommand(const GLvoid* srcaddr, GLsizei srcunit, GLsizei srcinterval, GLvoid* dstaddr, GLsizei dstunit, GLsizei dstinterval, GLsizei totalsize); 122 NNGX_APICALL void NNGX_APIENTRY nngxAddMemoryFillCommand(GLvoid* startaddr0, GLsizei size0, GLuint data0, GLsizei width0, GLvoid* startaddr1, GLsizei size1, GLuint data1, GLsizei width1); 123 NNGX_APICALL void NNGX_APIENTRY nngxFlush3DCommand(void); 124 125 /*------------------------------------------------------------------------* 126 * NNGX Display control API 127 *------------------------------------------------------------------------*/ 128 /* parameter for antialiase mode */ 129 #define NN_GX_ANTIALIASE_NOT_USED 0x0500 130 #define NN_GX_ANTIALIASE_2x1 0x0501 131 #define NN_GX_ANTIALIASE_2x2 0x0502 132 133 /* display buffer object parameter */ 134 #define NN_GX_DISPLAYBUFFER_ADDRESS 0x0600 135 #define NN_GX_DISPLAYBUFFER_FORMAT 0x0601 136 #define NN_GX_DISPLAYBUFFER_WIDTH 0x0602 137 #define NN_GX_DISPLAYBUFFER_HEIGHT 0x0603 138 139 /* display mode */ 140 #define NN_GX_DISPLAYMODE_NORMAL 0x0700 141 #define NN_GX_DISPLAYMODE_RESERVED 0x0701 142 #define NN_GX_DISPLAYMODE_STEREO 0x0702 143 144 /* display id aliase */ 145 #define NN_GX_DISPLAY0_LEFT NN_GX_DISPLAY0 146 #define NN_GX_DISPLAY0_RIGHT NN_GX_DISPLAY0_EXT 147 148 NNGX_APICALL void NNGX_APIENTRY nngxGenDisplaybuffers(GLsizei n, GLuint* buffers); 149 NNGX_APICALL void NNGX_APIENTRY nngxDeleteDisplaybuffers(GLsizei n, GLuint* buffers); 150 NNGX_APICALL void NNGX_APIENTRY nngxActiveDisplay(GLenum display); 151 NNGX_APICALL void NNGX_APIENTRY nngxBindDisplaybuffer(GLuint buffer); 152 NNGX_APICALL void NNGX_APIENTRY nngxDisplaybufferStorage(GLenum format, GLsizei width, GLsizei height, GLenum area); 153 NNGX_APICALL void NNGX_APIENTRY nngxDisplayEnv(GLint displayx, GLint displayy); 154 NNGX_APICALL void NNGX_APIENTRY nngxTransferRenderImage(GLuint buffer, GLenum mode, GLboolean yflip, GLint colorx, GLint colory); 155 NNGX_APICALL void NNGX_APIENTRY nngxSwapBuffers(GLenum display); 156 NNGX_APICALL void NNGX_APIENTRY nngxGetDisplaybufferParameteri(GLenum pname, GLint* param); 157 NNGX_APICALL void NNGX_APIENTRY nngxSetDisplayMode(GLenum mode); 158 NNGX_APICALL void NNGX_APIENTRY nngxTransferLinearImage(const GLvoid* srcaddr, GLuint dstid, GLenum target); 159 NNGX_APICALL void NNGX_APIENTRY nngxFilterBlockImage(const GLvoid* srcaddr, GLvoid* dstaddr, GLsizei width, GLsizei height, GLenum format); 160 161 /*------------------------------------------------------------------------* 162 * NNGX Command cache API 163 *------------------------------------------------------------------------*/ 164 /* parameter for command state */ 165 #define NN_GX_STATE_SHADERBINARY 0x00000001 166 #define NN_GX_STATE_SHADERPROGRAM 0x00000002 167 #define NN_GX_STATE_SHADERMODE 0x00000004 168 #define NN_GX_STATE_SHADERFLOAT 0x00000008 169 #define NN_GX_STATE_VSUNIFORM 0x00000010 170 #define NN_GX_STATE_FSUNIFORM 0x00000020 171 #define NN_GX_STATE_LUT 0x00000040 172 #define NN_GX_STATE_TEXTURE 0x00000080 173 #define NN_GX_STATE_FRAMEBUFFER 0x00000100 174 #define NN_GX_STATE_VERTEX 0x00000200 175 #define NN_GX_STATE_TRIOFFSET 0x00000400 176 #define NN_GX_STATE_FBACCESS 0x00000800 177 #define NN_GX_STATE_SCISSOR 0x00001000 178 #define NN_GX_STATE_OTHERS 0x00002000 179 #define NN_GX_STATE_ALL 0x00003fff 180 181 /* parameter for command generation mode */ 182 #define NN_GX_CMDGEN_MODE_CONDITIONAL 0x0800 183 #define NN_GX_CMDGEN_MODE_UNCONDITIONAL 0x0801 184 185 NNGX_APICALL void NNGX_APIENTRY nngxStartCmdlistSave(void); 186 NNGX_APICALL void NNGX_APIENTRY nngxStopCmdlistSave(GLuint* bufferoffset, GLsizei* buffersize, GLuint* requestid, GLsizei* requestsize); 187 NNGX_APICALL void NNGX_APIENTRY nngxUseSavedCmdlist(GLuint cmdlist, GLuint bufferoffset, GLsizei buffersize, GLuint requestid, GLsizei requestsize, GLbitfield statemask, GLboolean copycmd); 188 NNGX_APICALL GLsizei NNGX_APIENTRY nngxExportCmdlist(GLuint cmdlist, GLuint bufferoffset, GLsizei buffersize, GLuint requestid, GLsizei requestsize, GLsizei datasize, GLvoid* data); 189 NNGX_APICALL void NNGX_APIENTRY nngxImportCmdlist(GLuint cmdlist, GLvoid* data, GLsizei datasize); 190 NNGX_APICALL void NNGX_APIENTRY nngxCopyCmdlist(GLuint scmdlist, GLuint dcmdlist); 191 NNGX_APICALL void NNGX_APIENTRY nngxValidateState(GLbitfield statemask, GLboolean drawelements); 192 NNGX_APICALL void NNGX_APIENTRY nngxUpdateState(GLbitfield statemask); 193 NNGX_APICALL void NNGX_APIENTRY nngxGetExportedCmdlistInfo(GLvoid* data, GLsizei* buffersize, GLsizei* requestsize, GLuint* bufferoffset); 194 NNGX_APICALL void NNGX_APIENTRY nngxSetCommandGenerationMode(GLenum mode); 195 NNGX_APICALL void NNGX_APIENTRY nngxGetCommandGenerationMode(GLenum* mode); 196 NNGX_APICALL void NNGX_APIENTRY nngxAdd3DCommand(const GLvoid* bufferaddr, GLsizei buffersize, GLboolean copycmd); 197 NNGX_APICALL void NNGX_APIENTRY nngxAddCmdlist(GLuint cmdlist); 198 NNGX_APICALL void NNGX_APIENTRY nngxGetUpdatedState(GLbitfield* statemask); 199 NNGX_APICALL void NNGX_APIENTRY nngxInvalidateState(GLbitfield statemask); 200 NNGX_APICALL void NNGX_APIENTRY nngxMoveCommandbufferPointer(GLint offset); 201 NNGX_APICALL void NNGX_APIENTRY nngxSuppressCommandGeneration(GLbitfield statemask); 202 203 #ifdef __cplusplus 204 } 205 #endif 206 207 #endif /* _NN_GX_CTR_H_ */ 208