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 <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 7beb616..2a14613 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -3876,14 +3876,21 @@
if(context)
{
- if(program == 0)
- {
- return error(GL_INVALID_VALUE);
- }
-
es2::Program *programObject = context->getProgram(program);
- if(!programObject || !programObject->isLinked())
+ if(!programObject)
+ {
+ if(context->getShader(program))
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ return error(GL_INVALID_VALUE);
+ }
+ }
+
+ if(!programObject->isLinked())
{
return error(GL_INVALID_OPERATION);
}
@@ -3903,14 +3910,21 @@
if(context)
{
- if(program == 0)
- {
- return error(GL_INVALID_VALUE);
- }
-
es2::Program *programObject = context->getProgram(program);
- if(!programObject || !programObject->isLinked())
+ if(!programObject)
+ {
+ if(context->getShader(program))
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ return error(GL_INVALID_VALUE);
+ }
+ }
+
+ if(!programObject->isLinked())
{
return error(GL_INVALID_OPERATION);
}
@@ -3936,19 +3950,21 @@
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 @@
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);
}