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:
committed by
David 'Digit' Turner
parent
142ed5bf31
commit
14d40b879d
@@ -1153,14 +1153,7 @@ GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenu
|
|||||||
GET_CTX_V2();
|
GET_CTX_V2();
|
||||||
SET_ERROR_IF(!(GLESv2Validate::shaderType(shadertype) && GLESv2Validate::precisionType(precisiontype)),GL_INVALID_ENUM);
|
SET_ERROR_IF(!(GLESv2Validate::shaderType(shadertype) && GLESv2Validate::precisionType(precisiontype)),GL_INVALID_ENUM);
|
||||||
|
|
||||||
if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL)
|
switch (precisiontype) {
|
||||||
{
|
|
||||||
ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch(precisiontype)
|
|
||||||
{
|
|
||||||
case GL_LOW_INT:
|
case GL_LOW_INT:
|
||||||
case GL_MEDIUM_INT:
|
case GL_MEDIUM_INT:
|
||||||
case GL_HIGH_INT:
|
case GL_HIGH_INT:
|
||||||
@@ -1171,10 +1164,13 @@ GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenu
|
|||||||
case GL_LOW_FLOAT:
|
case GL_LOW_FLOAT:
|
||||||
case GL_MEDIUM_FLOAT:
|
case GL_MEDIUM_FLOAT:
|
||||||
case GL_HIGH_FLOAT:
|
case GL_HIGH_FLOAT:
|
||||||
|
if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL) {
|
||||||
|
ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision);
|
||||||
|
} else {
|
||||||
range[0] = range[1] = 127;
|
range[0] = range[1] = 127;
|
||||||
*precision = 24;
|
*precision = 24;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user