guestrendering/guestegl/inc/guestegl.h
author Faisal Memon <faisal.memon@nokia.com>
Fri, 24 Sep 2010 11:24:11 +0100
branchbug235_bringup_0
changeset 41 2110890eb027
parent 40 eaa1315a8556
permissions -rwxr-xr-x
Fixed compile. This change now provides alpha support for the integration of guestegl with the host
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     7
//
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    10
//
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    11
// Contributors:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    12
//
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    13
// Description:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    14
// Guest Egl Header file
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    15
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    16
#ifndef __GUEST__EGL_H
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    17
#define __GUEST__EGL_H
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    18
41
2110890eb027 Fixed compile. This change now provides alpha support for the integration of guestegl with the host
Faisal Memon <faisal.memon@nokia.com>
parents: 40
diff changeset
    19
#include <graphics/surfacemanager.h>
13
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    20
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    21
// CLASS DECLARATION
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    22
typedef enum
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    23
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    24
    EPixmapTypeNone,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    25
    EPixmapTypeFbsBitmap,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    26
    EPixmapTypeSgImage,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    27
	} TSymbianPixmapTypeId;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    28
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    29
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    30
typedef enum
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    31
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    32
	ESurfaceTypeWindow = 0,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    33
	ESurfaceTypePbuffer = 1,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    34
	ESurfaceTypePixmapFbsBitmap = 2,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    35
	ESurfaceTypePixmapSgImage = 3,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    36
	} TEglSurfaceType;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    37
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    38
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    39
class RSurfaceManager;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    40
class CEglContext;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    41
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    42
// client side info about a surface
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    43
struct TSurfaceInfo
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    44
    {
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    45
    TSize                   iSize;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    46
    TEglSurfaceType         iSurfaceType; //Surface type
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    47
    EGLConfig               iConfigId;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    48
    CFbsBitmap*             iFbsBitmap;       // Handle for CFbsBitmap
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    49
#ifdef FAISALMEMON_S4_SGIMAGE
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    50
    RSgDrawable             iSgHandle;        // Handle for RSgImge - keeps image open
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    51
    TSgDrawableId           iSgId;            // SgImage Id - to detect 2nd attempted surface using the same SgImage 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    52
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    53
    EGLSurface              iHostSurfaceId;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    54
	// Note: most member data is only used by Window surfaces
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    55
    TSurfaceId              iSurfaceId;        /*<! Target system surface allocated by EGL.                                              */
39
c8311e991ee3 interim checkin, no compilation check done so don't sync to this changeset
Faisal Memon <faisal.memon@nokia.com>
parents: 17
diff changeset
    56
    // FAISALMEMON HOLE 0
c8311e991ee3 interim checkin, no compilation check done so don't sync to this changeset
Faisal Memon <faisal.memon@nokia.com>
parents: 17
diff changeset
    57
    RSurfaceManager			iSurfaceManager;
c8311e991ee3 interim checkin, no compilation check done so don't sync to this changeset
Faisal Memon <faisal.memon@nokia.com>
parents: 17
diff changeset
    58
    RSurfaceUpdateSession	iSurfaceUpdateSession;
13
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    59
    void*                   iBuffer0;          /*<! Pointer to the first buffer pixels                                                   */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    60
    void*                   iBuffer1;          /*<! Pointer to the second buffer pixels                                                  */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    61
    TInt                    iBuffer0Index;          /*<! Pointer to the first buffer pixels                                                   */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    62
    TInt                    iBuffer1Index;          /*<! Pointer to the second buffer pixels                                                  */
39
c8311e991ee3 interim checkin, no compilation check done so don't sync to this changeset
Faisal Memon <faisal.memon@nokia.com>
parents: 17
diff changeset
    63
    RChunk                  iChunk;            /*<! chunk of the backbuffer surface memory                                               */
40
eaa1315a8556 added eglSwapBuffers integration; this change has not been compiled so don't sync to this changelist
Faisal Memon <faisal.memon@nokia.com>
parents: 39
diff changeset
    64
    TInt					iFrontBuffer;		// We assume zero based index, 0 -> iBuffer0, 1 -> iBuffer1 should be display
13
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    65
    RWindow*                iNativeWindow;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    66
    EGLint                  iRedBits;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    67
    EGLint                  iGreenBits;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    68
    EGLint                  iBlueBits;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    69
    EGLint                  iAlphaBits;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    70
    EGLenum                 iAlphaFormat;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    71
    EGLint                  iColorBits;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    72
    EGLint                  iStride;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    73
    // FAISALMEMON HOLE 2
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    74
    };
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    75
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    76
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    77
// Container for Symbian client side information about an EGL Display
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    78
NONSHARABLE_CLASS(CEglDisplayInfo) : public CBase
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    79
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    80
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    81
	TBool                              iInitialized;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    82
