From: Nicolas Capens Date: Thu, 21 Apr 2016 19:59:38 +0000 (-0400) Subject: Fix error code on invalid shader/program operation X-Git-Tag: android-x86-7.1-r1~553 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=536f79134bcc686d1c37ebcff6e4d631dbbbc46d;p=android-x86%2Fexternal-swiftshader.git Fix error code on invalid shader/program operation The spec states that GL_INVALID_OPERATION is generated when a shader or program function is called on the wrong object type. GL_INVALID_VALUE is generated when there's no shader nor program object by that name. Change-Id: Id9d922b390ca5d2db233eb60b6a44992105cb933 Reviewed-on: https://swiftshader-review.googlesource.com/5176 Tested-by: Nicolas Capens Reviewed-by: Alexis Hétu Reviewed-by: Nicolas Capens --- diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp index 4852ca194..57414d682 100644 --- a/src/OpenGL/libGLESv2/libGLESv2.cpp +++ b/src/OpenGL/libGLESv2/libGLESv2.cpp @@ -3144,7 +3144,14 @@ void GetProgramiv(GLuint program, GLenum pname, GLint* params) if(!programObject) { - return error(GL_INVALID_VALUE); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } GLint clientVersion = egl::getClientVersion(); @@ -3251,7 +3258,14 @@ void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* if(!programObject) { - return error(GL_INVALID_VALUE); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } programObject->getInfoLog(bufsize, length, infolog); @@ -3371,7 +3385,14 @@ void GetShaderiv(GLuint shader, GLenum pname, GLint* params) if(!shaderObject) { - return error(GL_INVALID_VALUE); + if(context->getProgram(shader)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } switch(pname) @@ -3415,7 +3436,14 @@ void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* i if(!shaderObject) { - return error(GL_INVALID_VALUE); + if(context->getProgram(shader)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } shaderObject->getInfoLog(bufsize, length, infolog); @@ -3477,7 +3505,14 @@ void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* so if(!shaderObject) { - return error(GL_INVALID_OPERATION); + if(context->getProgram(shader)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } shaderObject->getSource(bufsize, length, source);