/*
 |            file: bufobj.c
 |        language: 1	(ANSI C)
 |     produced by: GNU C 4.2.1
 |    compiler dir: /OST/GraphicsGFX/SDP3430/Source/SGX12.19/GFX_Linux_DDK/src/eurasia/eurasiacon/opengles2
 | program counter: <0x7970;0x8570>
 */
typedef unsigned int size_t

typedef long long int __quad_t

typedef long int __off_t

typedef __quad_t __off64_t

struct _IO_FILE {
	int _flags // @0
	char* _IO_read_ptr // @4
	char* _IO_read_end // @8
	char* _IO_read_base // @c
	char* _IO_write_base // @10
	char* _IO_write_ptr // @14
	char* _IO_write_end // @18
	char* _IO_buf_base // @1c
	char* _IO_buf_end // @20
	char* _IO_save_base // @24
	char* _IO_backup_base // @28
	char* _IO_save_end // @2c
	struct _IO_marker* _markers // @30
	struct _IO_FILE* _chain // @34
	int _fileno // @38
	int _flags2 // @3c
	__off_t _old_offset // @40
	short unsigned int _cur_column // @44
	signed char _vtable_offset // @46
	char[1] _shortbuf // @47
	_IO_lock_t* _lock // @48
	__off64_t _offset // @50
	void* __pad1 // @58
	void* __pad2 // @5c
	void* __pad3 // @60
	void* __pad4 // @64
	size_t __pad5 // @68
	int _mode // @6c
	char[40] _unused2 // @70
}

typedef void _IO_lock_t

struct _IO_marker {
	struct _IO_marker* _next // @0
	struct _IO_FILE* _sbuf // @4
	int _pos // @8
}

typedef unsigned char IMG_UINT8

typedef char IMG_CHAR

typedef short unsigned int IMG_UINT16

typedef long unsigned int IMG_UINT32

typedef long unsigned int* IMG_PUINT32

typedef long int IMG_INT32

typedef float IMG_FLOAT

enum tag_img_bool {
	IMG_FALSE = 0; //0x0
	IMG_TRUE = 1; //0x1
	IMG_FORCE_ALIGN = 2147483647; //0x7fffffff
}

typedef enum tag_img_bool IMG_BOOL

typedef void IMG_VOID

typedef void* IMG_PVOID

typedef IMG_PVOID IMG_HANDLE

typedef struct {
	IMG_UINT32 uiAddr // @0
} IMG_CPU_PHYADDR

typedef struct {
	IMG_UINT32 uiAddr // @0
} IMG_DEV_VIRTADDR

