am 37ba60c4: am 4b8bf442: am f4b1fa4c: Merge "GLESv2 Translator: fix glGet*"

* commit '37ba60c470aad28a7b37cb4d61da9384b514b3c9':
  GLESv2 Translator: fix glGet*
This commit is contained in:
David Turner
2011-07-11 16:08:02 -07:00
committed by Android Git Automerger
3 changed files with 139 additions and 94 deletions

View File

@@ -687,18 +687,14 @@ GL_API void GL_APIENTRY glGetBooleanv( GLenum pname, GLboolean *params) {
switch(pname)
{
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(pname, &i);
*params = (i != 0) ? GL_TRUE : GL_FALSE;
case GL_FRAMEBUFFER_BINDING_OES:
case GL_RENDERBUFFER_BINDING_OES:
{
GLint name;
glGetIntegerv(pname,&name);
*params = name!=0 ? GL_TRUE: GL_FALSE;
}
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &i);
*params = (i != 0) ? GL_TRUE : GL_FALSE;
break;
case GL_TEXTURE_GEN_STR_OES:
{
GLboolean state_s = GL_FALSE;
@@ -710,7 +706,6 @@ GL_API void GL_APIENTRY glGetBooleanv( GLenum pname, GLboolean *params) {
*params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE;
}
break;
default:
ctx->dispatcher().glGetBooleanv(pname,params);
}
@@ -766,33 +761,11 @@ GL_API void GL_APIENTRY glGetFixedv( GLenum pname, GLfixed *params) {
switch(pname)
{
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(pname, &i);
*params = I2X(i);
nParams = 0;
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &i);
if(i > 0)
{
GLint* iParams = new GLint[i];
glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, iParams);
while(i >= 0)
{
params[i] = I2X(iParams[i]);
i--;
}
delete [] iParams;
}
break;
case GL_FRAMEBUFFER_BINDING_OES:
case GL_RENDERBUFFER_BINDING_OES:
case GL_TEXTURE_GEN_STR_OES:
ctx->dispatcher().glGetFloatv(GL_TEXTURE_GEN_S,&fParams[0]);
glGetFloatv(pname,&fParams[0]);
break;
default:
ctx->dispatcher().glGetFloatv(pname,fParams);
}
@@ -815,34 +788,13 @@ GL_API void GL_APIENTRY glGetFloatv( GLenum pname, GLfloat *params) {
GLint i;
switch(pname)
{
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
switch (pname) {
case GL_FRAMEBUFFER_BINDING_OES:
case GL_RENDERBUFFER_BINDING_OES:
case GL_TEXTURE_GEN_STR_OES:
glGetIntegerv(pname,&i);
*params = (GLfloat)i;
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &i);
if(i > 0)
{
GLint* iParams = new GLint[i];
glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, iParams);
while(i >= 0)
{
params[i] = (GLfloat)iParams[i];
i--;
}
delete [] iParams;
}
break;
case GL_TEXTURE_GEN_STR_OES:
ctx->dispatcher().glGetFloatv(GL_TEXTURE_GEN_S,&params[0]);
break;
default:
ctx->dispatcher().glGetFloatv(pname,params);
}
@@ -856,28 +808,25 @@ GL_API void GL_APIENTRY glGetIntegerv( GLenum pname, GLint *params) {
return;
}
GLint i;
switch(pname)
{
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
*params = GL_UNSIGNED_BYTE;
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
*params = GL_RGBA;
break;
case GL_TEXTURE_GEN_STR_OES:
ctx->dispatcher().glGetIntegerv(GL_TEXTURE_GEN_S,&params[0]);
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
getCompressedFormats(params);
case GL_FRAMEBUFFER_BINDING_OES:
if (thrd->shareGroup.Ptr()) {
ctx->dispatcher().glGetIntegerv(pname,&i);
*params = thrd->shareGroup->getLocalName(FRAMEBUFFER,i);
}
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
*params = getCompressedFormats(NULL);
case GL_RENDERBUFFER_BINDING_OES:
if (thrd->shareGroup.Ptr()) {
ctx->dispatcher().glGetIntegerv(pname,&i);
*params = thrd->shareGroup->getLocalName(RENDERBUFFER,i);
}
break;
default:
ctx->dispatcher().glGetIntegerv(pname,params);
}

