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,8 +3144,15 @@ void GetProgramiv(GLuint program, GLenum pname, GLint* params) ...@@ -3144,8 +3144,15 @@ void GetProgramiv(GLuint program, GLenum pname, GLint* params)
if(!programObject) if(!programObject)
{ {
if(context->getShader(program))
{
return error(GL_INVALID_OPERATION);
}
else
{
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
} }
}
GLint clientVersion = egl::getClientVersion(); GLint clientVersion = egl::getClientVersion();
...@@ -3251,8 +3258,15 @@ void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* ...@@ -3251,8 +3258,15 @@ void GetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar*
if(!programObject) if(!programObject)
{ {
if(context->getShader(program))
{
return error(GL_INVALID_OPERATION);
}
else
{
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
} }
}
programObject->getInfoLog(bufsize, length, infolog); programObject->getInfoLog(bufsize, length, infolog);
} }
...@@ -3371,8 +3385,15 @@ void GetShaderiv(GLuint shader, GLenum pname, GLint* params) ...@@ -3371,8 +3385,15 @@ void GetShaderiv(GLuint shader, GLenum pname, GLint* params)
if(!shaderObject) if(!shaderObject)
{ {
if(context->getProgram(shader))
{
return error(GL_INVALID_OPERATION);
}
else
{
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
} }
}
switch(pname) switch(pname)
{ {
...@@ -3415,8 +3436,15 @@ void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* i ...@@ -3415,8 +3436,15 @@ void GetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* i
if(!shaderObject) if(!shaderObject)
{ {
if(context->getProgram(shader))
{
return error(GL_INVALID_OPERATION);
}
else
{
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
} }
}
shaderObject->getInfoLog(bufsize, length, infolog); shaderObject->getInfoLog(bufsize, length, infolog);
} }
...@@ -3477,8 +3505,15 @@ void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* so ...@@ -3477,8 +3505,15 @@ void GetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* so
if(!shaderObject) if(!shaderObject)
{ {
if(context->getProgram(shader))
{
return error(GL_INVALID_OPERATION); 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