Added uniform and transform feedback state and setting on context.
TRAC #22753
Signed-off-by: Jamie Madill
Signed-off-by: Nicolas Capens
Author: Geoff Lang
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2111 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 3067ead..9adacf7 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -240,6 +240,16 @@
mTexture2DZero.set(NULL);
mTextureCubeMapZero.set(NULL);
+ for (int i = 0; i < IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS; i++)
+ {
+ mState.uniformBuffers[i].set(NULL);
+ }
+
+ for (int i = 0; i < IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_BUFFERS; i++)
+ {
+ mState.transformFeedbackBuffers[i].set(NULL);
+ }
+
mResourceManager->release();
}
@@ -915,6 +925,20 @@
mState.renderbuffer.set(getRenderbuffer(renderbuffer));
}
+void Context::bindUniformBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size)
+{
+ mResourceManager->checkBufferAllocation(buffer);
+
+ mState.uniformBuffers[index].set(getBuffer(buffer), offset, size);
+}
+
+void Context::bindTransformFeedbackBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size)
+{
+ mResourceManager->checkBufferAllocation(buffer);
+
+ mState.transformFeedbackBuffers[index].set(getBuffer(buffer), offset, size);
+}
+
void Context::useProgram(GLuint program)
{
GLuint priorProgram = mState.currentProgram;
@@ -2172,11 +2196,22 @@
return mRenderer->getMaxCombinedTextureImageUnits();
}
+unsigned int Context::getMaximumCombinedUniformBufferBindings() const
+{
+ return mRenderer->getMaxVertexShaderUniformBuffers() +
+ mRenderer->getMaxFragmentShaderUniformBuffers();
+}
+
int Context::getMaxSupportedSamples() const
{
return mRenderer->getMaxSupportedSamples();
}
+unsigned int Context::getMaxTransformFeedbackBufferBindings() const
+{
+ return mRenderer->getMaxTransformFeedbackBuffers();
+}
+
unsigned int Context::getMaximumRenderTargets() const
{
return mRenderer->getMaxRenderTargets();