Host components now buildable in their correct locations (although stil using CMake). Use build.bat in package root.
Note holdingarea build no longer works and everything except llvm will be removed soon.
Fix ups to references to components moved to vghwinterface.
Move package common headers up to pacakge level inc directory.
// 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:
// Implementation of Guest OpenGL ES 1.1 serialization stubs
#include "remotefunctioncall.h"
#include "opengles11rfc.h"
#include "vghwutils.h"
#include "opengl.h"
// Writeable Static Data, is initialised to 0s by the compiler
vertexArrayInfo vertexArrays[NUM_ARRAYS];
bool vertexArraysEnabled[NUM_ARRAYS];
// Writeable Static Data - causes constructor to be called at DLL load time.
TGles11ApiForEgl GlesApiExporter;
// Informative Panic messages
_LIT(KGlesPanicCategory, "Guest GLES");
void GlesPanic(TGlPanic aPanicCode, char* aCondition, char* aFile, TInt aLine)
{
if (aCondition && aFile)
{
RDebug::Printf("Guest Open GLES DLL Panic %d for failed Assert (%s), at %s:%d", aPanicCode, aCondition, aFile, aLine);
}
else
{
RDebug::Printf("Guest Open GLES DLL Panic %d for failed Assert (line %d)", aPanicCode, aLine);
}
User::Panic(KGlesPanicCategory, aPanicCode);
}
inline void SetError(GLint aError)
{
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{ // there is a GL ES context
glesContext->SetGlesError(aError);
}
}
inline void ExecuteCommand(RemoteFunctionCall& aRequestData)
{
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{ // there is a GL ES context
glesContext->ExecuteGlesCommand(aRequestData);
}
}
inline TUint32 ExecuteFunction(RemoteFunctionCall& aRequestData)
{
GLPANIC_ASSERT_DEBUG(aRequestData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EGlPanicNotReplyOpcode);
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{ // there is GL ES context
glesContext->ExecuteGlesCommand(aRequestData);
return aRequestData.ReturnValue();
}
return 0;
}
extern "C" {
EXPORT_C void GL_APIENTRY glActiveTexture (GLenum texture)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glActiveTexture ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglActiveTexture, RemoteFunctionCallData::EOpRequest );
call.AppendParam( texture );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glActiveTexture <-\n");
}
EXPORT_C void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glAlphaFunc ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglAlphaFunc, RemoteFunctionCallData::EOpRequest );
call.AppendParam( func );
call.AppendParam( ref );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glAlphaFunc <-\n");
}
EXPORT_C void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glAlphaFuncx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglAlphaFuncx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( func );
call.AppendParam( ref );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glAlphaFuncx <-\n");
}
EXPORT_C void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBindBuffer ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglBindBuffer, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( buffer );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBindBuffer <-\n");
}
EXPORT_C void GL_APIENTRY glBindTexture (GLenum target, GLuint texture)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBindTexture ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglBindTexture, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( texture );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBindTexture <-\n");
}
EXPORT_C void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBlendFunc ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglBlendFunc, RemoteFunctionCallData::EOpRequest );
call.AppendParam( sfactor );
call.AppendParam( dfactor );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBlendFunc <-\n");
}
EXPORT_C void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBufferData ->\n");
if(size < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglBufferData, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( size );
call.AppendVector( data, size );
call.AppendParam( usage );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBufferData <-\n");
}
EXPORT_C void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBufferSubData ->\n");
if(offset < 0 || size < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglBufferSubData, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( offset );
call.AppendParam( size );
call.AppendVector( data, offset+size );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glBufferSubData <-\n");
}
EXPORT_C void GL_APIENTRY glClear (GLbitfield mask)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClear ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClear, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mask );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClear <-\n");
}
EXPORT_C void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearColor ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClearColor, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearColor <-\n");
}
EXPORT_C void GL_APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearColorx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClearColorx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearColorx <-\n");
}
EXPORT_C void GL_APIENTRY glClearDepthf (GLclampf depth) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearDepthf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClearDepthf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( depth );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearDepthf <-\n");
}
EXPORT_C void GL_APIENTRY glClearDepthx (GLclampx depth)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearDepthx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClearDepthx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( depth );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearDepthx <-\n");
}
EXPORT_C void GL_APIENTRY glClearStencil (GLint s)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearStencil ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClearStencil, RemoteFunctionCallData::EOpRequest );
call.AppendParam( s );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClearStencil <-\n");
}
EXPORT_C void GL_APIENTRY glClientActiveTexture (GLenum texture)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClientActiveTexture ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClientActiveTexture, RemoteFunctionCallData::EOpRequest );
call.AppendParam( texture );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClientActiveTexture <-\n");
}
EXPORT_C void GL_APIENTRY glClipPlanef (GLenum plane, const GLfloat *equation)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClipPlanef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClipPlanef, RemoteFunctionCallData::EOpRequest );
call.AppendParam( plane );
call.AppendVector( equation, 4 ); // 4 values according to OpenGL_ES_1.1.12.pdf, section 2.11
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClipPlanef <-\n");
}
EXPORT_C void GL_APIENTRY glClipPlanex (GLenum plane, const GLfixed *equation)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClipPlanex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglClipPlanex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( plane );
call.AppendVector( equation, 4 ); // 4 values according to OpenGL_ES_1.1.12.pdf, section 2.11
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glClipPlanex <-\n");
}
EXPORT_C void GL_APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4f ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglColor4f, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4f <-\n");
}
EXPORT_C void GL_APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4ub ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglColor4ub, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4ub <-\n");
}
EXPORT_C void GL_APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4x ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglColor4x, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColor4x <-\n");
}
EXPORT_C void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColorMask ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglColorMask, RemoteFunctionCallData::EOpRequest );
call.AppendParam( red );
call.AppendParam( green );
call.AppendParam( blue );
call.AppendParam( alpha );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColorMask <-\n");
}
EXPORT_C void GL_APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColorPointer ->\n");
vertexArrays[COLOR_ARRAY].size = size;
vertexArrays[COLOR_ARRAY].type = type;
vertexArrays[COLOR_ARRAY].stride = stride;
vertexArrays[COLOR_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glColorPointer <-\n");
}
EXPORT_C void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCompressedTexImage2D ->\n");
if(imageSize < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCompressedTexImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( internalformat );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( border );
call.AppendParam( imageSize );
call.AppendVector( data, imageSize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCompressedTexImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCompressedTexSubImage2D ->\n");
if(imageSize < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCompressedTexSubImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( xoffset );
call.AppendParam( yoffset );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( format );
call.AppendParam( imageSize );
call.AppendVector( data, imageSize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCompressedTexSubImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCopyTexImage2D ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCopyTexImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( internalformat );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( border );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCopyTexImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCopyTexSubImage2D ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCopyTexSubImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( xoffset );
call.AppendParam( yoffset );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCopyTexSubImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glCullFace (GLenum mode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCullFace ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCullFace, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCullFace <-\n");
}
EXPORT_C void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDeleteBuffers ->\n");
if(n < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDeleteBuffers, RemoteFunctionCallData::EOpRequest );
call.AppendParam( n );
call.AppendVector( buffers, n );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDeleteBuffers <-\n");
}
EXPORT_C void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDeleteTextures ->\n");
if(n < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDeleteTextures, RemoteFunctionCallData::EOpRequest );
call.AppendParam( n );
call.AppendVector( textures, n );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDeleteTextures <-\n");
}
EXPORT_C void GL_APIENTRY glDepthFunc (GLenum func)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthFunc ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDepthFunc, RemoteFunctionCallData::EOpRequest );
call.AppendParam( func );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthFunc <-\n");
}
EXPORT_C void GL_APIENTRY glDepthMask (GLboolean flag)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthMask ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDepthMask, RemoteFunctionCallData::EOpRequest );
call.AppendParam( flag );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthMask <-\n");
}
EXPORT_C void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthRangef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDepthRangef, RemoteFunctionCallData::EOpRequest );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthRangef <-\n");
}
EXPORT_C void GL_APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthRangex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDepthRangex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDepthRangex <-\n");
}
EXPORT_C void GL_APIENTRY glDisable (GLenum cap)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDisable ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDisable, RemoteFunctionCallData::EOpRequest );
call.AppendParam( cap );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDisable <-\n");
}
EXPORT_C void GL_APIENTRY glDisableClientState (GLenum array)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDisableClientState ->\n");
// store state on here as well, used in DrawArrays and DrawElements
bool enumError = false;
switch( array )
{
case GL_COLOR_ARRAY:
vertexArraysEnabled[COLOR_ARRAY] = false;
break;
case GL_NORMAL_ARRAY:
vertexArraysEnabled[NORMAL_ARRAY] = false;
break;
case GL_POINT_SIZE_ARRAY_OES:
vertexArraysEnabled[POINT_SIZE_ARRAY] = false;
break;
case GL_TEXTURE_COORD_ARRAY:
vertexArraysEnabled[TEX_COORD_ARRAY] = false;
break;
case GL_VERTEX_ARRAY:
vertexArraysEnabled[VERTEX_ARRAY] = false;
break;
case GL_MATRIX_INDEX_ARRAY_OES:
vertexArraysEnabled[MATRIX_INDEX_ARRAY] = false;
break;
case GL_WEIGHT_ARRAY_OES:
vertexArraysEnabled[WEIGHT_ARRAY] = false;
break;
default:
SetError( GL_INVALID_ENUM );
enumError = true;
break;
}
if( !enumError )
{
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDisableClientState, RemoteFunctionCallData::EOpRequest );
call.AppendParam( array );
ExecuteCommand(call);
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDisableClientState <-\n");
}
EXPORT_C void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawArrays ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawArrays, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
call.AppendParam( first );
call.AppendParam( count );
/* serialize vertex arrays
order of the data:
- number of arrays (int)
- bitfield of enabled arrays, order specified by opengl.h vertex array pointer enumeration (int)
- for each enabled vertex array:
- size (int)
- type (int)
- stride (int)
- data vector
*/
int arrayCount = 0;
int arrayEnabled = 0;
for(int i=0; i<NUM_ARRAYS; i++)
{
arrayEnabled = (arrayEnabled << 1) + vertexArraysEnabled[i];
if( vertexArraysEnabled[i] )
arrayCount++;
}
call.AppendParam( arrayCount );
call.AppendParam( arrayEnabled );
for(int i=0; i<NUM_ARRAYS; i++)
{
if( vertexArraysEnabled[i] )
{
call.AppendParam( vertexArrays[i].size );
call.AppendParam( vertexArrays[i].type );
call.AppendParam( vertexArrays[i].stride );
int vectorsize;
if( vertexArrays[i].stride )
vectorsize = vertexArrays[i].stride * (first + count - 1) + sizeof(vertexArrays[i].type) * vertexArrays[i].size;
else
vectorsize = sizeof(vertexArrays[i].type) * vertexArrays[i].size * (first + count);
call.AppendVector( vertexArrays[i].pointer, vectorsize );
}
}
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawArrays <-\n");
}
EXPORT_C void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawElements ->\n");
if(count < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawElements, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
call.AppendParam( count );
call.AppendParam( type );
call.AppendVector( indices, count );
/* serialize vertex arrays
order of the data:
- number of arrays (int)
- bitfield of enabled arrays, order specified by opengl.h vertex array pointer enumeration (int)
- for each enabled vertex array:
- size (int)
- type (int)
- stride (int)
- data vector
*/
int arrayCount = 0;
int arrayEnabled = 0;
for(int i=0; i<NUM_ARRAYS; i++)
{
arrayEnabled = (arrayEnabled << 1) + vertexArraysEnabled[i];
if( vertexArraysEnabled[i] )
arrayCount++;
}
call.AppendParam( arrayCount );
call.AppendParam( arrayEnabled );
// find max index
int maxIndex = 0;
switch( type )
{
case GL_UNSIGNED_BYTE:
for(int i=0; i<count; i++)
{
if( ((GLubyte*)indices)[i] > maxIndex )
maxIndex = (int)((GLubyte*)indices)[i];
}
break;
case GL_UNSIGNED_SHORT:
for(int i=0; i<count; i++)
{
if( ((GLushort*)indices)[i] > maxIndex )
maxIndex = (int)((GLushort*)indices)[i];
}
break;
}
for(int i=0; i<NUM_ARRAYS; i++)
{
if( vertexArraysEnabled[i] )
{
call.AppendParam( vertexArrays[i].size );
call.AppendParam( vertexArrays[i].type );
call.AppendParam( vertexArrays[i].stride );
int vectorsize;
int typesize = 0;
switch(vertexArrays[i].type)
{
case GL_BYTE:
case GL_UNSIGNED_BYTE:
typesize = 1;
break;
case GL_SHORT:
case GL_UNSIGNED_SHORT:
typesize = 2;
break;
case GL_FLOAT:
case GL_FIXED:
typesize = 4;
break;
}
if( vertexArrays[i].stride )
vectorsize = vertexArrays[i].stride * maxIndex + typesize * vertexArrays[i].size;
else
vectorsize = typesize * vertexArrays[i].size * (maxIndex+1);
call.AppendVector( vertexArrays[i].pointer, vectorsize );
}
}
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawElements <-\n");
}
EXPORT_C void GL_APIENTRY glEnable (GLenum cap)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glEnable ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglEnable, RemoteFunctionCallData::EOpRequest );
call.AppendParam( cap );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glEnable <-\n");
}
EXPORT_C void GL_APIENTRY glEnableClientState (GLenum array)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glEnableClientState ->\n");
// store state on here as well, used in DrawArrays and DrawElements
bool enumError = false;
switch( array )
{
case GL_COLOR_ARRAY:
vertexArraysEnabled[COLOR_ARRAY] = true;
break;
case GL_NORMAL_ARRAY:
vertexArraysEnabled[NORMAL_ARRAY] = true;
break;
case GL_POINT_SIZE_ARRAY_OES:
vertexArraysEnabled[POINT_SIZE_ARRAY] = true;
break;
case GL_TEXTURE_COORD_ARRAY:
vertexArraysEnabled[TEX_COORD_ARRAY] = true;
break;
case GL_VERTEX_ARRAY:
vertexArraysEnabled[VERTEX_ARRAY] = true;
break;
case GL_MATRIX_INDEX_ARRAY_OES:
vertexArraysEnabled[MATRIX_INDEX_ARRAY] = true;
break;
case GL_WEIGHT_ARRAY_OES:
vertexArraysEnabled[WEIGHT_ARRAY] = true;
break;
default:
SetError( GL_INVALID_ENUM );
enumError = true;
break;
}
if( !enumError )
{
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglEnableClientState, RemoteFunctionCallData::EOpRequest );
call.AppendParam( array );
ExecuteCommand(call);
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glEnableClientState <-\n");
}
EXPORT_C void GL_APIENTRY glFinish (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFinish ->\n");
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{ // there is GL ES context
glesContext->ExecuteGlesFinishCommand();
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFinish <-\n");
}
EXPORT_C void GL_APIENTRY glFlush (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFlush ->\n");
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{ // there is GL ES context
glesContext->ExecuteGlesFlushCommand();
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFlush <-\n");
}
EXPORT_C void GL_APIENTRY glFogf (GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFogf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogf <-\n");
}
EXPORT_C void GL_APIENTRY glFogfv (GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_FOG_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFogfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogfv <-\n");
}
EXPORT_C void GL_APIENTRY glFogx (GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFogx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogx <-\n");
}
EXPORT_C void GL_APIENTRY glFogxv (GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_FOG_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFogxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFogxv <-\n");
}
EXPORT_C void GL_APIENTRY glFrontFace (GLenum mode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrontFace ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFrontFace, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrontFace <-\n");
}
EXPORT_C void GL_APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrustumf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFrustumf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( left );
call.AppendParam( right );
call.AppendParam( bottom );
call.AppendParam( top );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrustumf <-\n");
}
EXPORT_C void GL_APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrustumx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglFrustumx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( left );
call.AppendParam( right );
call.AppendParam( bottom );
call.AppendParam( top );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glFrustumx <-\n");
}
EXPORT_C void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGenBuffers ->\n");
if(n < 0)
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGenBuffers );
call.AppendParam( n );
call.AppendVector( buffers, n, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGenBuffers <-\n");
}
EXPORT_C void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGenTextures ->\n");
if(n < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGenTextures );
call.AppendParam( n );
call.AppendVector( textures, n, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGenTextures <-\n");
}
EXPORT_C void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetBooleanv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_COLOR_WRITEMASK )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetBooleanv );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetBooleanv <-\n");
}
EXPORT_C void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetBufferParameteriv ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetBufferParameteriv );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, 1, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetBufferParameteriv <-\n");
}
EXPORT_C void GL_APIENTRY glGetClipPlanef (GLenum pname, GLfloat eqn[4])
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetClipPlanef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetClipPlanef );
call.AppendParam( pname );
call.AppendVector( eqn, 4, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetClipPlanef <-\n");
}
EXPORT_C void GL_APIENTRY glGetClipPlanex (GLenum pname, GLfixed eqn[4])
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetClipPlanex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetClipPlanex );
call.AppendParam( pname );
call.AppendVector( eqn, 4, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetClipPlanex <-\n");
}
EXPORT_C GLenum GL_APIENTRY glGetError (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetError ->\n");
GLenum gles11Error = GL_NO_ERROR;
MGlesContext* glesContext = CVghwUtils::GlesContext();
if (glesContext)
{
gles11Error = glesContext->GlesError();
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetError <- %x\n", gles11Error);
return gles11Error;
}
inline TInt32 getGetterVectorSize(GLenum pname)
{
// oglGetterData.inl, s_getterInfos struct
TInt32 vectorsize;
switch( pname )
{
case GL_SMOOTH_POINT_SIZE_RANGE:
case GL_SMOOTH_LINE_WIDTH_RANGE:
case GL_DEPTH_RANGE:
case GL_MAX_VIEWPORT_DIMS:
case GL_ALIASED_POINT_SIZE_RANGE:
case GL_ALIASED_LINE_WIDTH_RANGE:
vectorsize = 2;
break;
case GL_CURRENT_NORMAL:
case GL_POINT_DISTANCE_ATTENUATION:
vectorsize = 3;
break;
case GL_CURRENT_COLOR:
case GL_CURRENT_TEXTURE_COORDS:
case GL_LIGHT_MODEL_AMBIENT:
case GL_FOG_COLOR:
case GL_VIEWPORT:
case GL_SCISSOR_BOX:
case GL_COLOR_CLEAR_VALUE:
case GL_COLOR_WRITEMASK:
vectorsize = 4;
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
vectorsize = 10;
break;
case GL_MODELVIEW_MATRIX:
case GL_PROJECTION_MATRIX:
case GL_TEXTURE_MATRIX:
vectorsize = 16;
break;
default:
vectorsize = 1;
break;
}
return vectorsize;
}
EXPORT_C void GL_APIENTRY glGetFixedv (GLenum pname, GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetFixedv ->\n");
TInt32 vectorsize = getGetterVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetFixedv );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetFixedv <-\n");
}
EXPORT_C void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetFloatv ->\n");
TInt32 vectorsize = getGetterVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetFloatv );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetFloatv <-\n");
}
EXPORT_C void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetIntegerv ->\n");
TInt32 vectorsize = getGetterVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetIntegerv );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetIntegerv <-\n");
}
inline TInt32 getLightVectorSize(GLenum pname)
{
// oglApi.inl, oglGetLightInternal()
TInt32 vectorsize;
switch( pname )
{
case GL_SPOT_DIRECTION:
vectorsize = 3;
break;
case GL_AMBIENT:
case GL_DIFFUSE:
case GL_SPECULAR:
case GL_POSITION:
vectorsize = 4;
break;
default:
vectorsize = 1;
break;
}
return vectorsize;
}
EXPORT_C void GL_APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetLightfv ->\n");
TInt32 vectorsize = getLightVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetLightfv );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetLightfv <-\n");
}
EXPORT_C void GL_APIENTRY glGetLightxv (GLenum light, GLenum pname, GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetLightxv ->\n");
TInt32 vectorsize = getLightVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetLightxv );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetLightxv <-\n");
}
inline TInt32 getMaterialVectorSize(GLenum pname)
{
// oglApi.inl, oglGetMaterialInternal()
TInt32 vectorsize;
switch( pname )
{
case GL_AMBIENT:
case GL_DIFFUSE:
case GL_SPECULAR:
case GL_EMISSION:
vectorsize = 4;
break;
default:
vectorsize = 1;
break;
}
return vectorsize;
}
EXPORT_C void GL_APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetMaterialfv ->\n");
TInt32 vectorsize = getMaterialVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetMaterialfv );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetMaterialfv <-\n");
}
EXPORT_C void GL_APIENTRY glGetMaterialxv (GLenum face, GLenum pname, GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetMaterialxv ->\n");
TInt32 vectorsize = getMaterialVectorSize(pname);
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetMaterialxv );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetMaterialxv <-\n");
}
EXPORT_C void GL_APIENTRY glGetPointerv (GLenum pname, void **params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetPointerv ->\n");
const GLvoid *pointer;
switch( pname )
{
case GL_COLOR_ARRAY_POINTER:
pointer = vertexArrays[COLOR_ARRAY].pointer;
break;
case GL_NORMAL_ARRAY_POINTER:
pointer = vertexArrays[NORMAL_ARRAY].pointer;
break;
case GL_POINT_SIZE_ARRAY_POINTER_OES:
pointer = vertexArrays[POINT_SIZE_ARRAY].pointer;
break;
case GL_TEXTURE_COORD_ARRAY_POINTER:
pointer = vertexArrays[TEX_COORD_ARRAY].pointer;
break;
case GL_VERTEX_ARRAY_POINTER:
pointer = vertexArrays[VERTEX_ARRAY].pointer;
break;
case GL_MATRIX_INDEX_ARRAY_POINTER_OES:
pointer = vertexArrays[MATRIX_INDEX_ARRAY].pointer;
break;
case GL_WEIGHT_ARRAY_POINTER_OES:
pointer = vertexArrays[WEIGHT_ARRAY].pointer;
break;
default:
pointer = NULL;
break;
}
*params = (void*)pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetPointerv <-\n");
}
EXPORT_C const GLubyte * GL_APIENTRY glGetString (GLenum name)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetString ->\n");
if(name < GL_VENDOR || name > GL_EXTENSIONS)
{
SetError( GL_INVALID_ENUM );
return NULL;
}
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetString <-\n");
return (const GLubyte*) g_strings[name - GL_VENDOR];
}
EXPORT_C void GL_APIENTRY glGetTexEnvfv (GLenum env, GLenum pname, GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnvfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexEnvfv );
call.AppendParam( env );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnvfv <-\n");
}
EXPORT_C void GL_APIENTRY glGetTexEnviv (GLenum env, GLenum pname, GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnviv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexEnviv );
call.AppendParam( env );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnviv <-\n");
}
EXPORT_C void GL_APIENTRY glGetTexEnvxv (GLenum env, GLenum pname, GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnvxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexEnvxv );
call.AppendParam( env );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexEnvxv <-\n");
}
EXPORT_C void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameterfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexParameterfv );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameterfv <-\n");
}
EXPORT_C void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameteriv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexParameteriv );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameteriv <-\n");
}
EXPORT_C void GL_APIENTRY glGetTexParameterxv (GLenum target, GLenum pname, GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameterxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglGetTexParameterxv );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glGetTexParameterxv <-\n");
}
EXPORT_C void GL_APIENTRY glHint (GLenum target, GLenum mode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glHint ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglHint, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( mode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glHint <-\n");
}
EXPORT_C GLboolean GL_APIENTRY glIsBuffer (GLuint buffer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsBuffer ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglIsBuffer );
call.AppendParam( buffer );
GLboolean result = (GLboolean)ExecuteFunction(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsBuffer <-\n");
return result;
}
EXPORT_C GLboolean GL_APIENTRY glIsEnabled (GLenum cap)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsEnabled ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglIsEnabled );
call.AppendParam( cap );
GLboolean result = (GLboolean)ExecuteFunction(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsEnabled <-\n");
return result;
}
EXPORT_C GLboolean GL_APIENTRY glIsTexture (GLuint texture)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsTexture ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglIsTexture );
call.AppendParam( texture );
GLboolean result = (GLboolean)ExecuteFunction(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glIsTexture <-\n");
return result;
}
EXPORT_C void GL_APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightf <-\n");
}
EXPORT_C void GL_APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightfv ->\n");
TInt32 vectorsize = getLightVectorSize( pname );
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightfv <-\n");
}
EXPORT_C void GL_APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightx <-\n");
}
EXPORT_C void GL_APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightxv ->\n");
TInt32 vectorsize = getLightVectorSize( pname );
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( light );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightxv <-\n");
}
EXPORT_C void GL_APIENTRY glLightModelf (GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightModelf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelf <-\n");
}
EXPORT_C void GL_APIENTRY glLightModelfv (GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_LIGHT_MODEL_AMBIENT )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightModelfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelfv <-\n");
}
EXPORT_C void GL_APIENTRY glLightModelx (GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightModelx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelx <-\n");
}
EXPORT_C void GL_APIENTRY glLightModelxv (GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_LIGHT_MODEL_AMBIENT )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLightModelxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLightModelxv <-\n");
}
EXPORT_C void GL_APIENTRY glLineWidth (GLfloat width) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLineWidth ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLineWidth, RemoteFunctionCallData::EOpRequest );
call.AppendParam( width );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLineWidth <-\n");
}
EXPORT_C void GL_APIENTRY glLineWidthx (GLfixed width)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLineWidthx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLineWidthx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( width );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLineWidthx <-\n");
}
EXPORT_C void GL_APIENTRY glLoadIdentity (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadIdentity ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLoadIdentity, RemoteFunctionCallData::EOpRequest );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadIdentity <-\n");
}
EXPORT_C void GL_APIENTRY glLoadMatrixf (const GLfloat *m)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadMatrixf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLoadMatrixf, RemoteFunctionCallData::EOpRequest );
call.AppendVector( m, 16 );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadMatrixf <-\n");
}
EXPORT_C void GL_APIENTRY glLoadMatrixx (const GLfixed *m)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadMatrixx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLoadMatrixx, RemoteFunctionCallData::EOpRequest );
call.AppendVector( m, 16 );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadMatrixx <-\n");
}
EXPORT_C void GL_APIENTRY glLogicOp (GLenum opcode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLogicOp ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLogicOp, RemoteFunctionCallData::EOpRequest );
call.AppendParam( opcode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLogicOp <-\n");
}
EXPORT_C void GL_APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMaterialf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialf <-\n");
}
EXPORT_C void GL_APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialfv ->\n");
TInt32 vectorsize = getMaterialVectorSize( pname );
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMaterialfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialfv <-\n");
}
EXPORT_C void GL_APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMaterialx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialx <-\n");
}
EXPORT_C void GL_APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialxv ->\n");
TInt32 vectorsize = getMaterialVectorSize( pname );
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMaterialxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( face );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMaterialxv <-\n");
}
EXPORT_C void GL_APIENTRY glMatrixMode (GLenum mode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMatrixMode ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMatrixMode, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMatrixMode <-\n");
}
EXPORT_C void GL_APIENTRY glMultMatrixf (const GLfloat *m)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultMatrixf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMultMatrixf, RemoteFunctionCallData::EOpRequest );
call.AppendVector( m, 16 );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultMatrixf <-\n");
}
EXPORT_C void GL_APIENTRY glMultMatrixx (const GLfixed *m)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultMatrixx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMultMatrixx, RemoteFunctionCallData::EOpRequest );
call.AppendVector( m, 16 );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultMatrixx <-\n");
}
EXPORT_C void GL_APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultiTexCoord4f ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMultiTexCoord4f, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( s );
call.AppendParam( t );
call.AppendParam( r );
call.AppendParam( q );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultiTexCoord4f <-\n");
}
EXPORT_C void GL_APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultiTexCoord4x ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglMultiTexCoord4x, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( s );
call.AppendParam( t );
call.AppendParam( r );
call.AppendParam( q );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMultiTexCoord4x <-\n");
}
EXPORT_C void GL_APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormal3f ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglNormal3f, RemoteFunctionCallData::EOpRequest );
call.AppendParam( nx );
call.AppendParam( ny );
call.AppendParam( nz );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormal3f <-\n");
}
EXPORT_C void GL_APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormal3x ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglNormal3x, RemoteFunctionCallData::EOpRequest );
call.AppendParam( nx );
call.AppendParam( ny );
call.AppendParam( nz );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormal3x <-\n");
}
EXPORT_C void GL_APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormalPointer ->\n");
vertexArrays[NORMAL_ARRAY].size = 3;
vertexArrays[NORMAL_ARRAY].type = type;
vertexArrays[NORMAL_ARRAY].stride = stride;
vertexArrays[NORMAL_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glNormalPointer <-\n");
}
EXPORT_C void GL_APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glOrthof ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglOrthof, RemoteFunctionCallData::EOpRequest );
call.AppendParam( left );
call.AppendParam( right );
call.AppendParam( bottom );
call.AppendParam( top );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glOrthof <-\n");
}
EXPORT_C void GL_APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glOrthox ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglOrthox, RemoteFunctionCallData::EOpRequest );
call.AppendParam( left );
call.AppendParam( right );
call.AppendParam( bottom );
call.AppendParam( top );
call.AppendParam( zNear );
call.AppendParam( zFar );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glOrthox <-\n");
}
EXPORT_C void GL_APIENTRY glPixelStorei (GLenum pname, GLint param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPixelStorei ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPixelStorei, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPixelStorei <-\n");
}
EXPORT_C void GL_APIENTRY glPointParameterf (GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointParameterf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterf <-\n");
}
EXPORT_C void GL_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_POINT_DISTANCE_ATTENUATION )
vectorsize = 3;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointParameterfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterfv <-\n");
}
EXPORT_C void GL_APIENTRY glPointParameterx (GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointParameterx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterx <-\n");
}
EXPORT_C void GL_APIENTRY glPointParameterxv (GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_POINT_DISTANCE_ATTENUATION )
vectorsize = 3;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointParameterxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointParameterxv <-\n");
}
EXPORT_C void GL_APIENTRY glPointSize (GLfloat size) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSize ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointSize, RemoteFunctionCallData::EOpRequest );
call.AppendParam( size );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSize <-\n");
}
EXPORT_C void GL_APIENTRY glPointSizePointerOES (GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSizePointerOES ->\n");
vertexArrays[POINT_SIZE_ARRAY].size = 1;
vertexArrays[POINT_SIZE_ARRAY].type = type;
vertexArrays[POINT_SIZE_ARRAY].stride = stride;
vertexArrays[POINT_SIZE_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSizePointerOES <-\n");
}
EXPORT_C void GL_APIENTRY glPointSizex (GLfixed size)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSizex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPointSizex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( size );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPointSizex <-\n");
}
EXPORT_C void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPolygonOffset ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPolygonOffset, RemoteFunctionCallData::EOpRequest );
call.AppendParam( factor );
call.AppendParam( units );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPolygonOffset <-\n");
}
EXPORT_C void GL_APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPolygonOffsetx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPolygonOffsetx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( factor );
call.AppendParam( units );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPolygonOffsetx <-\n");
}
EXPORT_C void GL_APIENTRY glPopMatrix (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPopMatrix ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPopMatrix, RemoteFunctionCallData::EOpRequest );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPopMatrix <-\n");
}
EXPORT_C void GL_APIENTRY glPushMatrix (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPushMatrix ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglPushMatrix, RemoteFunctionCallData::EOpRequest );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glPushMatrix <-\n");
}
inline TInt32 getPixelSizeInBytes(GLenum format, GLenum type)
{
TInt32 size = 0;
if( format == GL_RGBA && type == GL_UNSIGNED_BYTE )
{
size = 4;
}
else if( format == GL_RGB && type == GL_UNSIGNED_BYTE )
{
size = 3;
}
else if( format == GL_RGBA && type == GL_UNSIGNED_SHORT_4_4_4_4
|| format == GL_RGBA && type == GL_UNSIGNED_SHORT_5_5_5_1
|| format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5
|| format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE )
{
size = 2;
}
return size;
}
EXPORT_C void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glReadPixels ->\n");
TInt32 vectorsize = width * height * getPixelSizeInBytes( format, type );
if(vectorsize < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglReadPixels );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( format );
call.AppendParam( type );
call.AppendVector( pixels, vectorsize, RemoteFunctionCallData::EOut );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glReadPixels <-\n");
}
EXPORT_C void GL_APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glRotatef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglRotatef, RemoteFunctionCallData::EOpRequest );
call.AppendParam( angle );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glRotatef <-\n");
}
EXPORT_C void GL_APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glRotatex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglRotatex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( angle );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glRotatex <-\n");
}
EXPORT_C void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glSampleCoverage ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglSampleCoverage, RemoteFunctionCallData::EOpRequest );
call.AppendParam( value );
call.AppendParam( invert );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glSampleCoverage <-\n");
}
EXPORT_C void GL_APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glSampleCoveragex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglSampleCoveragex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( value );
call.AppendParam( invert );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glSampleCoveragex <-\n");
}
EXPORT_C void GL_APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScalef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglScalef, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScalef <-\n");
}
EXPORT_C void GL_APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScalex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglScalex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScalex <-\n");
}
EXPORT_C void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScissor ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglScissor, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glScissor <-\n");
}
EXPORT_C void GL_APIENTRY glShadeModel (GLenum mode)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glShadeModel ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglShadeModel, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mode );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glShadeModel <-\n");
}
EXPORT_C void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilFunc ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglStencilFunc, RemoteFunctionCallData::EOpRequest );
call.AppendParam( func );
call.AppendParam( ref );
call.AppendParam( mask );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilFunc <-\n");
}
EXPORT_C void GL_APIENTRY glStencilMask (GLuint mask)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilMask ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglStencilMask, RemoteFunctionCallData::EOpRequest );
call.AppendParam( mask );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilMask <-\n");
}
EXPORT_C void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilOp ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglStencilOp, RemoteFunctionCallData::EOpRequest );
call.AppendParam( fail );
call.AppendParam( zfail );
call.AppendParam( zpass );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glStencilOp <-\n");
}
EXPORT_C void GL_APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexCoordPointer ->\n");
vertexArrays[TEX_COORD_ARRAY].size = size;
vertexArrays[TEX_COORD_ARRAY].type = type;
vertexArrays[TEX_COORD_ARRAY].stride = stride;
vertexArrays[TEX_COORD_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexCoordPointer <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnvf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvf <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnvfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvfv <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvi ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnvi, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvi <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnviv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnviv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnviv <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnvx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvx <-\n");
}
EXPORT_C void GL_APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_ENV_COLOR )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexEnvxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexEnvxv <-\n");
}
EXPORT_C void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexImage2D ->\n");
TInt32 vectorsize = width * height * getPixelSizeInBytes( format, type );
if(vectorsize < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( internalformat );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( border );
call.AppendParam( format );
call.AppendParam( type );
call.AppendVector( pixels, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterf ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameterf, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterf <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterfv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameterfv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterfv <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameteri ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameteri, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameteri <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameteriv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameteriv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameteriv <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterx ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameterx, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendParam( param );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterx <-\n");
}
EXPORT_C void GL_APIENTRY glTexParameterxv (GLenum target, GLenum pname, const GLfixed *params)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterxv ->\n");
TInt32 vectorsize = 1;
if( pname == GL_TEXTURE_CROP_RECT_OES )
vectorsize = 4;
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexParameterxv, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( pname );
call.AppendVector( params, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexParameterxv <-\n");
}
EXPORT_C void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexSubImage2D ->\n");
TInt32 vectorsize = width * height * getPixelSizeInBytes( format, type );
if(vectorsize < 0) // cannot serialize vector with size < 0
{
SetError( GL_INVALID_VALUE );
return;
}
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTexSubImage2D, RemoteFunctionCallData::EOpRequest );
call.AppendParam( target );
call.AppendParam( level );
call.AppendParam( xoffset );
call.AppendParam( yoffset );
call.AppendParam( width );
call.AppendParam( height );
call.AppendParam( format );
call.AppendParam( type );
call.AppendVector( pixels, vectorsize );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTexSubImage2D <-\n");
}
EXPORT_C void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTranslatef ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTranslatef, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTranslatef <-\n");
}
EXPORT_C void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTranslatex ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglTranslatex, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( z );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glTranslatex <-\n");
}
EXPORT_C void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glVertexPointer ->\n");
vertexArrays[VERTEX_ARRAY].size = size;
vertexArrays[VERTEX_ARRAY].type = type;
vertexArrays[VERTEX_ARRAY].stride = stride;
vertexArrays[VERTEX_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glVertexPointer <-\n");
}
EXPORT_C void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glViewport ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglViewport, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glViewport <-\n");
}
// Guest Open GL ES extension export support for eglGetProcAddress
typedef struct
{
const char* extnName; // procedure or extension name
ExtensionProcPointer procAddr;
} TGlExtnInfo;
// GL ES extension functions
static const TGlExtnInfo glesProcedures[] =
{ // all the functions below the "from glextplatform.h" comment
{ "glCurrentPaletteMatrixOES", (ExtensionProcPointer)glCurrentPaletteMatrixOES },
{ "glDrawTexfOES", (ExtensionProcPointer)glDrawTexfOES },
{ "glDrawTexfvOES", (ExtensionProcPointer)glDrawTexfvOES },
{ "glDrawTexiOES", (ExtensionProcPointer)glDrawTexiOES },
{ "glDrawTexivOES", (ExtensionProcPointer)glDrawTexivOES },
{ "glDrawTexsOES", (ExtensionProcPointer)glDrawTexsOES },
{ "glDrawTexsvOES", (ExtensionProcPointer)glDrawTexsvOES },
{ "glDrawTexxOES", (ExtensionProcPointer)glDrawTexxOES },
{ "glDrawTexxvOES", (ExtensionProcPointer)glDrawTexxvOES },
{ "glLoadPaletteFromModelViewMatrixOES", (ExtensionProcPointer)glLoadPaletteFromModelViewMatrixOES },
{ "glMatrixIndexPointerOES", (ExtensionProcPointer)glMatrixIndexPointerOES },
{ "glQueryMatrixxOES", (ExtensionProcPointer)glQueryMatrixxOES },
{ "glWeightPointerOES", (ExtensionProcPointer)glWeightPointerOES },
};
const TInt glesProcCount = sizeof(glesProcedures) / sizeof(TGlExtnInfo);
TGles11ApiForEgl::TGles11ApiForEgl()
{
// DLL has loaded - publish vtable for MGles11ApiForEgl
CVghwUtils::SetGles11ApiForEgl(this);
}
TGles11ApiForEgl::~TGles11ApiForEgl()
{
// DLL is unloading - unpublish vtable for MGles11ApiForEgl
CVghwUtils::SetGles11ApiForEgl(NULL);
}
ExtensionProcPointer TGles11ApiForEgl::guestGetGles11ProcAddress (const char *aProcName)
{
// exhaustive search, for now. (We should consider a sorted list if the number of functions grows.)
for (TInt idx = 0; idx < glesProcCount; idx++)
{
if (!strcmp(aProcName, glesProcedures[idx].extnName))
return glesProcedures[idx].procAddr;
}
return NULL;
}
EXPORT_C void GL_APIENTRY glCurrentPaletteMatrixOES (GLuint matrixpaletteindex)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCurrentPaletteMatrixOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglCurrentPaletteMatrixOES, RemoteFunctionCallData::EOpRequest );
call.AppendParam( matrixpaletteindex );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glCurrentPaletteMatrixOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) __SOFTFP
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexfOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexfOES, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexfOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexfvOES (const GLfloat *coords)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexfvOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexfvOES, RemoteFunctionCallData::EOpRequest );
call.AppendVector( coords, 5 ); // oglFast.c
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexfvOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexiOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexiOES, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexiOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexivOES (const GLint *coords)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexivOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexivOES, RemoteFunctionCallData::EOpRequest );
call.AppendVector( coords, 5 ); // oglFast.c
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexivOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexsOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexsOES, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexsOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexsvOES (const GLshort *coords)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexsvOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexsvOES, RemoteFunctionCallData::EOpRequest );
call.AppendVector( coords, 5 ); // oglFast.c
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexsvOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexxOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexxOES, RemoteFunctionCallData::EOpRequest );
call.AppendParam( x );
call.AppendParam( y );
call.AppendParam( width );
call.AppendParam( height );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexxOES <-\n");
}
EXPORT_C void GL_APIENTRY glDrawTexxvOES (const GLfixed *coords)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexxvOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglDrawTexxvOES, RemoteFunctionCallData::EOpRequest );
call.AppendVector( coords, 5 ); // oglFast.c
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glDrawTexxvOES <-\n");
}
EXPORT_C void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES (void)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadPaletteFromModelViewMatrixOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglLoadPaletteFromModelViewMatrixOES, RemoteFunctionCallData::EOpRequest );
ExecuteCommand(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glLoadPaletteFromModelViewMatrixOES <-\n");
}
EXPORT_C void GL_APIENTRY glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMatrixIndexPointerOES ->\n");
vertexArrays[MATRIX_INDEX_ARRAY].size = size;
vertexArrays[MATRIX_INDEX_ARRAY].type = type;
vertexArrays[MATRIX_INDEX_ARRAY].stride = stride;
vertexArrays[MATRIX_INDEX_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glMatrixIndexPointerOES <-\n");
}
GLbitfield GL_APIENTRY glQueryMatrixxOES (GLfixed mantissa[16], GLint exponent[16])
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glQueryMatrixxOES ->\n");
RemoteFunctionCallData rfcData;
OpenGlES11RFC call( rfcData );
call.Init( OpenGlES11RFC::EglQueryMatrixxOES );
call.AppendVector( mantissa, 16, RemoteFunctionCallData::EOut );
call.AppendVector( exponent, 16, RemoteFunctionCallData::EOut );
GLbitfield result = (GLbitfield)ExecuteFunction(call);
OPENGL_TRACE(_APICALL_, "OpenGL client side: glQueryMatrixxOES <-\n");
return result;
}
EXPORT_C void GL_APIENTRY glWeightPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
OPENGL_TRACE(_APICALL_, "OpenGL client side: glWeightPointerOES ->\n");
vertexArrays[WEIGHT_ARRAY].size = size;
vertexArrays[WEIGHT_ARRAY].type = type;
vertexArrays[WEIGHT_ARRAY].stride = stride;
vertexArrays[WEIGHT_ARRAY].pointer = pointer;
OPENGL_TRACE(_APICALL_, "OpenGL client side: glWeightPointerOES <-\n");
}
} /* extern "C" */