Commit 7eaa10a3 by Nicolas Capens

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/5540Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent cc5c464b
...@@ -3876,14 +3876,21 @@ void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat* ...@@ -3876,14 +3876,21 @@ void GetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat*
if(context) 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->isLinked())
if(!programObject || !programObject->isLinked())
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
...@@ -3903,14 +3910,21 @@ void GetUniformfv(GLuint program, GLint location, GLfloat* params) ...@@ -3903,14 +3910,21 @@ void GetUniformfv(GLuint program, GLint location, GLfloat* params)
if(context) 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->isLinked())
if(!programObject || !programObject->isLinked())
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
...@@ -3936,19 +3950,21 @@ void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* pa ...@@ -3936,19 +3950,21 @@ void GetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint* pa
if(context) if(context)
{ {
if(program == 0)
{
return error(GL_INVALID_VALUE);
}
es2::Program *programObject = context->getProgram(program); 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); return error(GL_INVALID_OPERATION);
} }
...@@ -3968,19 +3984,21 @@ void GetUniformiv(GLuint program, GLint location, GLint* params) ...@@ -3968,19 +3984,21 @@ void GetUniformiv(GLuint program, GLint location, GLint* params)
if(context) if(context)
{ {
if(program == 0)
{
return error(GL_INVALID_VALUE);
}
es2::Program *programObject = context->getProgram(program); 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); return error(GL_INVALID_OPERATION);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment