Commit ef4c25e7 by Geoff Lang Committed by Commit Bot

GL: Skip buffer validation for transform feedback buffers.

Transform feedback buffer state is managed by TransformFeedbackGL, the state tracked in StateManagerGL is not correct. BUG=angleproject:3900 Change-Id: I73f7b9b1c8d3b4087e25eb4cf3844faf210793a0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1848392Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 8e7d9d6c
...@@ -378,6 +378,9 @@ void StateManagerGL::bindBuffer(gl::BufferBinding target, GLuint buffer) ...@@ -378,6 +378,9 @@ void StateManagerGL::bindBuffer(gl::BufferBinding target, GLuint buffer)
void StateManagerGL::bindBufferBase(gl::BufferBinding target, size_t index, GLuint buffer) void StateManagerGL::bindBufferBase(gl::BufferBinding target, size_t index, GLuint buffer)
{ {
// Transform feedback buffer bindings are tracked in TransformFeedbackGL
ASSERT(target != gl::BufferBinding::TransformFeedback);
ASSERT(index < mIndexedBuffers[target].size()); ASSERT(index < mIndexedBuffers[target].size());
auto &binding = mIndexedBuffers[target][index]; auto &binding = mIndexedBuffers[target][index];
if (binding.buffer != buffer || binding.offset != static_cast<size_t>(-1) || if (binding.buffer != buffer || binding.offset != static_cast<size_t>(-1) ||
...@@ -397,6 +400,9 @@ void StateManagerGL::bindBufferRange(gl::BufferBinding target, ...@@ -397,6 +400,9 @@ void StateManagerGL::bindBufferRange(gl::BufferBinding target,
size_t offset, size_t offset,
size_t size) size_t size)
{ {
// Transform feedback buffer bindings are tracked in TransformFeedbackGL
ASSERT(target != gl::BufferBinding::TransformFeedback);
auto &binding = mIndexedBuffers[target][index]; auto &binding = mIndexedBuffers[target][index];
if (binding.buffer != buffer || binding.offset != offset || binding.size != size) if (binding.buffer != buffer || binding.offset != offset || binding.size != size)
{ {
...@@ -2156,6 +2162,13 @@ void StateManagerGL::validateState() const ...@@ -2156,6 +2162,13 @@ void StateManagerGL::validateState() const
continue; continue;
} }
} }
// Transform feedback buffer bindings are tracked in TransformFeedbackGL
if (bindingType == gl::BufferBinding::TransformFeedback)
{
continue;
}
GLenum bindingTypeGL = nativegl::GetBufferBindingQuery(bindingType); GLenum bindingTypeGL = nativegl::GetBufferBindingQuery(bindingType);
std::string localName = "mBuffers[" + ToString(bindingType) + "]"; std::string localName = "mBuffers[" + ToString(bindingType) + "]";
ValidateStateHelper(mFunctions, mBuffers[bindingType], bindingTypeGL, localName.c_str(), ValidateStateHelper(mFunctions, mBuffers[bindingType], bindingTypeGL, localName.c_str(),
......
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