Fixed program binary failure
Updated glGetProgramBinary and glProgramBinary in order to properly
reflect that SwiftShader doesn't support any binary format.
Fixes dEQP-GLES3.functional.negative_api.shader.get_program_binary
Change-Id: I068ce7eb7ce824719cecca2fdc651a9e6c14190c
Reviewed-on: https://swiftshader-review.googlesource.com/15330
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index 7c28ee5..f9ad710 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -3771,7 +3771,8 @@
}
}
- UNIMPLEMENTED();
+ // SwiftShader doesn't return a program binary and sets the program binay size to 0, so any attempt at getting one is invalid.
+ return error(GL_INVALID_OPERATION);
}
GL_APICALL void GL_APIENTRY glProgramBinary(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
@@ -3784,7 +3785,20 @@
return error(GL_INVALID_VALUE);
}
- UNIMPLEMENTED();
+ es2::Context *context = es2::getContext();
+
+ if(context)
+ {
+ es2::Program *programObject = context->getProgram(program);
+
+ if(!programObject)
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+ }
+
+ // Regardless of what the binaryFormat is, it is unrecognized by SwiftShader, since it supports no format.
+ return error(GL_INVALID_ENUM);
}
GL_APICALL void GL_APIENTRY glProgramParameteri(GLuint program, GLenum pname, GLint value)