//	RMutex                             iSurfaceMapLock;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    83
    RHashMap<TInt, TSurfaceInfo*>      iSurfaceMap;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    84
//private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    85
//	RMutex                             iContextMapLock;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    86
    RHashMap<EGLContext, CEglContext*> iContextMap;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    87
    };
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    88
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    89
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    90
// prototype to help eglGetProcAddress() API 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    91
typedef void (*ProcPointer)(...);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    92
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    93
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    94
// Collection of static functions for processing EGL Attribute Lists
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    95
class TAttribUtils
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    96
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    97
public: // definitions in eglattribs.cpp
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    98
	static TInt AttribListLength(const EGLint* aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    99
	static const EGLint* FindAttribValue(const EGLint* aAttribList, EGLint aAttrib);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   100
	// NB only use these on AttribLists with adequate space for editing
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   101
	static EGLint* FindAttribValue(EGLint* aAttribList, EGLint aAttrib);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   102
	static void AppendAttribValue(EGLint* aAttribList, EGLint aAttrib, EGLint aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   103
	static void RemoveAttrib(EGLint* aAttribList, EGLint aAttrib);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   104
#ifdef _DEBUG
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   105
	// definitions in egldebug.cpp
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   106
	static void TraceAttribList(const EGLint* aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   107
	static void TraceAttribNames(EGLint aAttrib, EGLint aValue, char** aAttrName, char** aValueName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   108
	static void TraceGetAttrib(char* aApiName, char* aObjType, EGLDisplay aDisplay, EGLint aObject, EGLint aAttribute, EGLint *aValue, EGLBoolean aResult);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   109
	static void TraceSetAttrib(char* aApiName, char* aObjType, EGLDisplay aDisplay, EGLint aObject, EGLint aAttribute, EGLint aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   110
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   111
	};
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   112
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   113
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   114
// CEglContext represents an EGLContext on Host EGL
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   115
NONSHARABLE_CLASS(CEglContext) : public CBase
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   116
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   117
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   118
	// factory function
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   119
	static CEglContext* Create(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, CEglContext* aShareContext, const EGLint* aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   120
	EGLBoolean MakeCurrent(TEglThreadState& aThreadState, EGLSurface aDraw, EGLSurface aRead);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   121
	EGLBoolean QueryAttribute(TEglThreadState& aThreadState, EGLint aAttribute, EGLint* aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   122
	// These functions return ETrue if they delete themselves 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   123
	TBool Destroy(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   124
	TBool MakeNotCurrent(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   125
	EGLContext ShareContextFamily();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   126
	inline EGLContext HostContext() { return iHostContext; }
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   127
	inline EGLContext ClientContext() { return iHostContext; }
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   128
	inline TBool IsDestroyed() { return iIsDestroyed; }
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   129
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   130
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   131
	CEglContext(EGLDisplay aDisplay, EGLConfig aConfig, EGLContext aShareContextFamily, EGLenum aRenderingApi, EGLint aGlesClientVersion);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   132
	void Delete(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   133
	~CEglContext();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   134
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   135
	RMutex     iCtxMutex;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   136
	TBool      iFirstUse;    // for eglMakeCurrent
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   137
	EGLContext iHostContext; // corresponding Host EGL Context
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   138
	// info from eglCreateContext & eglMakeCurrent
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   139
	EGLDisplay iDisplay;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   140
	EGLContext iShareContextFamily;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   141
	EGLConfig  iConfigId;     // Config id used to create context
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   142
	EGLenum    iRenderingApi; // set by current bound API at creation
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   143
	EGLSurface iDrawSurface;  // currently bound draw surface, if any
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   144
	// for GL ES Contexts
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   145
	EGLSurface iReadSurface;  // currently bound read surface, if any
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   146
	EGLint     iGlesClientVersion; // set by EGL_CONTEXT_CLIENT_VERSION attribute at creation (default is 1)
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   147
	// object lifetime management
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   148
	TBool      iIsDestroyed;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   149
	};
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   150
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   151
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   152
NONSHARABLE_CLASS(CEglImage) : public CBase
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   153
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   154
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   155
	CEglImage();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   156
	~CEglImage();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   157
#ifdef FAISALMEMON_S4_SGIMAGE 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   158
	inline void Create(TSgDrawableId aSgImageId, EGLDisplay aDisplay, TSgImageInfo& aSgImageInfo, TInt aPbufferHandle, VGHandle aVgHandle);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   159
	TSgDrawableId SgImageId() const;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   160
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   161
	inline void Duplicate();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   162
	inline TBool OpenForVgImage(TSize& aSize, VGHandle& aVgHandle, TUint64& aSgImageId);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   163
	inline TBool Close();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   164
	inline TBool Destroy();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   165
	inline TBool IsDestroyed() const;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   166
	inline TInt RefCount();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   167
	inline EGLDisplay Display() const;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   168
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   169
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   170
#ifdef FAISALMEMON_S4_SGIMAGE
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   171
	RSgDrawable  iSgHandle;				// Client Handle
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   172
	TSgImageInfo iSgImageInfo;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   173
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   174
	EGLDisplay   iDisplay;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   175
	TInt         iPbufferHandle;		// Handle of the underlying Pbuffer, if any
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   176
	VGHandle     iVgHandle;				// Handle of the underlying Host VgImage, if any
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   177
	TInt         iCreateCount;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   178
	TInt         iOpenCount;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   179
	TBool        iIsDestroyed;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   180
	};
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   181
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   182
const TInt KEglConfigSize = 29;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   183
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   184
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   185
class XGuestEglInitialiser
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   186
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   187
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   188
	XGuestEglInitialiser();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   189
	~XGuestEglInitialiser();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   190
	};
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   191
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   192
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   193
/**
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   194
 *  CCGuestEGL
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   195
 *
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   196
 */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   197
NONSHARABLE_CLASS(CGuestEGL) : public CBase, public MEglManagementApi,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   198
		public MVgApiForEgl, public MGles11ApiForEgl, public MGles2ApiForEgl
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   199
    {
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   200
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   201
    // Constructors and destructor
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   202
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   203
    /**
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   204
     * Destructor.
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   205
     */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   206
    ~CGuestEGL();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   207
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   208
    /**
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   209
     * Public constructor.
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   210
     */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   211
    static CGuestEGL* New();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   212
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   213
	// class MEglManagementApi - exported as a vtable via CVghwUtils for Open VG and Open GL ES to access EGL info
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   214
	virtual TBool EglImageOpenForVgImage(EGLImageKHR aImage, TSize& aSize, VGHandle& aVgHandle, TUint64& aSgImageId);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   215
	virtual void EglImageClose(EGLImageKHR aImage);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   216
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   217
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   218
	// Private interfaces for EGL to call into Open VG & Open GL ES 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   219
	// class MVgApiForEgl - redirects via CVghwUtils to exported functions from Open VG
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   220
	virtual ExtensionProcPointer guestGetVgProcAddress (const char *aProcName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   221
	// class MGles11ApiForEgl - redirects via CVghwUtils to exported functions from Open GL ES 1.1
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   222
	virtual ExtensionProcPointer guestGetGles11ProcAddress (const char *aProcName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   223
	// class MGles2ApiForEgl - redirects via CVghwUtils to exported functions from Open GL ES 2
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   224
	virtual ExtensionProcPointer guestGetGles2ProcAddress (const char *aProcName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   225
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   226
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   227
	// public support functions for EGL C API
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   228
	static EGLint CheckColorAttributes(const EGLint* aAttribList, EGLint aColorBufferType, EGLint aLuminanceBits,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   229
			EGLint aRedBits, EGLint aGreenBits, EGLint aBlueBits, EGLint aAlphaBits=0);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   230
	static void AppendColorAttributes(EGLint* aAttribList, EGLint aColorBufferType, EGLint aLuminanceBits, EGLint aRedBits,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   231
			EGLint aGreenBits, EGLint aBlueBits, EGLint aAlphaBits=0, TBool aSetVgPreMultAlpha=EFalse);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   232
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   233
	const char *QueryExtensionList();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   234
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   235
	// ToDo probably remove this after EGL Sync refactoring
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   236
	void SetError( EGLint aError );
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   237
	void DestroySurfaceInfo(EGLDisplay aDisplay, EGLSurface aSurface);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   238
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   239
	// static functions directly implementing an EGL API
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   240
	ProcPointer eglGetProcAddress(const char *aProcName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   241
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   242
	// functions directly implementing an EGL API
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   243
	EGLBoolean eglBindTexImage(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, EGLint aBuffer);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   244
	EGLBoolean eglChooseConfig(TEglThreadState& aThreadState, EGLDisplay aDisplay, const EGLint *aAttribList,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   245
				   EGLConfig *aConfigs, EGLint aConfigSize, EGLint *aNumConfig);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   246
	EGLBoolean eglCopyBuffers(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, EGLNativePixmapType aTarget);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   247
	EGLContext eglCreateContext(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   248
					EGLContext aShareContext, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   249
	EGLImageKHR eglCreateImageKHR(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLContext aContext, EGLenum aTarget,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   250
			EGLClientBuffer aBuffer, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   251
	EGLSurface eglCreatePbufferFromClientBuffer(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLenum aBufType,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   252
			EGLClientBuffer aBuffer, EGLConfig aConfig, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   253
	EGLSurface eglCreatePbufferSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   254
	EGLSurface eglCreatePixmapSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   255
			EGLNativePixmapType aNativePixmap, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   256
	EGLSurface eglCreateWindowSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, 
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   257
			EGLNativeWindowType aNativeWindow, const EGLint *aAttribList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   258
	EGLBoolean eglDestroyContext(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLContext aContext);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   259
	EGLBoolean eglDestroyImageKHR(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLImageKHR aImage);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   260
	EGLBoolean eglDestroySurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   261
	EGLBoolean eglGetConfigAttrib(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   262
				      EGLint aAttribute, EGLint *aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   263
	EGLBoolean eglGetConfigs(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig *aConfigs,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   264
				 EGLint aConfigSize, EGLint *aNumConfig);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   265
	EGLContext eglGetCurrentContext(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   266
	EGLDisplay eglGetCurrentDisplay(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   267
	EGLSurface eglGetCurrentSurface(TEglThreadState& aThreadState, EGLint aReadDraw);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   268
	EGLDisplay eglGetDisplay(TEglThreadState& aThreadState, EGLNativeDisplayType aDisplayId);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   269
	EGLBoolean eglInitialize(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLint *aMajor, EGLint *aMinor);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   270
	EGLBoolean eglMakeCurrent(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aDraw, EGLSurface aRead,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   271
			EGLContext aContext);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   272
	EGLBoolean eglQueryContext(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLContext aContext, EGLint aAttribute, EGLint *aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   273
	const char* eglQueryString(EGLDisplay aDisplay, EGLint aName);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   274
	EGLBoolean eglQuerySurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, EGLint aAttribute,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   275
			EGLint *aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   276
	EGLBoolean eglReleaseTexImage(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, EGLint aBuffer);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   277
	EGLBoolean eglSurfaceAttrib(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   278
				    EGLint aAttribute, EGLint aValue);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   279
	EGLBoolean eglSwapBuffers(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   280
	EGLBoolean eglSwapInterval(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLint aInterval);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   281
	EGLBoolean eglTerminate(TEglThreadState& aThreadState, EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   282
	EGLBoolean eglWaitClient(TEglThreadState& aThreadState);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   283
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   284
public:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   285
    // API supporting EGL sync extension
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   286
    /*-------------------------------------------------------------------*//*!
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   287
     * \brief   Query and request to lock a specified display
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   288
     * \ingroup eglSync
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   289
     * \param   aEglDisplay a display identifier
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   290
     * \return  EGL_SUCCESS if successful;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   291
     *          EGL_BAD_DISPLAY is not a name of a valid EGLDisplay
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   292
     *          EGL_NOT_INITIALIZED if the display object associated
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   293
     *          with the <aEglDisplay> has not been initialized
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   294
     *//*-------------------------------------------------------------------*/
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   295
    EGLint FindAndLockDisplay(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   296
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   297
    /*-------------------------------------------------------------------*//*!
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   298
     * \brief   Releases the lock associated with a valid EGLDisplay
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   299
     * \ingroup eglSync
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   300
     * \param   aEglDisplay a display identifier
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   301
     *//*-------------------------------------------------------------------*/
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   302
    void ReleaseDisplayLock(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   303
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   304
    /*-------------------------------------------------------------------*//*!
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   305
     * \brief   Returns pointer to the EGL sync instance
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   306
     * \ingroup eglSync
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   307
     *//*-------------------------------------------------------------------*/
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   308
    CEglSyncExtension* EGLSyncExtension();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   309
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   310
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   311
    /**
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   312
     * private constructor, 2nd phase constructor
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   313
     */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   314
	CGuestEGL();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   315
	void Create();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   316
	void CloseSgResources();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   317
	void OpenSgResources();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   318
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   319
	// private function with "EglInternalFunction_" prefix
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   320
	TBool EglInternalFunction_CreateSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, EGLConfig aConfig, RWindow* aNativeWindow, TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   321
	void EglInternalFunction_DestroyWindowSurface(TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   322
	TUidPixelFormat EglInternalFunction_GetSymbianPixelFormat(const TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   323
	EGLBoolean EglInternalFunction_CallSetSurfaceParams(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   324
	TBool EglInternalFunction_PixmapSurfacePreviouslyCreated(EGLNativePixmapType pixmap, TSymbianPixmapTypeId pixmapType);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   325
	static TSymbianPixmapTypeId EglInternalFunction_GetNativePixmapType(EGLNativePixmapType pixmap);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   326
	const char* EglInternalFunction_QueryExtensionList();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   327
	TBool EglInternalFunction_IsValidNativePixmap(EGLNativePixmapType pixmap, TSymbianPixmapTypeId pixmapType);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   328
	EGLBoolean EglInternalFunction_SurfaceResized(TEglThreadState& aThreadState, TSurfaceInfo& aSurfaceInfo, EGLDisplay aDisplay, EGLSurface aSurface);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   329
	TSurfaceInfo* EglInternalFunction_GetPlatformSurface( EGLDisplay display, EGLSurface surface );
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   330
	void EglInternalFunction_AbortWindowInit(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface, TSurfaceInfo* ps, RWindow* window, CWsScreenDevice* screenDevice);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   331
	TBool EglInternalFunction_SwapWindowSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLSurface aSurface);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   332
	TBool EglInternalFunction_MetaGetConfigs( TEglThreadState& aThreadState, EGLConfig*& aConfigs, EGLint& aConfigCnt, EGLint*& aConfigAttribs, EGLint& aConfigAttribsLen, TMetaGetConfigsMode aFetchMode = EMetaGetConfigsSg );
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   333
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   334
	// more private functions
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   335
	
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   336
	EGLint ConfigMatchesFbsBitmapPixmap(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, const EGLint* aAttribList, TDisplayMode aMode);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   337
	EGLBoolean ChooseConfigForPixmapSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, const EGLint* aAttribList, EGLConfig* aConfigs, EGLint aConfigSize,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   338
			EGLint* aNumConfig, const void* aPixmap);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   339
	EGLSurface CreateFbsBitmapSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, CFbsBitmap* aBitmap, const EGLint *aAttribList, TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   340
	
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   341
	EGLint ChooseConfigAttribsForFbsBitmap(TEglThreadState& aThreadState, const EGLint* aAttribList, const CFbsBitmap* aBitmap, EGLint** aNewList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   342
	
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   343
	EGLint ValidateEglImageTarget(EGLDisplay aDisplay, EGLContext aContext, EGLenum aTarget,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   344
			EGLClientBuffer aBuffer, const EGLint *aAttribList, TSymbianPixmapTypeId aTargetPixmapType);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   345
	
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   346
	
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   347
	TBool CreateDisplayInfo(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   348
	TBool InitializeDisplayInfo(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   349
	TBool IsDisplayInitialized(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   350
	TBool DestroyDisplayInfo(EGLDisplay aDisplay);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   351
    
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   352
#ifdef FAISALMEMON_S4_SGIMAGE
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   353
    EGLSurface CreateSgImageSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, EGLConfig aConfig, const RSgImage* aSgImage, const EGLint *aAttribList,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   354
			TSurfaceInfo& aSurfaceInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   355
    EGLImageKHR CreateNewEglImage(TEglThreadState& aThreadState, EGLDisplay aDisplay, TSgDrawableId aSgId, TSgImageInfo aSgImageInfo);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   356
    EGLImageKHR DuplicateEglImageIfItExists(EGLDisplay aDisplay, TSgDrawableId aSgId);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   357
    EGLint ChooseConfigAttribsForSgImage(TEglThreadState& aThreadState, const EGLint* aAttribList, const RSgImage* aSgImage, EGLint** aNewList);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   358
    EGLBoolean ChooseConfigForNativeSgImagePixmapSurface(TEglThreadState& aThreadState, EGLDisplay aDisplay, const EGLint* aAttribList, EGLConfig* aConfigs, EGLint aConfigSize,
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   359
			EGLint* aNumConfig, const EGLint* aPixmap);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   360
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   361
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   362
	//new methods supporting EGL Sync extension
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   363
	EGLint InitialiseExtensions();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   364
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   365
private:
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   366
	RReadWriteLock				 iDisplayMapLock; // protects the iDisplayMap for multi-threaded clients
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   367
	RHashMap<TInt, CEglDisplayInfo*> iDisplayMap;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   368
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   369
	RMutex                       iEglImageLock; // protects the iEglImageArray for multi-threaded clients
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   370
	RPointerArray<CEglImage>     iEglImageArray; // ToDo use a Unique Id for the index/handle, rather than the object address
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   371
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   372
#ifdef FAISALMEMON_S4_SGIMAGE
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   373
	EGLint* iSgConfigAttribs;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   374
	EGLint  iSgConfigsAttribtCnt;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   375
	// ToDo (SgImage Design Spec 3.5) ARM EGL should maintain its own lists of native window handles, pixmap handles etc
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   376
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   377
	char* iEglExtnNameList; // supporting data for eglQueryString()
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   378
    RSgDriver                    iSgDriver;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   379
#endif
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   380
	//data members supporting EGL Sync extension
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   381
	CEglSyncExtension* iEglSyncExtension;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   382
	// vtable pointers populated from CVghwUtils - to access Open VG & GL ES internals, e.g. to support eglGetProcAddress
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   383
	MVgApiForEgl*        iVgApiForEgl;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   384
	MGles11ApiForEgl*    iGles11ApiForEgl;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   385
	MGles2ApiForEgl*     iGles2ApiForEgl;
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   386
	};
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   387
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   388
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   389
/* Execute host EGL functions that cannot fail
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   390
   These functions do not set the flag to say that an EGL command has been executed since the last host eglGetError.
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   391
   */
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   392
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   393
inline EGLContext ExecEglContextNoErrorCmd(TEglThreadState& aThreadState, EglRFC& aEglApiData)
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   394
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   395
	aThreadState.ExecuteEglNeverErrorCmd(aEglApiData);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   396
	return (EGLContext) aEglApiData.ReturnValue();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   397
	}
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   398
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   399
inline EGLSurface ExecEglSurfaceNoErrorCmd(TEglThreadState& aThreadState, EglRFC& aEglApiData)
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   400
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   401
	aThreadState.ExecuteEglNeverErrorCmd(aEglApiData);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   402
	return (EGLSurface) aEglApiData.ReturnValue();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   403
	}
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   404
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   405
inline EGLDisplay ExecEglDisplayNoErrorCmd(TEglThreadState& aThreadState, EglRFC& aEglApiData)
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   406
	{
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   407
	aThreadState.ExecuteEglNeverErrorCmd(aEglApiData);
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   408
	return (EGLDisplay) aEglApiData.ReturnValue();
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   409
	}
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   410
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   411
220791dae4c4 Add TPIP free guest egl
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   412
#endif // __GUEST__EGL_H