From fb06a28c30ddea2481cb258171b95c043775c57f Mon Sep 17 00:00:00 2001 From: Liran Date: Thu, 7 Apr 2011 17:01:47 +0300 Subject: GLESv1 extensions This fix adds support for OpenGLES 1.1 extensions in the codec layer. This fix also includes bug fixes in GLEncoder (client-state) and gles android wrapper modules. Change-Id: I512649724d43e4af9d3ce5d49ae66d9f4da0b823 --- .../shared/OpenglCodecCommon/GLClientState.cpp | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp') diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp index 9c70fc16c..85def13e6 100644 --- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp +++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp @@ -17,6 +17,7 @@ #include "ErrorLog.h" #include #include +#include #include "glUtils.h" #include @@ -46,6 +47,8 @@ GLClientState::GLClientState(int nLocations) m_states[TEXCOORD5_LOCATION].glConst = GL_TEXTURE_COORD_ARRAY; m_states[TEXCOORD6_LOCATION].glConst = GL_TEXTURE_COORD_ARRAY; m_states[TEXCOORD7_LOCATION].glConst = GL_TEXTURE_COORD_ARRAY; + m_states[MATRIXINDEX_LOCATION].glConst = GL_MATRIX_INDEX_ARRAY_OES; + m_states[WEIGHT_LOCATION].glConst = GL_WEIGHT_ARRAY_OES; m_activeTexture = 0; m_pixelStore.unpack_alignment = 4; @@ -131,12 +134,55 @@ int GLClientState::getLocation(GLenum loc) case GL_TEXTURE_COORD_ARRAY: retval = int (TEXCOORD0_LOCATION + m_activeTexture); break; + case GL_MATRIX_INDEX_ARRAY_OES: + retval = int (MATRIXINDEX_LOCATION); + break; + case GL_WEIGHT_ARRAY_OES: + retval = int (WEIGHT_LOCATION); + break; default: retval = loc; } return retval; } +void GLClientState::getClientStatePointer(GLenum pname, GLvoid** params) +{ + const GLClientState::VertexAttribState *state = NULL; + switch (pname) { + case GL_VERTEX_ARRAY_POINTER: { + state = getState(GLClientState::VERTEX_LOCATION); + break; + } + case GL_NORMAL_ARRAY_POINTER: { + state = getState(GLClientState::NORMAL_LOCATION); + break; + } + case GL_COLOR_ARRAY_POINTER: { + state = getState(GLClientState::COLOR_LOCATION); + break; + } + case GL_TEXTURE_COORD_ARRAY_POINTER: { + state = getState(getActiveTexture() + GLClientState::TEXCOORD0_LOCATION); + break; + } + case GL_POINT_SIZE_ARRAY_POINTER_OES: { + state = getState(GLClientState::POINTSIZE_LOCATION); + break; + } + case GL_MATRIX_INDEX_ARRAY_POINTER_OES: { + state = getState(GLClientState::MATRIXINDEX_LOCATION); + break; + } + case GL_WEIGHT_ARRAY_POINTER_OES: { + state = getState(GLClientState::WEIGHT_LOCATION); + break; + } + } + if (state && params) + *params = state->data; +} + int GLClientState::setPixelStore(GLenum param, GLint value) { int retval = 0; @@ -162,6 +208,8 @@ int GLClientState::setPixelStore(GLenum param, GLint value) } + + size_t GLClientState::pixelDataSize(GLsizei width, GLsizei height, GLenum format, GLenum type, int pack) { int pixelsize = glUtilsPixelBitSize(format, type) >> 3; -- cgit v1.2.3