View File

@@ -638,8 +638,10 @@ GL_APICALL int GL_APIENTRY glGetAttribLocation(GLuint program, const GLchar* nam
GL_APICALL void GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params){
GET_CTX();
if (!ctx->glGetBooleanv(pname,params)) {
ctx->dispatcher().glGetBooleanv(pname,params);
}
}
GL_APICALL void GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params){
GET_CTX();
@@ -669,13 +671,56 @@ GL_APICALL GLenum GL_APIENTRY glGetError(void){
GL_APICALL void GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params){
GET_CTX();
if (ctx->glGetFloatv(pname,params)) {
return;
}
GLint i;
switch (pname) {
case GL_CURRENT_PROGRAM:
case GL_FRAMEBUFFER_BINDING:
case GL_RENDERBUFFER_BINDING:
glGetIntegerv(pname,&i);
*params = (GLfloat)i;
break;
default:
ctx->dispatcher().glGetFloatv(pname,params);
}
}
GL_APICALL void GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params){
GET_CTX();
if (ctx->glGetIntegerv(pname,params))
{
return;
}
GLint i;
switch (pname) {
case GL_CURRENT_PROGRAM:
if (thrd->shareGroup.Ptr()) {
ctx->dispatcher().glGetIntegerv(pname,&i);
*params = thrd->shareGroup->getLocalName(SHADER,i);
}
break;
case GL_FRAMEBUFFER_BINDING:
if (thrd->shareGroup.Ptr()) {
ctx->dispatcher().glGetIntegerv(pname,&i);
*params = thrd->shareGroup->getLocalName(FRAMEBUFFER,i);
}
break;
case GL_RENDERBUFFER_BINDING:
if (thrd->shareGroup.Ptr()) {
ctx->dispatcher().glGetIntegerv(pname,&i);
*params = thrd->shareGroup->getLocalName(RENDERBUFFER,i);
}
break;
default:
ctx->dispatcher().glGetIntegerv(pname,params);
}
}
GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params){
GET_CTX();

View File

@@ -538,28 +538,58 @@ bool GLEScontext::glGetBooleanv(GLenum pname, GLboolean *params)
bool GLEScontext::glGetFixedv(GLenum pname, GLfixed *params)
{
GLint iParam;
bool result = false;
GLint numParams = 1;
if(glGetIntegerv(pname, &iParam))
switch(pname)
{
*params = I2X(iParam);
return true;
case GL_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numParams);
break;
default:
numParams=1;
}
return false;
GLint* iParams = new GLint[numParams];
if (numParams>0 && glGetIntegerv(pname,iParams)) {
while(numParams >= 0)
{
params[numParams] = I2X(iParams[numParams]);
numParams--;
}
result = true;
}
delete [] iParams;
return result;
}
bool GLEScontext::glGetFloatv(GLenum pname, GLfloat *params)
{
GLint iParam;
bool result = false;
GLint numParams = 1;
if(glGetIntegerv(pname, &iParam))
switch(pname)
{
*params = (GLfloat)iParam;
return true;
case GL_COMPRESSED_TEXTURE_FORMATS:
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numParams);
break;
default:
numParams=1;
}
return false;
GLint* iParams = new GLint[numParams];
if (numParams>0 && glGetIntegerv(pname,iParams)) {
while(numParams >= 0)
{
params[numParams] = (GLfloat)iParams[numParams];
numParams--;
}
result = true;
}
delete [] iParams;
return result;
}
bool GLEScontext::glGetIntegerv(GLenum pname, GLint *params)
@@ -574,10 +604,31 @@ bool GLEScontext::glGetIntegerv(GLenum pname, GLint *params)
*params = m_elementBuffer;
break;
case GL_TEXTURE_BINDING_CUBE_MAP:
case GL_TEXTURE_BINDING_2D:
*params = m_tex2DBind[m_activeTexture].texture;
break;
case GL_ACTIVE_TEXTURE:
*params = m_activeTexture+GL_TEXTURE0;
break;
case GL_COMPRESSED_TEXTURE_FORMATS:
getCompressedFormats(params);
break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
*params = getCompressedFormats(NULL);
break;
case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
*params = GL_UNSIGNED_BYTE;
break;
case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
*params = GL_RGBA;
break;
default:
return false;
}