Index: gpu/command_buffer/service/buffer_manager.cc |
diff --git a/gpu/command_buffer/service/buffer_manager.cc b/gpu/command_buffer/service/buffer_manager.cc |
index b3352192a37e96aa256d35d1c10fd6495b8629de..1853c85b1f0e6387cc9856a076cfbd1431e0dcfb 100644 |
--- a/gpu/command_buffer/service/buffer_manager.cc |
+++ b/gpu/command_buffer/service/buffer_manager.cc |
@@ -18,8 +18,10 @@ |
#include "gpu/command_buffer/service/error_state.h" |
#include "gpu/command_buffer/service/feature_info.h" |
#include "gpu/command_buffer/service/memory_tracking.h" |
+#include "gpu/command_buffer/service/transform_feedback_manager.h" |
#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_implementation.h" |
+#include "ui/gl/gl_version_info.h" |
#include "ui/gl/trace_util.h" |
namespace gpu { |
@@ -409,6 +411,13 @@ void BufferManager::ValidateAndDoBufferData( |
} |
DoBufferData(error_state, buffer, target, size, usage, data); |
+ |
+ if (context_state->bound_transform_feedback.get()) { |
+ // buffer size might have changed, and on Desktop GL lower than 4.2, |
+ // we might need to reset transform feedback buffer range. |
+ context_state->bound_transform_feedback->OnBufferData( |
+ feature_info_->gl_version_info(), target, buffer); |
+ } |
} |