Refactor all the Bind* GLES 2.0 entry points.
This requires storing a reference the the Context's Framebuffer map
in the ValidationContext. Likely we'll need to do this as well for
the other non-shared object types.
BUG=angleproject:747
Change-Id: I73ee8b0be3c3b9e54b7e48e49d6f738cf1d926dd
Reviewed-on: https://chromium-review.googlesource.com/407843
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 83cee97..876bed6 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -245,6 +245,7 @@
mExtensions,
nullptr,
mLimitations,
+ mFramebufferMap,
GetNoError(attribs)),
mImplementation(implFactory->createContext(mState)),
mCompiler(nullptr),
@@ -319,7 +320,7 @@
bindArrayBuffer(0);
bindElementArrayBuffer(0);
- bindRenderbuffer(0);
+ bindRenderbuffer(GL_RENDERBUFFER, 0);
bindGenericUniformBuffer(0);
for (unsigned int i = 0; i < mCaps.maxCombinedUniformBlocks; i++)
@@ -985,13 +986,6 @@
mGLState.setDrawFramebufferBinding(framebuffer);
}
-void Context::bindRenderbuffer(GLuint renderbufferHandle)
-{
- Renderbuffer *renderbuffer =
- mResourceManager->checkRenderbufferAllocation(mImplementation.get(), renderbufferHandle);
- mGLState.setRenderbufferBinding(renderbuffer);
-}
-
void Context::bindVertexArray(GLuint vertexArrayHandle)
{
VertexArray *vertexArray = checkVertexArrayAllocation(vertexArrayHandle);
@@ -2096,27 +2090,6 @@
return framebufferIt->second;
}
-bool Context::isTextureGenerated(GLuint texture) const
-{
- return mResourceManager->isTextureGenerated(texture);
-}
-
-bool Context::isBufferGenerated(GLuint buffer) const
-{
- return mResourceManager->isBufferGenerated(buffer);
-}
-
-bool Context::isRenderbufferGenerated(GLuint renderbuffer) const
-{
- return mResourceManager->isRenderbufferGenerated(renderbuffer);
-}
-
-bool Context::isFramebufferGenerated(GLuint framebuffer) const
-{
- ASSERT(mFramebufferMap.find(0) != mFramebufferMap.end());
- return mFramebufferMap.find(framebuffer) != mFramebufferMap.end();
-}
-
bool Context::isVertexArrayGenerated(GLuint vertexArray)
{
ASSERT(mVertexArrayMap.find(0) != mVertexArrayMap.end());
@@ -3543,4 +3516,68 @@
handleError(writeBuffer->copyBufferSubData(readBuffer, readOffset, writeOffset, size));
}
+void Context::bindAttribLocation(GLuint program, GLuint index, const GLchar *name)
+{
+ Program *programObject = getProgram(program);
+ // TODO(jmadill): Re-use this from the validation if possible.
+ ASSERT(programObject);
+ programObject->bindAttributeLocation(index, name);
+}
+
+void Context::bindBuffer(GLenum target, GLuint buffer)
+{
+ switch (target)
+ {
+ case GL_ARRAY_BUFFER:
+ bindArrayBuffer(buffer);
+ break;
+ case GL_ELEMENT_ARRAY_BUFFER:
+ bindElementArrayBuffer(buffer);
+ break;
+ case GL_COPY_READ_BUFFER:
+ bindCopyReadBuffer(buffer);
+ break;
+ case GL_COPY_WRITE_BUFFER:
+ bindCopyWriteBuffer(buffer);
+ break;
+ case GL_PIXEL_PACK_BUFFER:
+ bindPixelPackBuffer(buffer);
+ break;
+ case GL_PIXEL_UNPACK_BUFFER:
+ bindPixelUnpackBuffer(buffer);
+ break;
+ case GL_UNIFORM_BUFFER:
+ bindGenericUniformBuffer(buffer);
+ break;
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ bindGenericTransformFeedbackBuffer(buffer);
+ break;
+
+ default:
+ UNREACHABLE();
+ break;
+ }
+}
+
+void Context::bindFramebuffer(GLenum target, GLuint framebuffer)
+{
+ if (target == GL_READ_FRAMEBUFFER || target == GL_FRAMEBUFFER)
+ {
+ bindReadFramebuffer(framebuffer);
+ }
+
+ if (target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER)
+ {
+ bindDrawFramebuffer(framebuffer);
+ }
+}
+
+void Context::bindRenderbuffer(GLenum target, GLuint renderbuffer)
+{
+ ASSERT(target == GL_RENDERBUFFER);
+ Renderbuffer *object =
+ mResourceManager->checkRenderbufferAllocation(mImplementation.get(), renderbuffer);
+ mGLState.setRenderbufferBinding(object);
+}
+
} // namespace gl