From: Nicolas Capens Date: Thu, 9 Jun 2016 14:01:58 +0000 (-0400) Subject: Fix error code on invalid shader/program operation X-Git-Tag: android-x86-7.1-r1~470 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7eaa10a30cdcf525b89e23a56b28126abd05051b;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: Ia819857b533f226a90d9a9805b254b127da8c667 Reviewed-on: https://swiftshader-review.googlesource.com/5540 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 7beb6160e..2a14613dd 100644 --- a/src/OpenGL/libGLESv2/libGLESv2.cpp +++ b/src/OpenGL/libGLESv2/libGLESv2.cpp @@ -3876,14 +3876,21 @@ void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* if(context) { - if(program == 0) + es2::Program *programObject = context->getProgram(program); + + if(!programObject) { - return error(GL_INVALID_VALUE); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } - es2::Program *programObject = context->getProgram(program); - - if(!programObject || !programObject->isLinked()) + if(!programObject->isLinked()) { return error(GL_INVALID_OPERATION); } @@ -3903,14 +3910,21 @@ void GetUniformfv(GLuint program, GLint location, GLfloat* params) if(context) { - if(program == 0) + es2::Program *programObject = context->getProgram(program); + + if(!programObject) { - return error(GL_INVALID_VALUE); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } - es2::Program *programObject = context->getProgram(program); - - if(!programObject || !programObject->isLinked()) + if(!programObject->isLinked()) { return error(GL_INVALID_OPERATION); } @@ -3936,19 +3950,21 @@ void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* pa if(context) { - if(program == 0) - { - return error(GL_INVALID_VALUE); - } - es2::Program *programObject = context->getProgram(program); - if(!programObject || !programObject->isLinked()) + if(!programObject) { - return error(GL_INVALID_OPERATION); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } - if(!programObject) + if(!programObject->isLinked()) { return error(GL_INVALID_OPERATION); } @@ -3968,19 +3984,21 @@ void GetUniformiv(GLuint program, GLint location, GLint* params) if(context) { - if(program == 0) - { - return error(GL_INVALID_VALUE); - } - es2::Program *programObject = context->getProgram(program); - if(!programObject || !programObject->isLinked()) + if(!programObject) { - return error(GL_INVALID_OPERATION); + if(context->getShader(program)) + { + return error(GL_INVALID_OPERATION); + } + else + { + return error(GL_INVALID_VALUE); + } } - if(!programObject) + if(!programObject->isLinked()) { return error(GL_INVALID_OPERATION); }