vghwinterface/vghwserialiser/inc/opengles11rfc.h
author Matt Plumtree <matt.plumtree@nokia.com>
Thu, 07 Oct 2010 13:58:22 +0100
branchbug235_bringup_0
changeset 55 09263774e342
parent 51 4f400a6ea71f
permissions -rwxr-xr-x
Move GLES20 source into standard locations Move Khronos headers into their respective components, to be exported by each. Remove hostthreadadapter as nothing outside of the vghwapiwrapper, which now contains the code, needs it

// 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