guestrendering/vghwserialiser/inc/opengles11rfc.h
author Faisal Memon <faisal.memon@nokia.com>
Fri, 20 Aug 2010 18:02:40 +0100
branchbug235_bringup_0
changeset 1 d8d95053303a
permissions -rwxr-xr-x
Bootstrap the guestvideodriver and sghwserialiser. Some stuff is still commented out. Compiles with graphics package at changeset 8d47cca9cc11

// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:

#ifndef OPENGLES11REMOTEFUNCTIONCALL_H_
#define OPENGLES11REMOTEFUNCTIONCALL_H_

#include "remotefunctioncall.h"

#ifdef __SYMBIAN32__
	#include <GLES/gl.h>
#else
	#include "GLES/gl.h"
	#include "GLES/glextplatform.h"
#endif

//OpenGlES11 remote function call
// Represents a function call and contains information about 
// parameters but does not serialize the data
NONSHARABLE_CLASS(OpenGlES11RFC): public RemoteFunctionCall
    {
public:

    //OpenEglES11 operation code
    enum TOperationCode
    {
        EglActiveTexture,
        EglAlphaFunc,
        EglAlphaFuncx,
        EglBindBuffer,
        EglBindTexture,
        EglBlendFunc,
        EglBufferData,
        EglBufferSubData,
        EglClear,
        EglClearColor,
        EglClearColorx, // 10
        EglClearDepthf,
        EglClearDepthx,
        EglClearStencil,
        EglClientActiveTexture,
        EglClipPlanef,
        EglClipPlanex,
        EglColor4f,
        EglColor4ub,
        EglColor4x,
        EglColorMask, // 20
        EglColorPointer,
        EglCompressedTexImage2D,
        EglCompressedTexSubImage2D,
        EglCopyTexImage2D,
        EglCopyTexSubImage2D,
        EglCullFace,
        EglDeleteBuffers,
        EglDeleteTextures,
        EglDepthFunc,
        EglDepthMask, // 30
        EglDepthRangef,
        EglDepthRangex,
        EglDisable,
        EglDisableClientState,
        EglDrawArrays,
        EglDrawElements,
        EglEnable,
        EglEnableClientState,
        EglFinish,
        EglFlush, // 40
        EglFogf,
        EglFogfv,
        EglFogx,
        EglFogxv,
        EglFrontFace,
        EglFrustumf,
        EglFrustumx,
        EglGenBuffers,
        EglGenTextures,
        EglGetBooleanv, // 50
        EglGetBufferParameteriv,
        EglGetClipPlanef,
        EglGetClipPlanex,
        EglGetError,
        EglGetFixedv,
        EglGetFloatv,
        EglGetIntegerv,
        EglGetLightfv,
        EglGetLightxv,
        EglGetMaterialfv, // 60
        EglGetMaterialxv,
        EglGetPointerv,
        EglGetString,
        EglGetTexEnvfv,
        EglGetTexEnviv,
        EglGetTexEnvxv,
        EglGetTexParameterfv,
        EglGetTexParameteriv,
        EglGetTexParameterxv,
        EglHint, // 70
        EglIsBuffer,
        EglIsEnabled,
        EglIsTexture,
        EglLightModelf,
        EglLightModelfv,
        EglLightModelx,
        EglLightModelxv,
        EglLightf,
        EglLightfv,
        EglLightx, // 80
        EglLightxv,
        EglLineWidth,
        EglLineWidthx,
        EglLoadIdentity,
        EglLoadMatrixf,
        EglLoadMatrixx,
        EglLogicOp,
        EglMaterialf,
        EglMaterialfv,
        EglMaterialx, // 90
        EglMaterialxv,
        EglMatrixMode,
        EglMultMatrixf,
        EglMultMatrixx,
        EglMultiTexCoord4f,
        EglMultiTexCoord4x,
        EglNormal3f,
        EglNormal3x,
        EglNormalPointer,
        EglOrthof, // 100
        EglOrthox,
        EglPixelStorei,
        EglPointParameterf,
        EglPointParameterfv,
        EglPointParameterx,
        EglPointParameterxv,
        EglPointSize,
        EglPointSizex,
        EglPolygonOffset,
        EglPolygonOffsetx, // 110
        EglPopMatrix,
        EglPushMatrix,
        EglReadPixels,
        EglRotatef,
        EglRotatex,
        EglSampleCoverage,
        EglSampleCoveragex,
        EglScalef,
        EglScalex,
        EglScissor, // 120
        EglShadeModel,
        EglStencilFunc,
        EglStencilMask,
        EglStencilOp,
        EglTexCoordPointer,
        EglTexEnvf,
        EglTexEnvfv,
        EglTexEnvi,
        EglTexEnviv,
        EglTexEnvx, // 130
        EglTexEnvxv,
        EglTexImage2D,
        EglTexParameterf,
        EglTexParameterfv,
        EglTexParameteri,
        EglTexParameteriv,
        EglTexParameterx,
        EglTexParameterxv,
        EglTexSubImage2D,
        EglTranslatef, // 140
        EglTranslatex,
        EglVertexPointer,
        EglViewport,
        // from Eglextplatform.h
        EglCurrentPaletteMatrixOES,
        EglDrawTexfOES,
        EglDrawTexfvOES,
        EglDrawTexiOES,
        EglDrawTexivOES,
        EglDrawTexsOES,
        EglDrawTexsvOES, // 150
        EglDrawTexxOES,
        EglDrawTexxvOES,
        EglLoadPaletteFromModelViewMatrixOES,
        EglMatrixIndexPointerOES,
        EglQueryMatrixxOES,
        EglWeightPointerOES,
        // client shutdown
        EClientShutdown

    };

    //Parameter data type
    enum TParamType
    {
        EGLbyte,
        EGLubyte,
        EGLshort,
        EGLushort,
        EGLint,
        EGLuint,
        EGLfloat,
        EGLvoid,
        // the following parameters are typedeffed to same types as the previous ones
        EGLboolean,
        EGLbitfield,
        EGLclampf,
        EGLclampx,
        EGLenum,
        EGLfixed,
        EGLintptr,
        EGLsizei,
        EGLsizeiptr
    };

    OpenGlES11RFC( RemoteFunctionCallData& aData );
    
    //Appends a simple parameter to the parameter array
    // Does not serialize any data
    inline void AppendParam( const GLbyte& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLubyte& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLshort& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLushort& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLint& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLuint& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendParam( const GLfloat& aParam, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
        
    //Gets a simple parameter value from parameter array
    inline void GetParamValue( GLbyte& aParam, TInt aIndex );
    inline void GetParamValue( GLubyte& aParam, TInt aIndex );
    inline void GetParamValue( GLshort& aParam, TInt aIndex );
    inline void GetParamValue( GLushort& aParam, TInt aIndex );
    inline void GetParamValue( GLint& aParam, TInt aIndex );
    inline void GetParamValue( GLuint& aParam, TInt aIndex );
    inline void GetParamValue( GLfloat& aParam, TInt aIndex );
    
    //Gets a pointer to an array parameter from parameter array
    inline void GetVectorData( GLint* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( GLuint* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( GLshort* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( GLfloat* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( GLboolean* &aData, TInt& aSize, TInt aIndex );
    inline void GetVectorData( void* &aData, TInt& aSize, TInt aIndex );

    //Sets a pointer to the data of an array parameter
    inline void SetVectorData( const GLint* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const GLuint* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const GLshort* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const GLfloat* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const GLboolean* aData, TInt aLength, TInt aIndex );
    inline void SetVectorData( const void* aData, TInt aLength, TInt aIndex );

    //Appends an array parameter to the parameter array
    // Does not serialize any data
    inline void AppendVector( const GLint* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const GLuint* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const GLshort* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const GLfloat* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const GLboolean* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    inline void AppendVector( const void* aData, TInt aLength, RemoteFunctionCallData::TParamDirection iDir = RemoteFunctionCallData::EIn );
    
    //Size of type aType
    TInt GetTypeSize( TInt32 aParamType ) const;

    //Alignemnt of type aType
	TInt GetTypeAlignment( TInt32 aParamType ) const;

    //Alignemnt of type aType
	TUint32 GetAPIUid() const;
    };

#include "opengles11rfc.inl"
#endif