opengles emulator: GLESv2: glGetShaderPrecision

to overcome a bug in intel driver which returnes incorrect precision
and range for integers. query the driver for precision format only
for floats. for integers, we return values defined in gles spec.

Change-Id: Idfec2826d811220873c18f301cf4268fc54dabee
This commit is contained in:
Yochai Shefi Simchon
2011-08-04 08:53:23 +03:00
committed by David 'Digit' Turner
parent 142ed5bf31
commit 14d40b879d

View File

@@ -1153,14 +1153,7 @@ GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenu
GET_CTX_V2();
SET_ERROR_IF(!(GLESv2Validate::shaderType(shadertype) && GLESv2Validate::precisionType(precisiontype)),GL_INVALID_ENUM);
if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL)
{
ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision);
}
else
{
switch(precisiontype)
{
switch (precisiontype) {
case GL_LOW_INT:
case GL_MEDIUM_INT:
case GL_HIGH_INT:
@@ -1171,10 +1164,13 @@ GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenu
case GL_LOW_FLOAT:
case GL_MEDIUM_FLOAT:
case GL_HIGH_FLOAT:
if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL) {
ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision);
} else {
range[0] = range[1] = 127;
*precision = 24;
break;
}
break;
}
}