enum _PVRSRV_ERROR_ {
	PVRSRV_OK = 0; //0x0
	PVRSRV_ERROR_GENERIC = 1; //0x1
	PVRSRV_ERROR_OUT_OF_MEMORY = 2; //0x2
	PVRSRV_ERROR_TOO_MANY_BUFFERS = 3; //0x3
	PVRSRV_ERROR_SYMBOL_NOT_FOUND = 4; //0x4
	PVRSRV_ERROR_OUT_OF_HSPACE = 5; //0x5
	PVRSRV_ERROR_INVALID_PARAMS = 6; //0x6
	PVRSRV_ERROR_TILE_MAP_FAILED = 7; //0x7
	PVRSRV_ERROR_INIT_FAILURE = 8; //0x8
	PVRSRV_ERROR_CANT_REGISTER_CALLBACK = 9; //0x9
	PVRSRV_ERROR_INVALID_DEVICE = 10; //0xa
	PVRSRV_ERROR_NOT_OWNER = 11; //0xb
	PVRSRV_ERROR_BAD_MAPPING = 12; //0xc
	PVRSRV_ERROR_TIMEOUT = 13; //0xd
	PVRSRV_ERROR_NO_PRIMARY = 14; //0xe
	PVRSRV_ERROR_FLIP_CHAIN_EXISTS = 15; //0xf
	PVRSRV_ERROR_CANNOT_ACQUIRE_SYSDATA = 16; //0x10
	PVRSRV_ERROR_SCENE_INVALID = 17; //0x11
	PVRSRV_ERROR_STREAM_ERROR = 18; //0x12
	PVRSRV_ERROR_INVALID_INTERRUPT = 19; //0x13
	PVRSRV_ERROR_FAILED_DEPENDENCIES = 20; //0x14
	PVRSRV_ERROR_CMD_NOT_PROCESSED = 21; //0x15
	PVRSRV_ERROR_CMD_TOO_BIG = 22; //0x16
	PVRSRV_ERROR_DEVICE_REGISTER_FAILED = 23; //0x17
	PVRSRV_ERROR_FIFO_SPACE = 24; //0x18
	PVRSRV_ERROR_TA_RECOVERY = 25; //0x19
	PVRSRV_ERROR_INDOSORLOWPOWER = 26; //0x1a
	PVRSRV_ERROR_TOOMANYBUFFERS = 27; //0x1b
	PVRSRV_ERROR_NOT_SUPPORTED = 28; //0x1c
	PVRSRV_ERROR_PROCESSING_BLOCKED = 29; //0x1d
	PVRSRV_ERROR_CANNOT_FLUSH_QUEUE = 31; //0x1f
	PVRSRV_ERROR_CANNOT_GET_QUEUE_SPACE = 32; //0x20
	PVRSRV_ERROR_CANNOT_GET_RENDERDETAILS = 33; //0x21
	PVRSRV_ERROR_RETRY = 34; //0x22
	PVRSRV_ERROR_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum _PVRSRV_ERROR_ PVRSRV_ERROR

enum _PVRSRV_PIXEL_FORMAT_ {
	PVRSRV_PIXEL_FORMAT_UNKNOWN = 0; //0x0
	PVRSRV_PIXEL_FORMAT_RGB565 = 1; //0x1
	PVRSRV_PIXEL_FORMAT_RGB555 = 2; //0x2
	PVRSRV_PIXEL_FORMAT_RGB888 = 3; //0x3
	PVRSRV_PIXEL_FORMAT_BGR888 = 4; //0x4
	PVRSRV_PIXEL_FORMAT_YUV420 = 5; //0x5
	PVRSRV_PIXEL_FORMAT_YUV444 = 6; //0x6
	PVRSRV_PIXEL_FORMAT_VUY444 = 7; //0x7
	PVRSRV_PIXEL_FORMAT_GREY_SCALE = 8; //0x8
	PVRSRV_PIXEL_FORMAT_YUYV = 9; //0x9
	PVRSRV_PIXEL_FORMAT_YVYU = 10; //0xa
	PVRSRV_PIXEL_FORMAT_UYVY = 11; //0xb
	PVRSRV_PIXEL_FORMAT_VYUY = 12; //0xc
	PVRSRV_PIXEL_FORMAT_PAL12 = 13; //0xd
	PVRSRV_PIXEL_FORMAT_PAL8 = 14; //0xe
	PVRSRV_PIXEL_FORMAT_PAL4 = 15; //0xf
	PVRSRV_PIXEL_FORMAT_PAL2 = 16; //0x10
	PVRSRV_PIXEL_FORMAT_PAL1 = 17; //0x11
	PVRSRV_PIXEL_FORMAT_ARGB1555 = 18; //0x12
	PVRSRV_PIXEL_FORMAT_ARGB4444 = 19; //0x13
	PVRSRV_PIXEL_FORMAT_ARGB8888 = 20; //0x14
	PVRSRV_PIXEL_FORMAT_ABGR8888 = 21; //0x15
	PVRSRV_PIXEL_FORMAT_YV12 = 22; //0x16
	PVRSRV_PIXEL_FORMAT_I420 = 23; //0x17
	PVRSRV_PIXEL_FORMAT_DXT1 = 24; //0x18
	PVRSRV_PIXEL_FORMAT_IMC2 = 25; //0x19
	PVRSRV_PIXEL_FORMAT_G16R16 = 26; //0x1a
	PVRSRV_PIXEL_FORMAT_G16R16F = 27; //0x1b
	PVRSRV_PIXEL_FORMAT_ARGB8332 = 28; //0x1c
	PVRSRV_PIXEL_FORMAT_A2RGB10 = 29; //0x1d
	PVRSRV_PIXEL_FORMAT_A2BGR10 = 30; //0x1e
	PVRSRV_PIXEL_FORMAT_ABGR16 = 31; //0x1f
	PVRSRV_PIXEL_FORMAT_ABGR16F = 32; //0x20
	PVRSRV_PIXEL_FORMAT_ABGR32F = 33; //0x21
	PVRSRV_PIXEL_FORMAT_R32F = 34; //0x22
	PVRSRV_PIXEL_FORMAT_A8 = 35; //0x23
	PVRSRV_PIXEL_FORMAT_L8 = 36; //0x24
	PVRSRV_PIXEL_FORMAT_A8L8 = 37; //0x25
	PVRSRV_PIXEL_FORMAT_L16 = 38; //0x26
	PVRSRV_PIXEL_FORMAT_R16F = 39; //0x27
	PVRSRV_PIXEL_FORMAT_L6V5U5 = 40; //0x28
	PVRSRV_PIXEL_FORMAT_V8U8 = 41; //0x29
	PVRSRV_PIXEL_FORMAT_V16U16 = 42; //0x2a
	PVRSRV_PIXEL_FORMAT_QWVU8888 = 43; //0x2b
	PVRSRV_PIXEL_FORMAT_XLVU8888 = 44; //0x2c
	PVRSRV_PIXEL_FORMAT_QWVU16 = 45; //0x2d
	PVRSRV_PIXEL_FORMAT_D16 = 46; //0x2e
	PVRSRV_PIXEL_FORMAT_D24S8 = 47; //0x2f
	PVRSRV_PIXEL_FORMAT_D24X8 = 48; //0x30
	PVRSRV_PIXEL_FORMAT_D32F = 49; //0x31
	PVRSRV_PIXEL_FORMAT_R8G8_B8G8 = 50; //0x32
	PVRSRV_PIXEL_FORMAT_G8R8_G8B8 = 51; //0x33
	PVRSRV_PIXEL_FORMAT_YUY2 = 52; //0x34
	PVRSRV_PIXEL_FORMAT_DXT23 = 53; //0x35
	PVRSRV_PIXEL_FORMAT_DXT45 = 54; //0x36
	PVRSRV_PIXEL_FORMAT_G32R32F = 55; //0x37
	PVRSRV_PIXEL_FORMAT_NV11 = 56; //0x38
	PVRSRV_PIXEL_FORMAT_NV12 = 57; //0x39
	PVRSRV_PIXEL_FORMAT_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum _PVRSRV_PIXEL_FORMAT_ PVRSRV_PIXEL_FORMAT

enum _PVRSRV_ALPHA_FORMAT_ {
	PVRSRV_ALPHA_FORMAT_UNKNOWN = 0; //0x0
	PVRSRV_ALPHA_FORMAT_PRE = 1; //0x1
	PVRSRV_ALPHA_FORMAT_NONPRE = 2; //0x2
	PVRSRV_ALPHA_FORMAT_MASK = 15; //0xf
}

typedef enum _PVRSRV_ALPHA_FORMAT_ PVRSRV_ALPHA_FORMAT

enum _PVRSRV_COLOURSPACE_FORMAT_ {
	PVRSRV_COLOURSPACE_FORMAT_UNKNOWN = 0; //0x0
	PVRSRV_COLOURSPACE_FORMAT_LINEAR = 65536; //0x10000
	PVRSRV_COLOURSPACE_FORMAT_NONLINEAR = 131072; //0x20000
	PVRSRV_COLOURSPACE_FORMAT_MASK = 983040; //0xf0000
}

typedef enum _PVRSRV_COLOURSPACE_FORMAT_ PVRSRV_COLOURSPACE_FORMAT

struct _PVRSRV_SYNC_DATA_ {
	IMG_UINT32 ui32WriteOpsPending // @0
	volatile IMG_UINT32 ui32WriteOpsComplete // @4
	IMG_UINT32 ui32ReadOpsPending // @8
	volatile IMG_UINT32 ui32ReadOpsComplete // @c
	IMG_UINT32 ui32LastOpDumpVal // @10
	IMG_UINT32 ui32LastReadOpDumpVal // @14
}

typedef struct _PVRSRV_SYNC_DATA_ PVRSRV_SYNC_DATA

struct _PVRSRV_CLIENT_SYNC_INFO_ {
	PVRSRV_SYNC_DATA* psSyncData // @0
	IMG_DEV_VIRTADDR sWriteOpsCompleteDevVAddr // @4
	IMG_DEV_VIRTADDR sReadOpsCompleteDevVAddr // @8
	IMG_HANDLE hMappingInfo // @c
	IMG_HANDLE hKernelSyncInfo // @10
}

typedef struct _PVRSRV_CLIENT_SYNC_INFO_ PVRSRV_CLIENT_SYNC_INFO

struct PVRSRV_RESOURCE_TAG {
	volatile IMG_UINT32 ui32Lock // @0
	IMG_UINT32 ui32ID // @4
}

typedef struct PVRSRV_RESOURCE_TAG PVRSRV_RESOURCE

typedef PVRSRV_RESOURCE PVRSRV_RES_HANDLE

struct _PVRSRV_CONNECTION_ {
	IMG_HANDLE hServices // @0
	IMG_UINT32 ui32ProcessID // @4
}

typedef struct _PVRSRV_CONNECTION_ PVRSRV_CONNECTION

struct _PVRSRV_DEV_DATA_ {
	PVRSRV_CONNECTION sConnection // @0
	IMG_HANDLE hDevCookie // @8
}

typedef struct _PVRSRV_DEV_DATA_ PVRSRV_DEV_DATA

struct _PVRSRV_HWREG_ {
	IMG_UINT32 ui32RegAddr // @0
	IMG_UINT32 ui32RegVal // @4
}

typedef struct _PVRSRV_HWREG_ PVRSRV_HWREG

struct _PVRSRV_CLIENT_MEM_INFO_ {
	IMG_PVOID pvLinAddr // @0
	IMG_PVOID pvLinAddrKM // @4
	IMG_DEV_VIRTADDR sDevVAddr // @8
	IMG_CPU_PHYADDR sCpuPAddr // @c
	IMG_UINT32 ui32Flags // @10
	IMG_UINT32 ui32ClientFlags // @14
	IMG_UINT32 ui32AllocSize // @18
	struct _PVRSRV_CLIENT_SYNC_INFO_* psClientSyncInfo // @1c
	IMG_HANDLE hMappingInfo // @20
	IMG_HANDLE hKernelMemInfo // @24
	IMG_HANDLE hResItem // @28
	struct _PVRSRV_CLIENT_MEM_INFO_* psNext // @2c
}

typedef struct _PVRSRV_CLIENT_MEM_INFO_ PVRSRV_CLIENT_MEM_INFO

struct _PVRSRV_EVENTOBJECT_ {
	IMG_CHAR[50] szName // @0
	IMG_HANDLE hOSEventKM // @34
}

typedef struct _PVRSRV_EVENTOBJECT_ PVRSRV_EVENTOBJECT

struct _PVRSRV_MISC_INFO_ {
	IMG_UINT32 ui32StateRequest // @0
	IMG_UINT32 ui32StatePresent // @4
	IMG_VOID* pvSOCTimerRegisterKM // @8
	IMG_VOID* pvSOCTimerRegisterUM // @c
	IMG_VOID* pvSOCClockGateRegs // @10
	IMG_UINT32 ui32SOCClockGateRegsSize // @14
	IMG_CHAR* pszMemoryStr // @18
	IMG_UINT32 ui32MemoryStrLen // @1c
	PVRSRV_EVENTOBJECT sGlobalEventObject // @20
	IMG_HANDLE hOSGlobalEvent // @58
}

typedef struct _PVRSRV_MISC_INFO_ PVRSRV_MISC_INFO

typedef struct GLES2Context_TAG GLES2Context

struct GLES2Context_TAG {
	IMG_UINT32 ui32Enables // @0
	IMG_UINT32 ui32DirtyState // @4
	IMG_UINT32 ui32EmitMask // @8
	GLES2state sState // @c
	PVRSRV_DEV_DATA* ps3DDevData // @210
	SrvSysContext* psSysContext // @214
	SGX_KICKTA sKickTA // @218
	IMG_BOOL bSPMOutOfMemEvent // @37c
	GLES2ProgramMachine sProgram // @380
	GLES2AttribArrayMachine sAttribArray // @454
	GLES2BufferObjectMachine sBufferObject // @604
	GLES2FrameBufferObjectMachine sFrameBuffer // @60c
	GLES2TextureMachine sTexture // @6cc
	GLES2PrimitiveMachine sPrim // @758
	EGLcontextMode* psMode // @171c
	EGLDrawableParams* psDrawParams // @1720
	EGLDrawableParams* psReadParams // @1724
	EGLRenderSurface* psRenderSurface // @1728
	IMG_BOOL bFullScreenViewport // @172c
	IMG_BOOL bFullScreenScissor // @1730
	IMG_BOOL bDrawMaskInvalid // @1734
	IMG_CHAR* pszExtensions // @1738
	IMG_BOOL bHasBeenCurrent // @173c
	IMG_UINT32 ui32NumEGLImageTextureTargetsBound // @1740
	IMG_INT32 i32Error // @1744
	IMG_UINT16* pui16IndexData // @1748
	IMG_VOID* pvVertexData // @174c
	IMG_UINT32 ui32VertexSize // @1750
	IMG_UINT32 ui32VertexRCSize // @1754
	CircularBuffer*[7] apsBuffers // @1758
	IMG_UINT32 ui32FrameNum // @1774
	IMG_BOOL bOverflowRender // @1778
	GLESAppHints sAppHints // @177c
	IMG_UINT32 ui32ShaderCount // @17b0
	GLES2ContextSharedState* psSharedState // @17b4
}

typedef struct GLES2ProgramRec GLES2Program

struct GLES2ProgramRec {
	GLES2NamedItem sNamedItem // @0
	IMG_UINT32 ui32Type // @c
	GLES2Shader* psVertexShader // @10
	GLES2Shader* psFragmentShader // @14
	IMG_BOOL bDeleting // @18
	IMG_BOOL bAttemptedLink // @1c
	IMG_BOOL bSuccessfulLink // @20
	IMG_BOOL bSuccessfulValidate // @24
	IMG_CHAR* pszInfoLog // @28
	IMG_UINT32 ui32NumActiveUniforms // @2c
	IMG_UINT32 ui32LengthOfLongestUniformName // @30
	GLES2Uniform* psActiveUniforms // @34
	IMG_UINT32 ui32NumActiveUserUniforms // @38
	GLES2Uniform** ppsActiveUserUniforms // @3c
	GLES2BuiltInUniform* psBuiltInUniforms // @40
	IMG_UINT32 ui32NumBuiltInUniforms // @44
	GLES2AttribUserBinding* psUserBinding // @48
	GLES2AttribUserBinding* psLastUserBinding // @4c
	IMG_UINT32 ui32NumActiveAttribs // @50
	IMG_UINT32 ui32LengthOfLongestAttribName // @54
	GLES2Attribute* psActiveAttributes // @58
	IMG_UINT32 ui32AttribCompileMask // @5c
	IMG_UINT32[8] aui32InputRegMappings // @60
	IMG_UINT32 ui32NumActiveVaryings // @80
	GLES2Varying* psActiveVaryings // @84
	IMG_UINT32[8] aui32IteratorPosition // @88
	GLES2ProgramShader sVertex // @a8
	GLES2ProgramShader sFragment // @148
	IMG_UINT32 ui32OutputSelects // @1e8
	IMG_UINT32 ui32TexCoordSelects // @1ec
	IMG_UINT32 ui32TexCoordPrecision // @1f0
}

typedef struct GLES2USEShaderVariant_TAG GLES2USEShaderVariant

struct GLES2USEShaderVariant_TAG {
	struct GLES2USEShaderVariant_TAG* psNext // @0
	GLES2ProgramShader* psProgramShader // @4
	FRMFrameResource sResource // @8
	IMG_DEV_VIRTADDR[2] sStartAddress // @14
	IMG_UINT32 ui32PhaseCount // @1c
	UCH_UseCodeBlock* psCodeBlock // @20
	IMG_UINT32 ui32MaxTempRegs // @24
	IMG_UINT32 ui32USEPrimAttribCount // @28
		union {
			struct {
		IMG_UINT32 ui32ColorMask // @0
		IMG_UINT32 ui32BlendEquation // @4
		IMG_UINT32 ui32BlendFactor // @8
		IMG_UINT32 ui32AlphaTestFlags // @c
		const GLES2TextureFormat*[8] apsTexFormat // @10
		IMG_UINT32 ui32ImageUnitEnables // @30
		GLES2PDSInfo sPDSInfo // @34
		IMG_BOOL bHasSetupDMSInfo // @140
	} sFragment
			struct {
		IMG_UINT32[8] aui32StreamTypeSize // @0
		IMG_UINT32 ui32NumItemsPerVertex // @20
		const GLES2TextureFormat*[8] apsTexFormat // @24
		IMG_UINT32 ui32ImageUnitEnables // @44
	} sVertex
			struct {
		IMG_UINT32 ui32SideBandWord // @0
	} sPixelEvent
			struct {
		IMG_UINT32 ui32NumStateWords // @0
	} sStateCopy
	} u // @2c
	USP_HW_SHADER* psPatchedShader // @170
	GLES2USESecondaryUploadTask* psSecondaryUploadTask // @174
	GLES2PDSCodeVariant* psPDSVariant // @178
	IMG_UINT32 ui32NumPDSVariants // @17c
}

typedef struct GLES2PDSCodeVariant_TAG GLES2PDSCodeVariant

struct GLES2PDSCodeVariant_TAG {
	UCH_UseCodeBlock* psCodeBlock // @0
	IMG_UINT32 ui32DataSize // @4
	PDS_TEXTURE_IMAGE_UNIT[8] asTextureImageChunks // @8
	IMG_UINT32[8] aui32ChunkCount // @68
	IMG_UINT32 ui32NonDependentImageUnits // @88
	struct GLES2PDSCodeVariant_TAG* psNext // @8c
}

typedef struct GLES2ProgramShaderRec GLES2ProgramShader

struct GLES2ProgramShaderRec {
	IMG_BOOL bValid // @0
	GLSLProgramType eProgramType // @4
	GLES2SharedShaderState* psSharedState // @8
	GLSLBindingSymbol*[7] psActiveSpecials // @c
	GLES2TextureSampler[8] asTextureSamplers // @28
	IMG_UINT32 ui32SamplersActive // @68
	GLES2UniformCopyRange sUniformCopyRange // @6c
	IMG_UINT32 ui32USEMode // @84
	IMG_UINT32 ui32USESecAttribDataSizeInDwords // @88
	IMG_DEV_VIRTADDR uUSEConstsDataBaseAddress // @8c
	IMG_UINT32 ui32USEConstsDataSizeinDWords // @90
	PVRSRV_CLIENT_MEM_INFO* psScratchMemInfo // @94
	PVRSRV_CLIENT_MEM_INFO* psIndexableTempsMemInfo // @98
	struct GLES2USEShaderVariant_TAG* psVariant // @9c
}

struct GLES2coordRec {
	IMG_FLOAT fX // @0
	IMG_FLOAT fY // @4
	IMG_FLOAT fZ // @8
	IMG_FLOAT fW // @c
}

typedef struct GLES2coordRec GLES2coord

struct GLES2colorRec {
	IMG_FLOAT fRed // @0
	IMG_FLOAT fGreen // @4
	IMG_FLOAT fBlue // @8
	IMG_FLOAT fAlpha // @c
}

typedef struct GLES2colorRec GLES2color

typedef unsigned int GLenum

typedef unsigned char GLboolean

typedef int GLsizei

typedef unsigned int GLuint

typedef int GLintptr

typedef int GLsizeiptr

struct CircularBuffer_TAG {
	PVRSRV_CLIENT_MEM_INFO* psMemInfo // @0
	IMG_UINT32* pui32BufferBase // @4
	IMG_UINT32 ui32BufferLimitInBytes // @8
	IMG_DEV_VIRTADDR uDevVirtBase // @c
	volatile IMG_UINT32* pui32ReadOffset // @10
	IMG_UINT32 ui32ReadOffsetCopy // @14
	IMG_UINT32 ui32CurrentWriteOffsetInBytes // @18
	IMG_UINT32 ui32CommittedPrimOffsetInBytes // @1c
	IMG_UINT32 ui32CommittedHWOffsetInBytes // @20
	IMG_UINT32 ui32SingleKickLimitInBytes // @24
	IMG_DEV_VIRTADDR uTACtrlKickDevAddr // @28
	IMG_BOOL bLocked // @2c
	IMG_UINT32 ui32LockCount // @30
	PVRSRV_DEV_DATA* psDevData // @34
	IMG_HANDLE hOSEvent // @38
}

typedef struct CircularBuffer_TAG CircularBuffer

typedef void* EGLClientBuffer

enum undefined {
	SGX_CORE_ID_INVALID = 0; //0x0
	SGX_CORE_ID_520 = 1; //0x1
	SGX_CORE_ID_530 = 2; //0x2
	SGX_CORE_ID_535 = 3; //0x3
	SGX_CORE_ID_540 = 4; //0x4
	SGX_CORE_ID_545 = 5; //0x5
}

typedef enum undefined SGX_CORE_ID_TYPE

struct _SGX_CORE_INFO {
	SGX_CORE_ID_TYPE eID // @0
	IMG_UINT32 uiRev // @4
}

typedef struct _SGX_CORE_INFO SGX_CORE_INFO

struct _PVRSRV_SGX_CLIENT_INFO_ {
	IMG_UINT32 ui32ProcessID // @0
	IMG_VOID* pvProcess // @4
	PVRSRV_MISC_INFO sMiscInfo // @8
	IMG_UINT32 ui32EVMConfig // @64
	IMG_UINT32 ui32ClientKickFlags // @68
	IMG_UINT32 ui32NumUSETemporaryRegisters // @6c
	IMG_UINT32 ui32NumUSEAttributeRegisters // @70
	IMG_DEV_VIRTADDR uPDSExecBase // @74
	IMG_DEV_VIRTADDR uUSEExecBase // @78
}

typedef struct _PVRSRV_SGX_CLIENT_INFO_ PVRSRV_SGX_CLIENT_INFO

struct _SGX_KICKTA_COMMON_ {
	IMG_UINT32 ui32Frame // @0
	IMG_UINT32 ui32KickFlags // @4
	IMG_BOOL bCheckZLSControl // @8
	IMG_UINT32 ui32StoreEnable // @c
	IMG_UINT32 ui32LastTLQOp // @10
	IMG_HANDLE hRenderContext // @14
	IMG_HANDLE hRTDataSet // @18
	IMG_DEV_VIRTADDR sVisTestResultMem // @1c
	IMG_UINT32 ui32VisTestFlags // @20
	IMG_UINT32 ui32VisBreakpointCount // @24
	IMG_DEV_VIRTADDR sTAStateShadowDevAddr // @28
	IMG_UINT32 ui32TAStateShadowSizeInDWORDs // @2c
	IMG_UINT32 ui32ISPBGObjDepth // @30
	IMG_UINT32 ui32ISPBGObj // @34
	IMG_UINT32 ui32ISPIPFMisc // @38
	IMG_UINT32 ui32ISPPerpendicular // @3c
	IMG_UINT32 ui32ISPCullValue // @40
	IMG_UINT32 ui323DAAMode // @44
	IMG_UINT32 ui32ISPZBase // @48
	IMG_UINT32 ui32ISPStencilBase // @4c
	IMG_UINT32 ui32ZLSCtl // @50
	IMG_UINT32 ui32ISPValidId // @54
	IMG_UINT32 ui32ISPDBias // @58
	IMG_UINT32 ui32ISPSceneBGObj // @5c
	IMG_UINT32 ui32EDMPixelPDSAddr // @60
	IMG_UINT32 ui32EDMPixelPDSDataSize // @64
	IMG_UINT32 ui32EDMPixelPDSInfo // @68
	IMG_UINT32 ui32PixelBE // @6c
	IMG_UINT32 ui32Filter0Left // @70
	IMG_UINT32 ui32Filter0Right // @74
	IMG_UINT32 ui32Filter0Extra // @78
	IMG_UINT32 ui32Filter1Left // @7c
	IMG_UINT32 ui32Filter1Right // @80
	IMG_UINT32 ui32Filter1Extra // @84
	IMG_UINT32 ui32Filter2Left // @88
	IMG_UINT32 ui32Filter2Right // @8c
	IMG_UINT32 ui32Filter2Extra // @90
	IMG_UINT32 ui32FilterTable // @94
	IMG_UINT32 ui32USEStoreRange // @98
	IMG_UINT32 ui32USELoadRedirect // @9c
	IMG_DEV_VIRTADDR sTABufferCtlStreamBase // @a0
	IMG_DEV_VIRTADDR sTABufferCtlStreamTerminate // @a4
	IMG_UINT32 ui32MTECtrl // @a8
	IMG_UINT32[3] aui32SpecObject // @ac
	IMG_UINT32 ui32NumTAStatusVals // @b8
	IMG_UINT32 ui32Num3DStatusVals // @bc
	IMG_UINT32 ui32NumSrcSyncs // @c0
}

typedef struct _SGX_KICKTA_COMMON_ SGX_KICKTA_COMMON

struct _SGX_KICKTA_ {
	SGX_KICKTA_COMMON sKickTACommon // @0
	PVRSRV_CLIENT_SYNC_INFO* psRenderSurfSyncInfo // @c4
	PVRSRV_CLIENT_SYNC_INFO*[4] apsSrcSurfSyncInfo // @c8
	PVRSRV_CLIENT_SYNC_INFO*[32] apsTAStatusInfo // @d8
	PVRSRV_CLIENT_SYNC_INFO*[2] aps3DStatusInfo // @158
	IMG_HANDLE hTQContext // @160
}

typedef struct _SGX_KICKTA_ SGX_KICKTA

struct SrvSysContext_TAG {
	PVRSRV_CONNECTION sConnection // @0
	PVRSRV_DEV_DATA s3D // @8
	PVRSRV_SGX_CLIENT_INFO sHWInfo // @14
	IMG_HANDLE hIMGEGLAppHints // @90
	IMG_HANDLE hDevMemContext // @94
	IMG_HANDLE hUSEFragmentHeap // @98
	IMG_HANDLE hUSEVertexHeap // @9c
	IMG_HANDLE hPDSFragmentHeap // @a0
	IMG_HANDLE hPDSVertexHeap // @a4
	IMG_HANDLE hGeneralHeap // @a8
	IMG_DEV_VIRTADDR uUSEFragmentHeapBase // @ac
	IMG_DEV_VIRTADDR uUSEVertexHeapBase // @b0
	IMG_HANDLE hRenderContext // @b4
	PVRSRV_CLIENT_MEM_INFO* psVisTestResults // @b8
	IMG_HANDLE hTransferContext // @bc
}

typedef struct SrvSysContext_TAG SrvSysContext

struct _PDS_VERTEX_SHADER_PROGRAM_INFO_ {
	IMG_UINT32[3] aui32USETaskControlOffsets // @0
	IMG_UINT32 ui32NumStreams // @c
	IMG_UINT32[16] aui32NumElements // @10
	IMG_UINT32[16] aui32AddressOffsets // @50
	IMG_UINT32[16] aui32ElementOffsets // @450
	IMG_UINT32[16] aui32StreamAddresses // @850
	IMG_UINT32[3] aui32USETaskControl // @890
	IMG_BOOL bPatchTaskControl // @89c
}

typedef struct _PDS_VERTEX_SHADER_PROGRAM_INFO_ PDS_VERTEX_SHADER_PROGRAM_INFO

struct _PDS_TEXTURE_IMAGE_UNIT_ {
	IMG_UINT32 ui32TAGControlWord0 // @0
	IMG_UINT32 ui32TAGControlWord1 // @4
	IMG_UINT32 ui32TAGControlWord2 // @8
}

typedef struct _PDS_TEXTURE_IMAGE_UNIT_ PDS_TEXTURE_IMAGE_UNIT

typedef IMG_VOID* EGLDrawableHandle

enum undefined {
	ROTATE_0 = 0; //0x0
	ROTATE_90 = 1; //0x1
	ROTATE_180 = 2; //0x2
	ROTATE_270 = 3; //0x3
	FLIP_Y = 4; //0x4
}

typedef enum undefined EGLRotationAngle

struct EGLRect_TAG {
	IMG_INT32 i32X // @0
	IMG_INT32 i32Y // @4
	IMG_UINT32 ui32Width // @8
	IMG_UINT32 ui32Height // @c
}

typedef struct EGLRect_TAG EGLRect

enum undefined {
	EGL_DRAWABLETYPE_WINDOW = 0; //0x0
	EGL_DRAWABLETYPE_PIXMAP = 1; //0x1
	EGL_DRAWABLETYPE_PBUFFER = 2; //0x2
}

typedef enum undefined EGLDrawableType

struct EGLPixelBEState_TAG {
	IMG_UINT32 ui32SidebandWord // @0
	IMG_UINT32[4] aui32EmitWords // @4
	PVRSRV_HWREG sEventPixelExec // @14
	PVRSRV_HWREG sEventPixelData // @1c
	PVRSRV_HWREG sEventPixelInfo // @24
	IMG_BOOL bDither // @2c
	IMG_UINT32* pui32PixelEventPDS // @30
	IMG_UINT32* pui32PixelEventUSSE // @34
}

typedef struct EGLPixelBEState_TAG EGLPixelBEState

struct GLESTARegisters_TAG {
	PVRSRV_HWREG sMTEControl // @0
}

typedef struct GLESTARegisters_TAG GLESTARegisters

struct GLES3DRegisters_TAG {
	PVRSRV_HWREG sPixelBE // @0
	PVRSRV_HWREG sISPIPFMisc // @8
	PVRSRV_HWREG sISPPerpendicular // @10
	PVRSRV_HWREG sISPCullValue // @18
	PVRSRV_HWREG sISPDepthBias // @20
	PVRSRV_HWREG s3DAAMode // @28
	PVRSRV_HWREG sISPZLSControl // @30
	PVRSRV_HWREG sISPZLoadBase // @38
	PVRSRV_HWREG sISPZStoreBase // @40
	PVRSRV_HWREG sISPStencilLoadBase // @48
	PVRSRV_HWREG sISPStencilStoreBase // @50
	PVRSRV_HWREG sISPBackgroundObject // @58
	PVRSRV_HWREG sISPBackgroundObjectDepth // @60
	PVRSRV_HWREG sEDMPixelPDSExec // @68
	PVRSRV_HWREG sEDMPixelPDSData // @70
	PVRSRV_HWREG sEDMPixelPDSInfo // @78
}

typedef struct GLES3DRegisters_TAG GLES3DRegisters

struct EGLTerminateState_TAG {
	PVRSRV_CLIENT_MEM_INFO* psTerminateUSEMemInfo // @0
	PVRSRV_CLIENT_MEM_INFO* psTerminatePDSMemInfo // @4
	IMG_UINT32 ui32PDSDataSize // @8
	IMG_UINT32 ui32TerminateRegion // @c
	IMG_DEV_VIRTADDR uPDSCodeAddress // @10
}

typedef struct EGLTerminateState_TAG EGLTerminateState

struct EGLRenderSurfaceTAG {
	IMG_BOOL bFirstKick // @0
	IMG_HANDLE hRenderTarget // @4
	PVRSRV_CLIENT_SYNC_INFO* psSyncInfo // @8
	PVRSRV_CLIENT_MEM_INFO* psSyncMemInfo // @c
	PVRSRV_CLIENT_MEM_INFO* psZSBufferMemInfo // @10
	CircularBuffer sPDSBuffer // @14
	CircularBuffer sUSSEBuffer // @50
	IMG_BOOL bMultiSample // @8c
	IMG_BOOL bInFrame // @90
	IMG_BOOL bInExternalFrame // @94
	IMG_BOOL bPrimitivesSinceLastTA // @98
	IMG_BOOL bMultiAPISurface // @9c
	EGLPixelBEState sPixelBEState // @a0
	IMG_UINT32[3] aui32HWBGObjPDSState // @d8
	EGLTerminateState sTerm // @e4
	IMG_UINT32 ui32TerminateRegion // @f8
	IMG_BOOL bLastDrawMaskFullScreenEnable // @fc
	EGLRect sLastDrawMask // @100
	IMG_UINT32[2] aui32RegionClipWord // @110
	GLESTARegisters sTARegs // @118
	GLES3DRegisters s3DRegs // @120
	EGLDrawableHandle hEGLSurface // @1a0
	PVRSRV_ALPHA_FORMAT eAlphaFormat // @1a4
	PVRSRV_COLOURSPACE_FORMAT eColourSpace // @1a8
	EGLClientBuffer hVGClientBuffer // @1ac
}

typedef struct EGLRenderSurfaceTAG EGLRenderSurface

struct EGLDrawableParamsTAG {
	EGLRotationAngle eRotationAngle // @0
	IMG_UINT32 ui32Width // @4
	IMG_UINT32 ui32Height // @8
	PVRSRV_PIXEL_FORMAT ePixelFormat // @c
	PVRSRV_CLIENT_SYNC_INFO* psSyncInfo // @10
	IMG_UINT32 ui32Stride // @14
	IMG_VOID* pvLinSurfaceAddress // @18
	IMG_UINT32 ui32HWSurfaceAddress // @1c
	EGLRenderSurface* psRenderSurface // @20
	EGLDrawableType eDrawableType // @24
	IMG_UINT32 ui32AccumStride // @28
	IMG_UINT32 ui32AccumHWAddress // @2c
	PVRSRV_PIXEL_FORMAT eAccumPixelFormat // @30
	PVRSRV_CLIENT_SYNC_INFO* psAccumSyncInfo // @34
}

typedef struct EGLDrawableParamsTAG EGLDrawableParams

struct EGLcontextModeRec {
	IMG_UINT32 ui32AntiAliasMode // @0
	IMG_UINT32 ui32RedBits // @4
	IMG_UINT32 ui32GreenBits // @8
	IMG_UINT32 ui32BlueBits // @c
	IMG_UINT32 ui32AlphaBits // @10
	IMG_UINT32 ui32ColorBits // @14
	IMG_UINT32 ui32DepthBits // @18
	IMG_UINT32 ui32StencilBits // @1c
	IMG_UINT32 ui32MaxViewportX // @20
	IMG_UINT32 ui32MaxViewportY // @24
	PVRSRV_PIXEL_FORMAT ePixelFormat // @28
}

typedef struct EGLcontextModeRec EGLcontextMode

struct EGLImageRec {
	IMG_UINT32 ui32Width // @0
	IMG_UINT32 ui32Height // @4
	PVRSRV_PIXEL_FORMAT ePixelFormat // @8
	IMG_UINT32 ui32Stride // @c
	IMG_VOID* pvLinSurfaceAddress // @10
	IMG_UINT32 ui32HWSurfaceAddress // @14
	PVRSRV_CLIENT_MEM_INFO* psMemInfo // @18
	IMG_VOID* hImage // @1c
	IMG_UINT32 ui32Target // @20
	IMG_UINT32 ui32Buffer // @24
	IMG_UINT32 ui32Level // @28
	IMG_BOOL bTwiddled // @2c
}

typedef struct EGLImageRec EGLImage

enum IMG_EGLERROR_TAG {
	IMG_EGL_NO_ERROR = 0; //0x0
	IMG_EGL_GENERIC_ERROR = 1; //0x1
	IMG_EGL_SCENE_LOST = 2; //0x2
	IMG_EGL_MEMORY_INVALID_ERROR = 3; //0x3
	IMG_EGL_BAD_ACCESS = 4; //0x4
	IMG_EGL_BAD_PARAMETER = 5; //0x5
	IMG_EGL_BAD_MATCH = 6; //0x6
	IMG_EGL_OUT_OF_MEMORY = 7; //0x7
}

enum GLES2NameTypeTAG {
	GLES2_NAMETYPE_TEXOBJ = 0; //0x0
	GLES2_NAMETYPE_PROGRAM = 1; //0x1
	GLES2_NAMETYPE_BUFOBJ = 2; //0x2
	GLES2_NAMETYPE_RENDERBUFFER = 3; //0x3
	GLES2_NAMETYPE_FRAMEBUFFER = 4; //0x4
	GLES2_MAX_NAMETYPE = 5; //0x5
}

typedef enum GLES2NameTypeTAG GLES2NameType

struct GLES2NamedItemTAG {
	IMG_UINT32 ui32Name // @0
	IMG_UINT32 ui32RefCount // @4
	struct GLES2NamedItemTAG* psNext // @8
}

typedef struct GLES2NamedItemTAG GLES2NamedItem

struct GLES2NamesArrayTAG {
	GLES2NameType eType // @0
	void* pfnFree // @4
	IMG_UINT32 ui32LastNameGenerated // @8
	IMG_UINT32 ui32NumItems // @c
	PVRSRV_RES_HANDLE* phSharedLock // @10
	GLES2NamedItem*[127] apsEntry // @14
}

void

typedef struct GLES2NamesArrayTAG GLES2NamesArray

struct FRMFrameResourceRec {
	IMG_UINT32 ui32FirstSurface // @0
	struct FRMFrameResourceRec* psPrev // @4
	struct FRMFrameResourceRec* psNext // @8
}

typedef struct FRMFrameResourceRec FRMFrameResource

struct FRMFrameListRec {
	const EGLRenderSurface* psSurface // @0
	IMG_UINT32 ui32Frame // @4
	PVRSRV_SYNC_DATA* psSyncData // @8
	IMG_UINT32 ui32Next // @c
}

typedef struct FRMFrameListRec FRMFrameList

struct FRMFrameResourceManagerRec {
	PVRSRV_RES_HANDLE* phSharedLock // @0
	IMG_VOID* pvContext // @4
	FRMFrameList* asAttachment // @8
	IMG_UINT32 ui32MaxAttachments // @c
	IMG_UINT32 ui32AttachmentFreeList // @10
	FRMFrameResource* psResourceList // @14
	void* pfnReclaimResourceMem // @18
	IMG_BOOL bRemoveResourceAfterRecoveringMem // @1c
	FRMFrameResource* psGhostList // @20
	void* pfnDestroyGhost // @24
	PVRSRV_CONNECTION* psConnection // @28
	IMG_HANDLE hOSEvent // @2c
	IMG_BOOL bInitialized // @30
	void* pfnSetError // @34
}

void

void

typedef struct FRMFrameResourceManagerRec FRMFrameResourceManager

struct GLES2BufferObjectRec {
	GLES2NamedItem sNamedItem // @0
	GLenum eUsage // @c
	GLenum eAccess // @10
	IMG_UINT32 ui32BufferSize // @14
	IMG_UINT32 ui32BindMask // @18
	IMG_BOOL bMapped // @1c
	IMG_BOOL bInUse // @20
	PVRSRV_CLIENT_MEM_INFO* psMemInfo // @24
}

typedef struct GLES2BufferObjectRec GLES2BufferObject

struct GLES2BufferObjectMachineRec {
	GLES2BufferObject*[2] psActiveBuffer // @0
}

typedef struct GLES2BufferObjectMachineRec GLES2BufferObjectMachine

struct GLES2AttribArrayPointerStateRec {
	IMG_UINT8* pui8Pointer // @0
	IMG_UINT32 ui32StreamTypeSize // @4
	IMG_UINT32 ui32UserStride // @8
	GLES2BufferObject* psBufObj // @c
}

typedef struct GLES2AttribArrayPointerStateRec GLES2AttribArrayPointerState

struct GLES2AttribStateRec {
	GLES2coord[8] asCurrentAttrib // @0
	GLES2AttribArrayPointerState[8] asAttribPointer // @80
}

typedef struct GLES2AttribStateRec GLES2AttribState

struct GLES2AttribArrayPointerMachineRec {
	IMG_UINT32 ui32Stride // @0
	IMG_UINT32 ui32Size // @4
	IMG_BOOL bIsCurrentState // @8
	IMG_UINT8* pui8CopyPointer // @c
	IMG_UINT32 ui32CopyStreamTypeSize // @10
	IMG_UINT32 ui32CopyStride // @14
	IMG_UINT8* pui8SrcPointer // @18
	IMG_UINT8* pui8DstPointer // @1c
	IMG_UINT32 ui32DstSize // @20
	void* pfnCopyData // @24
	IMG_VOID* pvPDSSrcAddress // @28
	GLES2AttribArrayPointerState* psState // @2c
}

void

typedef struct GLES2AttribArrayPointerMachineRec GLES2AttribArrayPointerMachine

struct GLES2AttribArrayMachineRec {
	GLES2AttribArrayPointerMachine[8] asAttribPointer // @0
	GLES2AttribArrayPointerMachine*[8] apsPackedAttrib // @180
	IMG_UINT32 ui32NumItemsPerVertex // @1a0
	IMG_UINT32 ui32ArrayEnables // @1a4
	IMG_UINT32 ui32CompileMask // @1a8
	IMG_BOOL ui32ControlWord // @1ac
}

typedef struct GLES2AttribArrayMachineRec GLES2AttribArrayMachine

struct GLES2FrameBufferAttachableRec {
	GLES2NamedItem sNamedItem // @0
	EGLRenderSurface* psRenderSurface // @c
	GLenum eAttachmentType // @10
}

typedef struct GLES2FrameBufferAttachableRec GLES2FrameBufferAttachable

struct GLES2RenderBufferRec {
	GLES2FrameBufferAttachable sFBAttachable // @0
	GLenum eRequestedFormat // @14
	IMG_UINT32 ui32Width // @18
	IMG_UINT32 ui32Height // @1c
	IMG_UINT8 ui8RedSize // @20
	IMG_UINT8 ui8GreenSize // @21
	IMG_UINT8 ui8BlueSize // @22
	IMG_UINT8 ui8AlphaSize // @23
	IMG_UINT8 ui8DepthSize // @24
	IMG_UINT8 ui8StencilSize // @25
	IMG_BOOL bInitialised // @28
	IMG_UINT32 ui32AllocatedBytes // @2c
	PVRSRV_CLIENT_MEM_INFO* psMemInfo // @30
	EGLImage* psEGLImageSource // @34
	EGLImage* psEGLImageTarget // @38
}

typedef struct GLES2RenderBufferRec GLES2RenderBuffer

struct GLES2FrameBufferRec {
	GLES2NamedItem sNamedItem // @0
	GLenum eStatus // @c
	EGLcontextMode sMode // @10
	EGLDrawableParams sDrawParams // @3c
	EGLDrawableParams sReadParams // @74
	GLES2FrameBufferAttachable*[3] apsAttachment // @ac
}

typedef struct GLES2FrameBufferRec GLES2FrameBuffer

struct GLES2FrameBufferObjectMachineRec {
	GLES2FrameBuffer* psActiveFrameBuffer // @0
	GLES2RenderBuffer* psActiveRenderBuffer // @4
	GLES2FrameBuffer sDefaultFrameBuffer // @8
}

typedef struct GLES2FrameBufferObjectMachineRec GLES2FrameBufferObjectMachine

typedef enum _USP_CHAN_CONTENT_ USP_CHAN_CONTENT

enum _USP_CHAN_CONTENT_ {
	USP_CHAN_CONTENT_NONE = 0; //0x0
	USP_CHAN_CONTENT_DATA = 1; //0x1
	USP_CHAN_CONTENT_ONE = 5; //0x5
	USP_CHAN_CONTENT_ZERO = 6; //0x6
}

typedef enum _USP_CHAN_FORMAT_ USP_CHAN_FORMAT

enum _USP_CHAN_FORMAT_ {
	USP_CHAN_FORMAT_U8 = 0; //0x0
	USP_CHAN_FORMAT_S8 = 1; //0x1
	USP_CHAN_FORMAT_U16 = 2; //0x2
	USP_CHAN_FORMAT_S16 = 3; //0x3
	USP_CHAN_FORMAT_F16 = 4; //0x4
	USP_CHAN_FORMAT_F32 = 5; //0x5
	USP_CHAN_FORMAT_U24 = 6; //0x6
}

typedef enum _USP_CHAN_SWIZZLE_ USP_CHAN_SWIZZLE

enum _USP_CHAN_SWIZZLE_ {
	USP_CHAN_SWIZZLE_CHAN_0 = 0; //0x0
	USP_CHAN_SWIZZLE_CHAN_1 = 1; //0x1
	USP_CHAN_SWIZZLE_CHAN_2 = 2; //0x2
	USP_CHAN_SWIZZLE_CHAN_3 = 3; //0x3
	USP_CHAN_SWIZZLE_ONE = 4; //0x4
	USP_CHAN_SWIZZLE_ZERO = 5; //0x5
}

typedef enum _USP_HW_PSINPUT_TYPE_ USP_HW_PSINPUT_TYPE

enum _USP_HW_PSINPUT_TYPE_ {
	USP_HW_PSINPUT_TYPE_ITERATION = 0; //0x0
	USP_HW_PSINPUT_TYPE_SAMPLE = 1; //0x1
}

typedef enum _USP_HW_PSINPUT_COORD_ USP_HW_PSINPUT_COORD

enum _USP_HW_PSINPUT_COORD_ {
	USP_HW_PSINPUT_COORD_TC0 = 0; //0x0
	USP_HW_PSINPUT_COORD_TC1 = 1; //0x1
	USP_HW_PSINPUT_COORD_TC2 = 2; //0x2
	USP_HW_PSINPUT_COORD_TC3 = 3; //0x3
	USP_HW_PSINPUT_COORD_TC4 = 4; //0x4
	USP_HW_PSINPUT_COORD_TC5 = 5; //0x5
	USP_HW_PSINPUT_COORD_TC6 = 6; //0x6
	USP_HW_PSINPUT_COORD_TC7 = 7; //0x7
	USP_HW_PSINPUT_COORD_TC8 = 8; //0x8
	USP_HW_PSINPUT_COORD_TC9 = 9; //0x9
	USP_HW_PSINPUT_COORD_V0 = 10; //0xa
	USP_HW_PSINPUT_COORD_V1 = 11; //0xb
	USP_HW_PSINPUT_COORD_FOG = 12; //0xc
	USP_HW_PSINPUT_COORD_POS = 13; //0xd
}

typedef enum _USP_HW_PSINPUT_FMT_ USP_HW_PSINPUT_FMT

enum _USP_HW_PSINPUT_FMT_ {
	USP_HW_PSINPUT_FMT_F32 = 0; //0x0
	USP_HW_PSINPUT_FMT_F16 = 1; //0x1
	USP_HW_PSINPUT_FMT_C10 = 2; //0x2
	USP_HW_PSINPUT_FMT_U8 = 3; //0x3
}

typedef enum _USP_HW_CONST_FMT_ USP_HW_CONST_FMT

enum _USP_HW_CONST_FMT_ {
	USP_HW_CONST_FMT_F32 = 0; //0x0
	USP_HW_CONST_FMT_F16 = 1; //0x1
	USP_HW_CONST_FMT_C10 = 2; //0x2
	USP_HW_CONST_FMT_STATIC = 3; //0x3
}

typedef struct _USP_PC_SHADER_ USP_PC_SHADER

struct _USP_PC_SHADER_ {
	IMG_UINT32 uId // @0
	IMG_UINT32 uVersion // @4
	IMG_UINT32 uSize // @8
}

typedef struct _USP_TEX_FORMAT_ USP_TEX_FORMAT

struct _USP_TEX_FORMAT_ {
	USP_CHAN_CONTENT[4] aeChanContent // @0
	USP_CHAN_FORMAT[4] aeChanForm // @10
	USP_CHAN_SWIZZLE[4] aeChanSwizzle // @20
	IMG_UINT32 uChunkSize // @30
}

struct _USP_HW_PSINPUT_LOAD_ {
	USP_HW_PSINPUT_TYPE eType // @0
	IMG_UINT32 uFlags // @4
	USP_HW_PSINPUT_COORD eCoord // @8
	IMG_UINT16 uCoordDim // @c
	IMG_UINT16 uTextureIdx // @e
	IMG_UINT32 uChunkIdx // @10
	USP_HW_PSINPUT_FMT eFormat // @14
}

typedef struct _USP_HW_PSINPUT_LOAD_* PUSP_HW_PSINPUT_LOAD

struct _USP_HW_TEXSTATE_LOAD_ {
	IMG_UINT16 uTextureIdx // @0
	IMG_UINT16 uChunkIdx // @2
	IMG_UINT32 uDestIdx // @4
}

typedef struct _USP_HW_TEXSTATE_LOAD_* PUSP_HW_TEXSTATE_LOAD

struct _USP_HW_CONST_LOAD_ {
	IMG_UINT32 uSrcIdx // @0
	IMG_UINT16 uDestIdx // @4
	IMG_UINT16 uDestShift // @6
	USP_HW_CONST_FMT eFormat // @8
}

typedef struct _USP_HW_CONST_LOAD_* PUSP_HW_CONST_LOAD

typedef struct _USP_HW_SAREG_USE_ USP_HW_SAREG_USE

struct _USP_HW_SAREG_USE_ {
	IMG_UINT32 uFlags // @0
	IMG_UINT16 uMemConstBaseAddrReg // @4
	IMG_UINT16 uMemConst2BaseAddrReg // @6
	IMG_UINT16 uScratchMemBaseAddrReg // @8
	IMG_UINT16 uTexStateFirstReg // @a
	IMG_UINT16 uRegConstsFirstReg // @c
	IMG_UINT16 uRegConstsRegCount // @e
	IMG_UINT16 uIndexedTempBaseAddrReg // @10
}

typedef struct _USP_HWSHADER_ USP_HW_SHADER

struct _USP_HWSHADER_ {
	IMG_UINT32 uFlags // @0
	SGX_CORE_INFO sTargetDev // @4
	IMG_UINT16 uInstCount // @c
	IMG_PUINT32 puInsts // @10
	IMG_UINT16 uProgStartInstIdx // @14
	IMG_UINT16 uPTPhase0EndInstIdx // @16
	IMG_UINT16 uPTPhase1StartInstIdx // @18
	IMG_UINT16 uSAUpdateInstCount // @1a
	IMG_PUINT32 puSAUpdateInsts // @1c
	IMG_UINT16 uPARegCount // @20
	IMG_UINT16 uReservedPARegCount // @22
	IMG_UINT16 uTempRegCount // @24
	IMG_UINT16 uSARegCount // @26
	USP_HW_SAREG_USE sSARegUse // @28
	IMG_UINT16 uPSInputCount // @3c
	PUSP_HW_PSINPUT_LOAD psPSInputLoads // @40
	IMG_UINT32 uMemConstCount // @44
	PUSP_HW_CONST_LOAD psMemConstLoads // @48
	IMG_UINT16 uRegConstCount // @4c
	PUSP_HW_CONST_LOAD psRegConstLoads // @50
	IMG_UINT16 uRegTexStateCount // @54
	PUSP_HW_TEXSTATE_LOAD psRegTexStateLoads // @58
	IMG_UINT32 uMemTexStateCount // @5c
	PUSP_HW_TEXSTATE_LOAD psMemTexStateLoads // @60
	IMG_UINT32 uIndexedTempTotalSize // @64
	IMG_UINT32 uScratchAreaSize // @68
	IMG_INT32 iSAAddressAdjust // @6c
	IMG_UINT32 uPSResultRegNum // @70
	IMG_UINT32 uNonAnisoTexStages // @74
	IMG_UINT32 uVSInputPARegCount // @78
	IMG_UINT32[4] auVSInputsUsed // @7c
}

struct _UNIFLEX_INDEXABLE_TEMP_SIZE {
	IMG_UINT32 uTag // @0
	IMG_UINT32 uSize // @4
}

typedef struct _UNIFLEX_INDEXABLE_TEMP_SIZE UNIFLEX_INDEXABLE_TEMP_SIZE

typedef struct _UNIFLEX_INDEXABLE_TEMP_SIZE* PUNIFLEX_INDEXABLE_TEMP_SIZE

struct _UNIFLEX_CONSTS_RANGE {
	IMG_UINT32 uRangeStart // @0
	IMG_UINT32 uRangeEnd // @4
}

typedef struct _UNIFLEX_CONSTS_RANGE* PUNIFLEX_CONSTS_RANGE

struct _UNIFLEX_CONSTS_BUFF_RANGES {
	IMG_UINT32 uConstRangesCount // @0
	PUNIFLEX_CONSTS_RANGE psRanges // @4
}

typedef struct _UNIFLEX_CONSTS_BUFF_RANGES UNIFLEX_CONSTS_BUFF_RANGES

struct _UNIFLEX_PROGRAM_PARAMETERS {
	IMG_UINT32 uConstantBase // @0
	IMG_UINT32 uScratchBase // @4
	IMG_UINT32 uBooleanConsts // @8
	IMG_UINT32 uIntegerConsts // @c
	IMG_UINT32 uTextureState // @10
	IMG_UINT32 uInRegisterConstantOffset // @14
	IMG_UINT32 uInRegisterConstantLimit // @18
	UNIFLEX_CONSTS_BUFF_RANGES[18] psConstsBuffRanges // @1c
	IMG_UINT32 uIndexableTempBase // @ac
	IMG_UINT32 uIndexableTempArrayCount // @b0
	PUNIFLEX_INDEXABLE_TEMP_SIZE psIndexableTempArraySizes // @b4
	IMG_UINT32 uU24ScaleConstantNum // @b8
	IMG_UINT32 uPackDestType // @bc
	IMG_UINT32 uPackPrecision // @c0
	IMG_UINT32 uFeedbackInstCount // @c4
	IMG_UINT32 uExtraPARegisters // @c8
	IMG_UINT32 uNumAvailableTemporaries // @cc
	IMG_UINT32 uCentroidMask // @d0
	IMG_UINT32[4] puOutputSaturate // @d4
	SGX_CORE_INFO sTarget // @e4
	IMG_UINT32[2] puValidVSOutputs // @ec
	IMG_UINT32 uTextureStateConstOffset // @f4
	IMG_UINT32 uValidPSOutputs // @f8
	IMG_UINT32[18] puRelativeConstantMax // @fc
	IMG_UINT32 uVSPointSizeOutputNum // @144
}

typedef struct _UNIFLEX_PROGRAM_PARAMETERS UNIFLEX_PROGRAM_PARAMETERS

enum tagUSC_CHANNELFORM {
	USC_CHANNELFORM_INVALID = 0; //0x0
	USC_CHANNELFORM_U8 = 1; //0x1
	USC_CHANNELFORM_S8 = 2; //0x2
	USC_CHANNELFORM_U16 = 3; //0x3
	USC_CHANNELFORM_S16 = 4; //0x4
	USC_CHANNELFORM_F16 = 5; //0x5
	USC_CHANNELFORM_F32 = 6; //0x6
	USC_CHANNELFORM_ZERO = 7; //0x7
	USC_CHANNELFORM_ONE = 8; //0x8
	USC_CHANNELFORM_U24 = 9; //0x9
	USC_CHANNELFORM_U8_UN = 10; //0xa
	USC_CHANNELFORM_C10 = 11; //0xb
}

typedef enum tagUSC_CHANNELFORM USC_CHANNELFORM

struct _UNIFLEX_TEXFORM_ {
	USC_CHANNELFORM[4] peChannelForm // @0
	IMG_UINT32 uSwizzle // @10
	IMG_BOOL bTwoResult // @14
	IMG_UINT32 uChunkSize // @18
	IMG_UINT32 uCSCConst // @1c
	IMG_BOOL bUsePCF // @20
	IMG_BOOL bTFSwapRedAndBlue // @24
}

typedef struct _UNIFLEX_TEXFORM_ UNIFLEX_TEXFORM

enum GLSLLogFilesTAG {
	GLSLLF_NOT_LOG = 0; //0x0
	GLSLLF_LOG_ICODE_ONLY = 1; //0x1
	GLSLLF_LOG_ALL = 2; //0x2
}

typedef enum GLSLLogFilesTAG GLSLLogFiles

enum GLSLProgramTypeTAG {
	GLSLPT_VERTEX = 0; //0x0
	GLSLPT_FRAGMENT = 1; //0x1
}

typedef enum GLSLProgramTypeTAG GLSLProgramType

enum GLSLTypeSpecifierTAG {
	GLSLTS_INVALID = 0; //0x0
	GLSLTS_VOID = 1; //0x1
	GLSLTS_FLOAT = 2; //0x2
	GLSLTS_VEC2 = 3; //0x3
	GLSLTS_VEC3 = 4; //0x4
	GLSLTS_VEC4 = 5; //0x5
	GLSLTS_INT = 6; //0x6
	GLSLTS_IVEC2 = 7; //0x7
	GLSLTS_IVEC3 = 8; //0x8
	GLSLTS_IVEC4 = 9; //0x9
	GLSLTS_BOOL = 10; //0xa
	GLSLTS_BVEC2 = 11; //0xb
	GLSLTS_BVEC3 = 12; //0xc
	GLSLTS_BVEC4 = 13; //0xd
	GLSLTS_MAT2X2 = 14; //0xe
	GLSLTS_MAT2X3 = 15; //0xf
	GLSLTS_MAT2X4 = 16; //0x10
	GLSLTS_MAT3X2 = 17; //0x11
	GLSLTS_MAT3X3 = 18; //0x12
	GLSLTS_MAT3X4 = 19; //0x13
	GLSLTS_MAT4X2 = 20; //0x14
	GLSLTS_MAT4X3 = 21; //0x15
	GLSLTS_MAT4X4 = 22; //0x16
	GLSLTS_SAMPLER1D = 23; //0x17
	GLSLTS_SAMPLER2D = 24; //0x18
	GLSLTS_SAMPLER3D = 25; //0x19
	GLSLTS_SAMPLERCUBE = 26; //0x1a
	GLSLTS_SAMPLER1DSHADOW = 27; //0x1b
	GLSLTS_SAMPLER2DSHADOW = 28; //0x1c
	GLSLTS_STRUCT = 29; //0x1d
}

typedef enum GLSLTypeSpecifierTAG GLSLTypeSpecifier

enum GLSLTypeQualifierTAG {
	GLSLTQ_INVALID = 0; //0x0
	GLSLTQ_TEMP = 1; //0x1
	GLSLTQ_CONST = 2; //0x2
	GLSLTQ_UNIFORM = 3; //0x3
	GLSLTQ_ATTRIBUTE = 4; //0x4
	GLSLTQ_VARYING = 5; //0x5
}

typedef enum GLSLTypeQualifierTAG GLSLTypeQualifier

enum GLSLVaryingModifierFlagsTAG {
	GLSLVMOD_NONE = 0; //0x0
	GLSLVMOD_INVARIANT = 1; //0x1
	GLSLVMOD_CENTROID = 2; //0x2
	GLSLVMOD_ALL = 3; //0x3
	GLSLVMOD_INVALID = 4; //0x4
}

typedef enum GLSLVaryingModifierFlagsTAG GLSLVaryingModifierFlags

enum GLSLPrecisionQualifierTAG {
	GLSLPRECQ_UNKNOWN = 0; //0x0
	GLSLPRECQ_LOW = 1; //0x1
	GLSLPRECQ_MEDIUM = 2; //0x2
	GLSLPRECQ_HIGH = 3; //0x3
	GLSLPRECQ_INVALID = 4; //0x4
}

typedef enum GLSLPrecisionQualifierTAG GLSLPrecisionQualifier

enum GLSLBuiltInVariableIDTAG {
	GLSLBV_NOT_BTIN = 0; //0x0
	GLSLBV_POSITION = 1; //0x1
	GLSLBV_POINTSIZE = 2; //0x2
	GLSLBV_CLIPVERTEX = 3; //0x3
	GLSLBV_FRAGCOORD = 4; //0x4
	GLSLBV_FRONTFACING = 5; //0x5
	GLSLBV_FRAGCOLOR = 6; //0x6
	GLSLBV_FRAGDATA = 7; //0x7
	GLSLBV_FRAGDEPTH = 8; //0x8
	GLSLBV_COLOR = 9; //0x9
	GLSLBV_SECONDARYCOLOR = 10; //0xa
	GLSLBV_NORMAL = 11; //0xb
	GLSLBV_VERTEX = 12; //0xc
	GLSLBV_MULTITEXCOORD0 = 13; //0xd
	GLSLBV_MULTITEXCOORD1 = 14; //0xe
	GLSLBV_MULTITEXCOORD2 = 15; //0xf
	GLSLBV_MULTITEXCOORD3 = 16; //0x10
	GLSLBV_MULTITEXCOORD4 = 17; //0x11
	GLSLBV_MULTITEXCOORD5 = 18; //0x12
	GLSLBV_MULTITEXCOORD6 = 19; //0x13
	GLSLBV_MULTITEXCOORD7 = 20; //0x14
	GLSLBV_FOGCOORD = 21; //0x15
	GLSLBV_MODELVIEWMATRIX = 22; //0x16
	GLSLBV_PROJECTMATRIX = 23; //0x17
	GLSLBV_MODELVIEWPROJECTIONMATRIX = 24; //0x18
	GLSLBV_TEXTUREMATRIX = 25; //0x19
	GLSLBV_NORMALMATRIX = 26; //0x1a
	GLSLBV_MODELVIEWMATRIXINVERSE = 27; //0x1b
	GLSLBV_PROJECTMATRIXINVERSE = 28; //0x1c
	GLSLBV_MODELVIEWPROJECTIONMATRIXINVERSE = 29; //0x1d
	GLSLBV_TEXTUREMATRIXINVERSE = 30; //0x1e
	GLSLBV_MODELVIEWMATRIXTRANSPOSE = 31; //0x1f
	GLSLBV_PROJECTIONMATRIXTRANSPOSE = 32; //0x20
	GLSLBV_MODELVIEWPROJECTIONMATRIXTRANSPOSE = 33; //0x21
	GLSLBV_TEXTUREMATRIXTRANSPOSE = 34; //0x22
	GLSLBV_MODELVIEWMATRIXINVERSETRANSPOSE = 35; //0x23
	GLSLBV_PROJECTMATRIXINVERSETRANSPOSE = 36; //0x24
	GLSLBV_MODELVIEWPROJECTIONMATRIXINVERSETRANSPOSE = 37; //0x25
	GLSLBV_TEXTUREMATRIXINVERSETRANSPOSE = 38; //0x26
	GLSLBV_NORMALSCALE = 39; //0x27
	GLSLBV_DEPTHRANGE = 40; //0x28
	GLSLBV_CLIPPLANE = 41; //0x29
	GLSLBV_POINT = 42; //0x2a
	GLSLBV_FRONTMATERIAL = 43; //0x2b
	GLSLBV_BACKMATERIAL = 44; //0x2c
	GLSLBV_LIGHTSOURCE = 45; //0x2d
	GLSLBV_LIGHTMODEL = 46; //0x2e
	GLSLBV_FRONTLIGHTMODELPRODUCT = 47; //0x2f
	GLSLBV_BACKLIGHTMODELPRODUCT = 48; //0x30
	GLSLBV_FRONTLIGHTPRODUCT = 49; //0x31
	GLSLBV_BACKLIGHTPRODUCT = 50; //0x32
	GLSLBV_TEXTUREENVCOLOR = 51; //0x33
	GLSLBV_EYEPLANES = 52; //0x34
	GLSLBV_EYEPLANET = 53; //0x35
	GLSLBV_EYEPLANER = 54; //0x36
	GLSLBV_EYEPLANEQ = 55; //0x37
	GLSLBV_OBJECTPLANES = 56; //0x38
	GLSLBV_OBJECTPLANET = 57; //0x39
	GLSLBV_OBJECTPLANER = 58; //0x3a
	GLSLBV_OBJECTPLANEQ = 59; //0x3b
	GLSLBV_FOG = 60; //0x3c
	GLSLBV_FRONTCOLOR = 61; //0x3d
	GLSLBV_BACKCOLOR = 62; //0x3e
	GLSLBV_FRONTSECONDARYCOLOR = 63; //0x3f
	GLSLBV_BACKSECONDARYCOLOR = 64; //0x40
	GLSLBV_TEXCOORD = 65; //0x41
	GLSLBV_FOGFRAGCOORD = 66; //0x42
	GLSLBV_POINTCOORD = 67; //0x43
	GLSLESBV_POINTCOORD = 67; //0x43
	GLSLBV_PMXTWOSIDEENABLE = 68; //0x44
	GLSLBV_PMXSWAPFRONTFACE = 69; //0x45
	GLSLBV_PMXPOINTSIZEENABLE = 70; //0x46
	GLSLBV_PMXPOINTSIZE = 71; //0x47
	GLSLBV_PMXDEPTHTEXTUREDESC0 = 72; //0x48
	GLSLBV_PMXDEPTHTEXTUREDESC1 = 73; //0x49
	GLSLBV_PMXDEPTHTEXTUREDESC2 = 74; //0x4a
	GLSLBV_PMXDEPTHTEXTUREDESC3 = 75; //0x4b
	GLSLBV_PMXDEPTHTEXTUREDESC4 = 76; //0x4c
	GLSLBV_PMXDEPTHTEXTUREDESC5 = 77; //0x4d
	GLSLBV_PMXDEPTHTEXTUREDESC6 = 78; //0x4e
	GLSLBV_PMXDEPTHTEXTUREDESC7 = 79; //0x4f
	GLSLBV_PMXPERMTEXTURE = 80; //0x50
	GLSLBV_PMXGRADTEXTURE = 81; //0x51
	GLSLBV_PMXCOLOURCLAMPMIN = 82; //0x52
	GLSLBV_PMXCOLOURCLAMPMAX = 83; //0x53
	GLSLBV_PMXFOGMODE = 84; //0x54
	GLSLBV_PMXFOGPARAM = 85; //0x55
	GLSLBV_PMXCLIPPLANE = 86; //0x56
	GLSLBV_PMXPOSADJUST = 87; //0x57
	GLSLBV_NUM_BUILTINS = 88; //0x58
	GLSLBV_SPECIAL_VERTEXBLENDWEIGHT = 89; //0x59
	GLSLBV_SPECIAL_VERTEXMATRIXINDEX = 90; //0x5a
	GLSLBV_SPECIAL_MODELVIEWMATRIXTRANSPOSEPALETTE = 91; //0x5b
	GLSLBV_SPECIAL_MODELVIEWMATRIXINVERSEPALETTE = 92; //0x5c
	GLSLBV_PMXLIGHTSOURCE0 = 93; //0x5d
	GLSLBV_PMXLIGHTSOURCE1 = 94; //0x5e
	GLSLBV_PMXLIGHTSOURCE2 = 95; //0x5f
	GLSLBV_PMXLIGHTSOURCE3 = 96; //0x60
	GLSLBV_PMXLIGHTSOURCE4 = 97; //0x61
	GLSLBV_PMXLIGHTSOURCE5 = 98; //0x62
	GLSLBV_PMXLIGHTSOURCE6 = 99; //0x63
	GLSLBV_PMXLIGHTSOURCE7 = 100; //0x64
	GLSLBV_PMXLINEPARAMS = 101; //0x65
	GLSLBV_MATRIXPALETTEINDEXCLAMP = 102; //0x66
	GLSLBV_NUM_BUILTINS_WITH_SPECIALS = 103; //0x67
}

typedef enum GLSLBuiltInVariableIDTAG GLSLBuiltInVariableID

enum GLSLVaryingMaskTAG {
	GLSLVM_POSITION = 1; //0x1
	GLSLVM_COLOR0 = 2; //0x2
	GLSLVM_COLOR1 = 4; //0x4
	GLSLVM_TEXCOORD0 = 8; //0x8
	GLSLVM_TEXCOORD1 = 16; //0x10
	GLSLVM_TEXCOORD2 = 32; //0x20
	GLSLVM_TEXCOORD3 = 64; //0x40
	GLSLVM_TEXCOORD4 = 128; //0x80
	GLSLVM_TEXCOORD5 = 256; //0x100
	GLSLVM_TEXCOORD6 = 512; //0x200
	GLSLVM_TEXCOORD7 = 1024; //0x400
	GLSLVM_TEXCOORD8 = 2048; //0x800
	GLSLVM_TEXCOORD9 = 4096; //0x1000
	GLSLVM_PTSIZE = 8192; //0x2000
	GLSLVM_FOG = 16384; //0x4000
	GLSLVM_CLIPPLANE0 = 32768; //0x8000
	GLSLVM_CLIPPLANE1 = 65536; //0x10000
	GLSLVM_CLIPPLANE2 = 131072; //0x20000
	GLSLVM_CLIPPLANE3 = 262144; //0x40000
	GLSLVM_CLIPPLANE4 = 524288; //0x80000
	GLSLVM_CLIPPLANE5 = 1048576; //0x100000
	GLSLVM_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum GLSLVaryingMaskTAG GLSLVaryingMask

enum GLSLHWRegTypeTAG {
	HWREG_FLOAT = 1; //0x1
	HWREG_TEX = 2; //0x2
}

typedef enum GLSLHWRegTypeTAG GLSLHWRegType

struct GLSLRegisterInfoTAG {
	GLSLHWRegType eRegType // @0
		union {
		IMG_UINT32 uBaseComp
		IMG_UINT32 uTextureUnit
	} u // @4
	IMG_UINT32 uCompAllocCount // @8
	IMG_UINT32 ui32CompUseMask // @c
}

typedef struct GLSLRegisterInfoTAG GLSLRegisterInfo

struct GLSLBindingSymbolTAG {
	IMG_CHAR* pszName // @0
	GLSLTypeSpecifier eTypeSpecifier // @4
	GLSLTypeQualifier eTypeQualifier // @8
	GLSLVaryingModifierFlags eVaryingModifierFlags // @c
	IMG_INT32 iActiveArraySize // @10
	IMG_INT32 iDeclaredArraySize // @14
	GLSLRegisterInfo sRegisterInfo // @18
	IMG_UINT32 uNumBaseTypeMembers // @28
	struct GLSLBindingSymbolTAG* psBaseTypeMembers // @2c
	GLSLBuiltInVariableID eBIVariableID // @30
}

typedef struct GLSLBindingSymbolTAG GLSLBindingSymbol

struct GLSLDepthTextureTAG {
	GLSLBindingSymbol* psTextureSymbol // @0
	IMG_INT32 iOffset // @4
	GLSLBindingSymbol* psTexDescSymbol // @8
}

typedef struct GLSLDepthTextureTAG GLSLDepthTexture

struct GLSLBindingSymbolListTAG {
	IMG_UINT32 uNumBindings // @0
	IMG_UINT32 uMaxBindingEntries // @4
	GLSLBindingSymbol* psBindingSymbolEntries // @8
	IMG_UINT32 uNumCompsUsed // @c
	IMG_FLOAT* pfConstantData // @10
	IMG_UINT32 uNumDepthTextures // @14
	GLSLDepthTexture* psDepthTextures // @18
}

typedef struct GLSLBindingSymbolListTAG GLSLBindingSymbolList

struct GLSLInfoLogTAG {
	IMG_CHAR* pszInfoLogString // @0
	IMG_UINT32 uInfoLogStringLength // @4
}

typedef struct GLSLInfoLogTAG GLSLInfoLog

struct GLSLConstRangeTAG {
	IMG_UINT32 uStart // @0
	IMG_UINT32 uCount // @4
}

typedef struct GLSLConstRangeTAG GLSLConstRange

enum GLSLProgramFlagsTAG {
	GLSLPF_UNIFLEX_INPUT = 1; //0x1
	GLSLPF_UNIFLEX_OUTPUT = 2; //0x2
	GLSLPF_NATIVE_HW_CODE = 3; //0x3
	GLSLPF_UNIPATCH_INPUT = 4; //0x4
	GLSLPF_DISCARD_EXECUTED = 8; //0x8
	GLSLPF_FRAGDEPTH_WRITTENTO = 16; //0x10
	GLSLPF_OUTPUT_LINEWIDTH = 262144; //0x40000
	GLSLPF_FORCE_I32 = 2147483647; //0x7fffffff
}

typedef enum GLSLProgramFlagsTAG GLSLProgramFlags

enum GLSLCompilerWarningsTAG {
	GLSLCW_WARN_GRADIENT_CALC_INSIDE_CONDITIONAL = 1; //0x1
	GLSLCW_WARN_USE_OF_UNINITIALISED_DATA = 2; //0x2
	GLSLCW_WARN_FUNCTION_NOT_CALLED = 4; //0x4
	GLSLCW_WARN_RECURSIVE_FUNCTION_CALL = 8; //0x8
	GLSLCW_WARN_ALL = 2147483647; //0x7fffffff
}

typedef enum GLSLCompilerWarningsTAG GLSLCompilerWarnings

struct GLSLUniFlexHWCodeInfoTAG {
	UNIFLEX_PROGRAM_PARAMETERS* psUFParams // @0
	UNIFLEX_TEXFORM* psTextureForm // @4
}

typedef struct GLSLUniFlexHWCodeInfoTAG GLSLUniFlexHWCodeInfo

struct GLSLRequestedPrecisionsTAG {
	GLSLPrecisionQualifier eDefaultUserVertFloat // @0
	GLSLPrecisionQualifier eDefaultUserVertInt // @4
	GLSLPrecisionQualifier eDefaultUserVertSampler // @8
	GLSLPrecisionQualifier eDefaultUserFragFloat // @c
	GLSLPrecisionQualifier eDefaultUserFragInt // @10
	GLSLPrecisionQualifier eDefaultUserFragSampler // @14
	GLSLPrecisionQualifier eVertBooleanPrecision // @18
	GLSLPrecisionQualifier eFragBooleanPrecision // @1c
	GLSLPrecisionQualifier eBIStateFloat // @20
	GLSLPrecisionQualifier eBIStateInt // @24
	GLSLPrecisionQualifier eBIVertAttribFloat // @28
	GLSLPrecisionQualifier eBIVaryingFloat // @2c
	GLSLPrecisionQualifier eBIFragFloat // @30
	GLSLPrecisionQualifier eGLPosition // @34
	GLSLPrecisionQualifier eGLPointSize // @38
	GLSLPrecisionQualifier eGLPointCoord // @3c
	GLSLPrecisionQualifier eDepthRange // @40
	GLSLPrecisionQualifier eForceUserVertFloat // @44
	GLSLPrecisionQualifier eForceUserVertInt // @48
	GLSLPrecisionQualifier eForceUserVertSampler // @4c
	GLSLPrecisionQualifier eForceUserFragFloat // @50
	GLSLPrecisionQualifier eForceUserFragInt // @54
	GLSLPrecisionQualifier eForceUserFragSampler // @58
}

typedef struct GLSLRequestedPrecisionsTAG GLSLRequestedPrecisions

struct GLSLCompilerResourcesTAG {
	IMG_INT32 iGLMaxVertexAttribs // @0
	IMG_INT32 iGLMaxTextureImageUnits // @4
	IMG_INT32 iGLMaxDrawBuffers // @8
	IMG_INT32 iGLMaxVertexTextureImageUnits // @c
	IMG_INT32 iGLMaxCombinedTextureImageUnits // @10
	IMG_INT32 iGLMaxVertexUniformVectors // @14
	IMG_INT32 iGLMaxVaryingVectors // @18
	IMG_INT32 iGLMaxFragmentUniformVectors // @1c
}

typedef struct GLSLCompilerResourcesTAG GLSLCompilerResources

struct GLSLInlineFuncRulesTAG {
	IMG_BOOL bInlineSamplerParamFunc // @0
	IMG_BOOL bInlineCalledOnceFunc // @4
	IMG_UINT32 uNumICInstrsBodyLessThan // @8
	IMG_UINT32 uNumParamComponentsGreaterThan // @c
}

typedef struct GLSLInlineFuncRulesTAG GLSLInlineFuncRules

struct GLSLUnrollLoopRulesTAG {
	IMG_BOOL bEnableUnroll // @0
	IMG_BOOL bUnrollRelativeAddressingOnly // @4
	IMG_UINT32 uMaxNumIterations // @8
}

typedef struct GLSLUnrollLoopRulesTAG GLSLUnrollLoopRules

struct GLSLInitCompilerContextTAG {
	GLSLLogFiles eLogFiles // @0
	IMG_BOOL bSuccessfulInit // @4
	GLSLRequestedPrecisions sRequestedPrecisions // @8
	GLSLCompilerResources sCompilerResources // @64
	GLSLInlineFuncRules sInlineFuncRules // @84
	GLSLUnrollLoopRules sUnrollLoopRules // @94
	IMG_VOID* pvCompilerPrivateData // @a0
}

typedef struct GLSLInitCompilerContextTAG GLSLInitCompilerContext

struct GLSLCompileProgramContextTAG {
	GLSLInitCompilerContext* psInitCompilerContext // @0
	IMG_CHAR** ppszSourceCodeStrings // @4
	IMG_UINT32 uNumSourceCodeStrings // @8
	GLSLProgramType eProgramType // @c
	IMG_BOOL bCompleteProgram // @10
	IMG_BOOL bDisplayMetrics // @14
	IMG_BOOL bValidateOnly // @18
	GLSLCompilerWarnings eEnabledWarnings // @1c
}

typedef struct GLSLCompileProgramContextTAG GLSLCompileProgramContext

struct GLES2TextureChunkRec {
	IMG_UINT32 ui32BytesPerChunk // @0
	IMG_UINT32 ui32ChunkFormat // @4
}

typedef struct GLES2TextureChunkRec GLES2TextureChunk

struct GLES2TextureFormatRec {
	IMG_UINT32 ui32NumChunks // @0
	IMG_UINT32 ui32TotalBytesPerTexel // @4
	IMG_UINT32 ui32BaseFormatIndex // @8
	USP_TEX_FORMAT sTexFormat // @c
	GLES2TextureChunk[4] asChunk // @40
}

typedef struct GLES2TextureFormatRec GLES2TextureFormat

struct GLES2MipMapLevelRec {
	GLES2FrameBufferAttachable sFBAttachable // @0
	IMG_UINT8* pui8Buffer // @14
	IMG_UINT32 ui32Width // @18
	IMG_UINT32 ui32Height // @1c
	IMG_UINT32 ui32ImageSize // @20
	IMG_INT32 i32WidthLog2 // @24
	IMG_INT32 i32HeightLog2 // @28
	GLenum eRequestedFormat // @2c
	const GLES2TextureFormat* psTexFormat // @30
	struct GLES2TextureRec* psTex // @34
	IMG_UINT32 ui32Level // @38
}

struct GLES2TextureRec {
	GLES2NamedItem sNamedItem // @0
	FRMFrameResource sResource // @c
	GLES2TextureParamState sState // @18
	IMG_UINT32 ui32TextureTarget // @44
	IMG_UINT32 ui32NumLevels // @48
	GLES2MipMapLevel* psMipLevel // @4c
	IMG_UINT32 ui32NumRenderTargets // @50
	IMG_BOOL bResidence // @54
	IMG_BOOL bHasEverBeenGhosted // @58
	IMG_UINT32 ui32LevelsConsistent // @5c
	const GLES2TextureFormat* psFormat // @60
	IMG_UINT32 ui32HWFlags // @64
	IMG_UINT32 ui32ChunkSize // @68
	PVRSRV_CLIENT_MEM_INFO* psMemInfo // @6c
	void* pfnReadBackData // @70
	EGLImage* psEGLImageSource // @74
	EGLImage* psEGLImageTarget // @78
}

typedef struct GLES2MipMapLevelRec GLES2MipMapLevel

struct GLES2TextureParamStateRec {
	IMG_UINT32 ui32StateWord0 // @0
	IMG_UINT32[4] aui32StateWord1 // @4
	IMG_UINT32[4] aui32StateWord2 // @14
	IMG_UINT32 ui32MinFilter // @24
	IMG_UINT32 ui32MagFilter // @28
}

typedef struct GLES2TextureParamStateRec GLES2TextureParamState

struct GLES2TextureUnitStateRec {
	GLES2TextureParamState*[2] psTexture // @0
}

typedef struct GLES2TextureUnitStateRec GLES2TextureUnitState

void

typedef struct GLES2TextureRec GLES2Texture

struct GLES2TextureManagerRec {
	IMG_UINT32 ui32GhostMem // @0
	FRMFrameResourceManager sFRM // @4
	PVRSRV_CLIENT_MEM_INFO* psWhiteDummyTexture // @3c
	PVRSRV_CLIENT_MEM_INFO* psBlackDummyTexture // @40
}

typedef struct GLES2TextureManagerRec GLES2TextureManager

struct GLES2TextureMachineRec {
	GLES2Texture*[2] psDefaultTexture // @0
	GLES2Texture*[8] apsBoundTexture // @8
	IMG_UINT32[8] aui32CurrentTarget // @48
	IMG_BOOL[8] abTexUnitValid // @68
	void* pfnInitTextureManager // @88
}

void

typedef struct GLES2TextureMachineRec GLES2TextureMachine

struct GLES2CompiledTextureState_TAG {
	IMG_UINT32 ui32ImageUnitEnables // @0
	PDS_TEXTURE_IMAGE_UNIT[32] asTextureImageChunks // @4
	IMG_UINT32[8] aui32ChunkCount // @184
	const GLES2TextureFormat*[8] apsTexFormat // @1a4
	IMG_BOOL bSomeTexturesWereGhosted // @1c4
}

typedef struct GLES2CompiledTextureState_TAG GLES2CompiledTextureState

typedef struct {
	GLenum[2] eHint // @0
} GLES2hintState

struct GLES2rasterStateRec {
	GLES2color sBlendColor // @0
	IMG_UINT32 ui32BlendEquation // @10
	IMG_UINT32 ui32BlendFactor // @14
	IMG_UINT32 ui32BlendColor // @18
	IMG_UINT32 ui32ColorMask // @1c
	GLES2color sClearColor // @20
	IMG_UINT32 ui32ClearColor // @30
}

typedef struct GLES2rasterStateRec GLES2rasterState

struct GLES2polygonStateRec {
	GLenum eCullMode // @0
	GLenum eFrontFaceDirection // @4
	IMG_FLOAT fFactor // @8
	IMG_FLOAT fUnits // @c
}

typedef struct GLES2polygonStateRec GLES2polygonState

struct GLES2depthStateRec {
	IMG_UINT32 ui32TestFunc // @0
	IMG_FLOAT fClear // @4
}

typedef struct GLES2depthStateRec GLES2depthState

struct GLES2viewportRec {
	IMG_INT32 i32X // @0
	IMG_INT32 i32Y // @4
	IMG_UINT32 ui32Width // @8
	IMG_UINT32 ui32Height // @c
	IMG_FLOAT fZNear // @10
	IMG_FLOAT fZFar // @14
	IMG_FLOAT fXCenter // @18
	IMG_FLOAT fXScale // @1c
	IMG_FLOAT fYCenter // @20
	IMG_FLOAT fYScale // @24
	IMG_FLOAT fZCenter // @28
	IMG_FLOAT fZScale // @2c
}

typedef struct GLES2viewportRec GLES2viewport

struct GLES2lineStateRec {
	IMG_FLOAT fWidth // @0
}

typedef struct GLES2lineStateRec GLES2lineState

struct GLES2multisampleStateRec {
	IMG_FLOAT fSampleCoverageValue // @0
	IMG_BOOL bSampleCoverageInvert // @4
}

typedef struct GLES2multisampleStateRec GLES2multisampleState

struct GLES2stencilStateRec {
	IMG_INT32 i32Clear // @0
	IMG_UINT32 ui32FFStencil // @4
	IMG_UINT32 ui32BFStencil // @8
	IMG_UINT32 ui32FFStencilRef // @c
	IMG_UINT32 ui32BFStencilRef // @10
}

typedef struct GLES2stencilStateRec GLES2stencilState

struct GLES2textureStateRec {
	IMG_UINT32 ui32ActiveTexture // @0
	GLES2TextureUnitState* psActive // @4
	GLES2TextureUnitState[8] asUnit // @8
}

typedef struct GLES2textureStateRec GLES2textureState

struct GLES2clientPixelStateRec {
	IMG_UINT32 ui32PackAlignment // @0
	IMG_UINT32 ui32UnpackAlignment // @4
}

typedef struct GLES2clientPixelStateRec GLES2clientPixelState

struct GLES2scissorRec {
	IMG_INT32 i32ScissorX // @0
	IMG_INT32 i32ScissorY // @4
	IMG_UINT32 ui32ScissorWidth // @8
	IMG_UINT32 ui32ScissorHeight // @c
}

typedef struct GLES2scissorRec GLES2scissor

struct GLES2stateRec {
	GLES2hintState sHints // @0
	GLES2scissor sScissor // @8
	GLES2clientPixelState sClientPixel // @18
	GLES2textureState sTexture // @20
	GLES2AttribState sAttrib // @68
	GLES2stencilState sStencil // @168
	GLES2multisampleState sMultisample // @17c
	GLES2polygonState sPolygon // @184
	GLES2rasterState sRaster // @194
	GLES2depthState sDepth // @1c8
	GLES2viewport sViewport // @1d0
	GLES2lineState sLine // @200
}

typedef struct GLES2stateRec GLES2state

struct GLSLUniFlexCodeTAG {
	IMG_VOID* pvUFCode // @0
	IMG_UINT32 uNumConstRanges // @4
	GLSLConstRange* psConstRangeList // @8
	IMG_UINT32 uConstStaticFlagCount // @c
	IMG_UINT32* puConstStaticFlags // @10
	IMG_UINT32 uNumIndexableTempArrays // @14
	UNIFLEX_INDEXABLE_TEMP_SIZE* psIndexableTempArraySizes // @18
	IMG_UINT32 uTexCoordCentroidMask // @1c
	IMG_UINT32[16] auSamplerDims // @20
	IMG_BOOL bVaryingsPacked // @60
	GLSLVaryingMask eActiveVaryingMask // @64
	IMG_UINT32[10] auTexCoordDims // @68
	GLSLPrecisionQualifier[10] aeTexCoordPrecisions // @90
	USP_PC_SHADER* psUniPatchInput // @b8
	USP_PC_SHADER* psUniPatchInputMSAATrans // @bc
}

typedef struct GLSLUniFlexCodeTAG GLSLUniFlexCode

struct GLSLCompileUniflexProgramContextTAG {
	GLSLProgramFlags eOutputCodeType // @0
	IMG_BOOL bCompileMSAATrans // @4
	GLSLUniFlexHWCodeInfo* psUniflexHWCodeInfo // @8
	GLSLCompileProgramContext* psCompileProgramContext // @c
}

typedef struct GLSLCompileUniflexProgramContextTAG GLSLCompileUniflexProgramContext

struct GLSLCompiledUniflexProgramTAG {
	GLSLProgramType eProgramType // @0
	GLSLProgramFlags eProgramFlags // @4
	IMG_BOOL bSuccessfullyCompiled // @8
	GLSLInfoLog sInfoLog // @c
	GLSLUniFlexCode* psUniFlexCode // @14
	GLSLBindingSymbolList* psBindingSymbolList // @18
	GLSLCompileUniflexProgramContext* psCompileUniflexProgramContext // @1c
}

typedef struct GLSLCompiledUniflexProgramTAG GLSLCompiledUniflexProgram

struct GLES2UniformRec {
	IMG_CHAR* pszName // @0
	IMG_INT32 i32Location // @4
	IMG_UINT32 ui32ActiveArraySize // @8
	IMG_UINT32 ui32DeclaredArraySize // @c
	GLSLTypeSpecifier eTypeSpecifier // @10
	IMG_UINT32 ui32VPSamplerIndex // @14
	IMG_UINT32 ui32FPSamplerIndex // @18
	GLSLBindingSymbol* psSymbolVP // @1c
	GLSLBindingSymbol* psSymbolFP // @20
}

typedef struct GLES2UniformRec GLES2Uniform

struct GLES2BuiltInUniformRec {
	GLSLBuiltInVariableID eBuiltinVariableID // @0
	GLSLBindingSymbol* psSymbolVP // @4
	GLSLBindingSymbol* psSymbolFP // @8
}

typedef struct GLES2BuiltInUniformRec GLES2BuiltInUniform

typedef struct UCH_UseCodeHeapTAG UCH_UseCodeHeap

struct UCH_UseCodeHeapTAG {
	UCH_CodeHeapType eType // @0
	PVRSRV_DEV_DATA* ps3DDevData // @4
	PVRSRV_CLIENT_MEM_INFO* psCodeMemory // @8
	UCH_UseCodeBlock* psFreeBlockList // @c
	IMG_INT32 i32AllocationsNotDeallocated // @10
	IMG_HANDLE hHeapAllocator // @14
	IMG_BOOL bDirtySinceLastTAKick // @18
}

struct UCH_UseCodeBlockTAG {
	UCH_UseCodeHeap* psHeap // @0
	PVRSRV_CLIENT_MEM_INFO* psCodeMemory // @4
	IMG_DEV_VIRTADDR sCodeAddress // @8
	IMG_UINT8* pui8LinAddress // @c
	IMG_UINT32 ui32Size // @10
	struct UCH_UseCodeBlockTAG* psNext // @14
	IMG_VOID* pvClientData // @18
}

typedef struct UCH_UseCodeBlockTAG UCH_UseCodeBlock

enum undefined {
	UCH_USE_CODE_HEAP_TYPE = 1; //0x1
	UCH_PDS_CODE_HEAP_TYPE = 2; //0x2
}

typedef enum undefined UCH_CodeHeapType

struct GLES2PDSInfo_TAG {
	IMG_UINT32 ui32DMSInfo // @0
	IMG_UINT32[31] aui32TSPParamFetchInterface // @4
	IMG_UINT32[31] aui32LayerControl // @80
	IMG_UINT32 ui32NonDependentTextureCount // @fc
	IMG_UINT32 ui32IterationCount // @100
	IMG_UINT32 ui32DependencyControl // @104
	IMG_UINT32 ui32NonDependentImageUnits // @108
}

typedef struct GLES2PDSInfo_TAG GLES2PDSInfo

struct GLES2USESecondaryUploadTaskTAG {
	IMG_UINT32 ui32RefCount // @0
	UCH_UseCodeBlock* psSecondaryCodeBlock // @4
}

typedef struct GLES2USESecondaryUploadTaskTAG GLES2USESecondaryUploadTask

struct GLES2SharedShaderStateRec {
	GLSLBindingSymbolList sBindingSymbolList // @0
	GLSLProgramFlags eProgramFlags // @1c
	GLSLVaryingMask eActiveVaryingMask // @20
	IMG_UINT32[10] aui32TexCoordDims // @24
	GLSLPrecisionQualifier[10] aeTexCoordPrecisions // @4c
	IMG_VOID* pvUniPatchShader // @74
	IMG_VOID* pvUniPatchShaderMSAATrans // @78
	GLES2USESecondaryUploadTask* psSecondaryUploadTask // @7c
	IMG_UINT32 ui32RefCount // @80
}

typedef struct GLES2SharedShaderStateRec GLES2SharedShaderState

struct GLES2ShaderRec {
	GLES2NamedItem sNamedItem // @0
	IMG_UINT32 ui32Type // @c
	IMG_CHAR* pszSource // @10
	IMG_CHAR* pszInfoLog // @14
	GLES2SharedShaderState* psSharedState // @18
	IMG_BOOL bSuccessfulCompile // @1c
	IMG_BOOL bDeleting // @20
}

typedef struct GLES2ShaderRec GLES2Shader

struct GLES2AttributeRec {
	IMG_INT32 i32Index // @0
	IMG_UINT32 ui32NumIndices // @4
	GLSLBindingSymbol* psSymbolVP // @8
}

typedef struct GLES2AttributeRec GLES2Attribute

struct GLES2VaryingRec {
	IMG_CHAR* pszName // @0
	GLSLTypeSpecifier eTypeSpecifier // @4
	IMG_UINT32 ui32ActiveArraySize // @8
	IMG_UINT32 ui32DeclaredArraySize // @c
	GLSLBindingSymbol* psSymbolVP // @10
	GLSLBindingSymbol* psSymbolFP // @14
}

typedef struct GLES2VaryingRec GLES2Varying

struct GLES2AttribUserBindingRec {
	IMG_CHAR* pszName // @0
	IMG_INT32 i32Index // @4
	struct GLES2AttribUserBindingRec* psNext // @8
}

typedef struct GLES2AttribUserBindingRec GLES2AttribUserBinding

struct GLES2CopyRangeTAG {
	IMG_UINT32 ui32Start // @0
	IMG_UINT32 ui32End // @4
}

typedef struct GLES2CopyRangeTAG GLES2CopyRange

struct GLES2UniformCopyRangeTAG {
	GLES2CopyRange sFloatCopyRange // @0
	GLES2CopyRange sBoolCopyRange // @8
	GLES2CopyRange sIntCopyRange // @10
}

typedef struct GLES2UniformCopyRangeTAG GLES2UniformCopyRange

struct GLES2TextureSamplerRec {
	IMG_UINT8 ui8SamplerTypeIndex // @0
	IMG_UINT8 ui8ImageUnit // @1
	GLES2Uniform* psUniformEntry // @4
}

typedef struct GLES2TextureSamplerRec GLES2TextureSampler

struct GLES2CompilerFuncTableTAG {
	IMG_BOOL* pfnInitCompiler // @0
	IMG_BOOL* pfnShutDownCompiler // @4
	GLSLCompiledUniflexProgram** pfnCompileToUniflex // @8
	void* pfnDisplayMetrics // @c
	void* pfnFreeCompiledUniflexProgram // @10
}

typedef enum tag_img_bool IMG_BOOL

void

void

typedef struct GLES2CompilerFuncTableTAG GLES2CompilerFuncTable

struct GLES2ProgramMachineRec {
	IMG_VOID* pvUniPatchContext // @0
	GLES2Program* psCurrentProgram // @4
	GLES2USEShaderVariant* psCurrentFragmentVariant // @8
	GLES2USEShaderVariant* psCurrentVertexVariant // @c
	IMG_HANDLE hGLSLCompiler // @10
	GLES2CompilerFuncTable sGLSLFuncTable // @14
	GLSLInitCompilerContext sInitCompilerContext // @28
	PVRSRV_CLIENT_MEM_INFO* psDummyFragUSECode // @cc
	PVRSRV_CLIENT_MEM_INFO* psDummyVertUSECode // @d0
}

typedef struct GLES2ProgramMachineRec GLES2ProgramMachine

enum GLES2PrimType_TAG {
	GLES2_PRIMTYPE_POINT = 0; //0x0
	GLES2_PRIMTYPE_LINE = 1; //0x1
	GLES2_PRIMTYPE_LINE_LOOP = 2; //0x2
	GLES2_PRIMTYPE_LINE_STRIP = 3; //0x3
	GLES2_PRIMTYPE_TRIANGLE = 4; //0x4
	GLES2_PRIMTYPE_TRIANGLE_STRIP = 5; //0x5
	GLES2_PRIMTYPE_TRIANGLE_FAN = 6; //0x6
	GLES2_PRIMTYPE_SPRITE = 7; //0x7
	GLES2_PRIMTYPE_MAX = 8; //0x8
}

typedef enum GLES2PrimType_TAG GLES2PrimType

struct GLES2PDSVertexState_TAG {
	PDS_VERTEX_SHADER_PROGRAM_INFO sProgramInfo // @0
	IMG_UINT32[186] aui32LastPDSProgram // @8a0
	IMG_UINT32 ui32ProgramSize // @b88
}

typedef struct GLES2PDSVertexState_TAG GLES2PDSVertexState

struct GLES2CompiledRenderState_TAG {
	IMG_UINT32 ui32ISPControlWordA // @0
	IMG_UINT32 ui32ISPControlWordB // @4
	IMG_UINT32 ui32ISPControlWordC // @8
	IMG_UINT32 ui32BFISPControlWordA // @c
	IMG_UINT32 ui32BFISPControlWordB // @10
	IMG_UINT32 ui32BFISPControlWordC // @14
	IMG_UINT32 ui32MTEControl // @18
	IMG_UINT32 ui32ARGBBlendConstantColor // @1c
	IMG_BOOL bHasConstantColorBlend // @20
	IMG_UINT32 ui32AlphaTestFlags // @24
	IMG_UINT32 ui32ISPFeedback0 // @28
	IMG_UINT32 ui32ISPFeedback1 // @2c
}

typedef struct GLES2CompiledRenderState_TAG GLES2CompiledRenderState

struct GLES2BRN22336Prims_TAG {
	UCH_UseCodeBlock* psVertexCodeBlock // @0
	PVRSRV_CLIENT_MEM_INFO* psPDSVertexBlock // @4
	PVRSRV_CLIENT_MEM_INFO* psVertexAndIndexBlock // @8
	IMG_UINT32 ui32OutputStateDataSize // @c
	IMG_UINT32 ui32VertexProgramDataSize // @10
}

typedef struct GLES2BRN22336Prims_TAG GLES2BRN22336Prims

struct GLES2BRN21797State_TAG {
	PVRSRV_CLIENT_MEM_INFO* psPDSStateBlock // @0
	IMG_UINT32 ui32PDSProgramDataSize // @4
}

typedef struct GLES2BRN21797State_TAG GLES2BRN21797State

struct GLES2PrimitiveMachine_TAG {
	GLES2CompiledRenderState sRenderState // @0
	GLES2CompiledTextureState sVertexTextureState // @30
	GLES2CompiledTextureState sFragmentTextureState // @1f8
	GLES2PDSVertexState sPDSVertexState // @3c0
	UCH_UseCodeBlock* psHWBGCodeBlock // @f4c
	GLES2BRN22336Prims sBRN22336Prims // @f50
	GLES2BRN21797State sBRN21797State // @f64
	UCH_UseCodeBlock* psClearVertexCodeBlock // @f6c
	UCH_UseCodeBlock* psClearFragmentCodeBlock // @f70
	UCH_UseCodeBlock* psAccumVertexCodeBlock // @f74
	UCH_UseCodeBlock* psScissorVertexCodeBlock // @f78
	UCH_UseCodeBlock* psDummyPixelSecondaryPDSCode // @f7c
	UCH_UseCodeBlock* psPixelEventEOPCodeBlock // @f80
	UCH_UseCodeBlock* psStateCopyCodeBlock // @f84
	GLES2PrimType ePreviousPrimitiveType // @f88
	IMG_BOOL bPrevious32BitIndices // @f8c
	IMG_UINT32 ui32ArrayEnables // @f90
	IMG_UINT32 ui32CurrentOutputStateBlockUSEPipe // @f94
	IMG_DEV_VIRTADDR uOutputStatePDSBaseAddress // @f98
	IMG_UINT32 ui32OutputStatePDSDataSize // @f9c
	IMG_UINT32 ui32OutputStateUSEAttribSize // @fa0
	IMG_DEV_VIRTADDR uVertexPDSBaseAddress // @fa4
	IMG_UINT32 ui32VertexPDSDataSize // @fa8
	IMG_DEV_VIRTADDR uFragmentPDSBaseAddress // @fac
	IMG_UINT32 ui32FragmentPDSDataSize // @fb0
	IMG_DEV_VIRTADDR uVertexPDSSecAttribBaseAddress // @fb4
	IMG_UINT32 ui32VertexPDSSecAttribDataSize // @fb8
	IMG_DEV_VIRTADDR uFragmentPDSSecAttribBaseAddress // @fbc
	IMG_UINT32 ui32FragmentPDSSecAttribDataSize // @fc0
}

typedef struct GLES2PrimitiveMachine_TAG GLES2PrimitiveMachine

struct GLES2_Extension_TAG {
	const IMG_CHAR* pszExtensionName // @0
	IMG_UINT32 ui32ExtensionFlag // @4
}

struct GLESAppHintsRec {
	IMG_BOOL bForceNoExternalZBuffer // @0
	IMG_BOOL bDumpShaders // @4
	IMG_BOOL bDumpCompilerLogFiles // @8
	IMG_BOOL bOptimisedValidation // @c
	IMG_BOOL bDisableHWTextureUpload // @10
	IMG_UINT32 ui32AdjustShaderPrecision // @14
	IMG_UINT32 ui32MaxPDSVariants // @18
	IMG_UINT32 ui32DefaultVIBufferSize // @1c
	IMG_UINT32 ui32DefaultPDSVertBufferSize // @20
	IMG_UINT32 ui32DefaultVDMBufferSize // @24
	IMG_BOOL bStrictBinaryVersionComparison // @28
	IMG_FLOAT fPolygonUnitsMultiplier // @2c
	IMG_FLOAT fPolygonFactorMultiplier // @30
}

typedef struct GLESAppHintsRec GLESAppHints

struct GLES2ContextSharedStateTAG {
	IMG_UINT32 ui32RefCount // @0
	GLES2TextureManager* psTextureManager // @4
	FRMFrameResourceManager sUSEShaderVariantManager // @8
	GLES2NamesArray*[5] apsNamesArray // @40
	UCH_UseCodeHeap* psUSEVertexCodeHeap // @54
	UCH_UseCodeHeap* psUSEFragmentCodeHeap // @58
	UCH_UseCodeHeap* psPDSFragmentCodeHeap // @5c
	PVRSRV_RES_HANDLE hPrimaryLock // @60
	PVRSRV_RES_HANDLE hSecondaryLock // @68
	PVRSRV_CLIENT_MEM_INFO* psSequentialStaticIndicesMemInfo // @70
	PVRSRV_CLIENT_MEM_INFO* psLineStripStaticIndicesMemInfo // @74
}

typedef struct GLES2ContextSharedStateTAG GLES2ContextSharedState

// external function PC=<0x7970;0x7984>
IMG_BOOL CreateBufObjState(
	GLES2Context* gc
	)
{
	IMG_UINT32 i
}


// external function PC=<0x7984;0x79a4>
void SetupBufObjNameArray(
	GLES2NamesArray* psNamesArray
	)
{
}


// external function PC=<0x79a4;0x7a44>
GLboolean glUnmapBufferOES(
	GLenum target
	)
{
	GLES2BufferObject* psBufObj
	IMG_UINT32 ui32TargetIndex
	GLES2Context* gc
}


// external function PC=<0x7a44;0x7a8c>
void glGenBuffers(
	GLsizei n
	GLuint* buffers
	)
{
	GLES2Context* gc
}


// external function PC=<0x7a8c;0x7ae4>
void FreeBufObjState(
	GLES2Context* gc
	)
{
	IMG_UINT32 i
}


// external function PC=<0x7ae4;0x7bcc>
void glDeleteBuffers(
	GLsizei n
	const GLuint* buffers
	)
{
	GLES2BufferObject* psBufObj
	GLES2NamesArray* psNamesArray
	IMG_INT32 i
	IMG_INT32 j
	GLES2Context* gc
}


// function
GLES2BufferObject* CreateBufferObject(
	GLES2Context* gc
	IMG_UINT32 ui32Name
	)
{
	GLES2BufferObject* psBufObj
}


// function
void FreeBufferObject(
	GLES2Context* gc
	GLES2BufferObject* psBufObj
	IMG_BOOL bIsShutdown
	)
{
	GLES2AttribArrayPointerState* psAPState
	IMG_UINT32 i
}


// function
IMG_BOOL WaitUntilBufObjNotUsed(
	GLES2Context* gc
	GLES2BufferObject* psBufObj
	)
{
	PVRSRV_CLIENT_SYNC_INFO* psSyncInfo
	PVRSRV_SYNC_DATA* psSyncData
	IMG_UINT32 i
	IMG_BOOL bUsedInCurrentTA
}


// external function PC=<0x7bcc;0x7e78>
void glBindBuffer(
	GLenum target
	GLuint buffer
	)
{
	GLES2BufferObject* psBufObj
	GLES2BufferObject* psBoundBuffer
	IMG_UINT32 ui32TargetIndex
	GLES2NamesArray* psNamesArray
	GLES2Context* gc
	// inlined
	// function
	GLES2BufferObject* CreateBufferObject(
		GLES2Context* gc
		IMG_UINT32 ui32Name
		)
	{
		GLES2BufferObject* psBufObj
	}

	// inlined
	// function
	void FreeBufferObject(
		GLES2Context* gc
		GLES2BufferObject* psBufObj
		IMG_BOOL bIsShutdown
		)
	{
		GLES2AttribArrayPointerState* psAPState
		IMG_UINT32 i
	}

}


// external function PC=<0x7e78;0x7fe0>
void* glMapBufferOES(
	GLenum target
	GLenum access
	)
{
	GLES2BufferObject* psBufObj
	IMG_UINT32 ui32TargetIndex
	GLES2Context* gc
	SetOutOfMemErrorAndReturnNULL: \\ label @0x7f80
	// inlined
	// function
	IMG_BOOL WaitUntilBufObjNotUsed(
		GLES2Context* gc
		GLES2BufferObject* psBufObj
		)
	{
		PVRSRV_CLIENT_SYNC_INFO* psSyncInfo
		PVRSRV_SYNC_DATA* psSyncData
		IMG_UINT32 i
		IMG_BOOL bUsedInCurrentTA
	}

}


// external function PC=<0x7fe0;0x8174>
void glBufferSubData(
	GLenum target
	GLintptr offset
	GLsizeiptr size
	const void* data
	)
{
	GLES2BufferObject* psBufObj
	IMG_UINT32 ui32TargetIndex
	GLES2Context* gc
	// inlined
	// function
	IMG_BOOL WaitUntilBufObjNotUsed(
		GLES2Context* gc
		GLES2BufferObject* psBufObj
		)
	{
		PVRSRV_CLIENT_SYNC_INFO* psSyncInfo
		PVRSRV_SYNC_DATA* psSyncData
		IMG_UINT32 i
		IMG_BOOL bUsedInCurrentTA
	}

	{
		IMG_VOID* pvDst
	}
}


// external function PC=<0x8174;0x83a8>
void glBufferData(
	GLenum target
	GLsizeiptr size
	const void* data
	GLenum usage
	)
{
	GLES2BufferObject* psBufObj
	IMG_UINT32 ui32TargetIndex
	GLES2Context* gc
	// inlined
	// function
	IMG_BOOL WaitUntilBufObjNotUsed(
		GLES2Context* gc
		GLES2BufferObject* psBufObj
		)
	{
		PVRSRV_CLIENT_SYNC_INFO* psSyncInfo
		PVRSRV_SYNC_DATA* psSyncData
		IMG_UINT32 i
		IMG_BOOL bUsedInCurrentTA
	}

	{
		IMG_UINT32 ui32AllocSize
		IMG_UINT32 ui32AllocAlign
	}
}


// function PC=<0x83a8;0x8570>
void DisposeBufObject(
	GLES2Context* gc
	GLES2NamedItem* psItem
	IMG_BOOL bIsShutdown
	)
{
	GLES2BufferObject* psBufObj
	// inlined
	// function
	void FreeBufferObject(
		GLES2Context* gc
		GLES2BufferObject* psBufObj
		IMG_BOOL bIsShutdown
		)
	{
		GLES2AttribArrayPointerState* psAPState
		IMG_UINT32 i
	}

}


const IMG_UINT32 ui32ExtensionFlag

const struct GLES2_Extension_TAG[12] GLES2Extension

struct _IO_FILE* stdin

struct _IO_FILE* stdout

