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*
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);
}
......
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