Commit 536f7913 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: Id9d922b390ca5d2db233eb60b6a44992105cb933 Reviewed-on: https://swiftshader-review.googlesource.com/5176Tested-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 adb305a2
...@@ -3144,7 +3144,14 @@ void GetProgramiv(GLuint program, GLenum pname, GLint* params) ...@@ -3144,7 +3144,14 @@ void GetProgramiv(GLuint program, GLenum pname, GLint* params)
if(!programObject) 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(); GLint clientVersion = egl::getClientVersion();
...@@ -3251,7 +3258,14 @@ void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* ...@@ -3251,7 +3258,14 @@ void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar*
if(!programObject) 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); programObject->getInfoLog(bufsize, length, infolog);
...@@ -3371,7 +3385,14 @@ void GetShaderiv(GLuint shader, GLenum pname, GLint* params) ...@@ -3371,7 +3385,14 @@ void GetShaderiv(GLuint shader, GLenum pname, GLint* params)
if(!shaderObject) if(!shaderObject)
{ {
return error(GL_INVALID_VALUE); if(context->getProgram(shader))
{
return error(GL_INVALID_OPERATION);
}
else
{
return error(GL_INVALID_VALUE);
}
} }
switch(pname) switch(pname)
...@@ -3415,7 +3436,14 @@ void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* i ...@@ -3415,7 +3436,14 @@ void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* i
if(!shaderObject) 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); shaderObject->getInfoLog(bufsize, length, infolog);
...@@ -3477,7 +3505,14 @@ void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* so ...@@ -3477,7 +3505,14 @@ void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* so
if(!shaderObject) 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); shaderObject->getSource(bufsize, length, source);
......
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