From 7e04a2421c6cec9b2ecb99c55bbde217576ee83b Mon Sep 17 00:00:00 2001 From: Yochai Shefi Simchon Date: Mon, 25 Jul 2011 15:36:26 +0300 Subject: [PATCH] 1.1 translator: WAR for GL_ALPHA_TEST_REF bug Both the ATI and nVidia OpenGL drivers return the wrong answer on glGetIntegerv(GL_ALPHA_TEST_REF). So Implement this functionality in our code. Change-Id: I022b1475f7edb9f1d0f48ebcaf9f6e9f5c4f344e --- .../opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp index 6fde8a5bf..677f251bb 100644 --- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp +++ b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp @@ -862,6 +862,7 @@ GL_API void GL_APIENTRY glGetIntegerv( GLenum pname, GLint *params) { } GLint i; + GLfloat f; switch(pname) { @@ -896,6 +897,13 @@ GL_API void GL_APIENTRY glGetIntegerv( GLenum pname, GLint *params) { *params = 6; } break; + case GL_ALPHA_TEST_REF: + // Both the ATI and nVidia OpenGL drivers return the wrong answer + // here. So return the right one. + ctx->dispatcher().glGetFloatv(pname,&f); + *params = (int)(f * (float)0x7fffffff); + break; + default: ctx->dispatcher().glGetIntegerv(pname,params); }