| 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 ed4c1f10d4c11d86dba2d58254249e157ed827be..49662379fd000d254e819db7decc0395acd85646 100644
|
| --- a/gpu/command_buffer/service/buffer_manager.cc
|
| +++ b/gpu/command_buffer/service/buffer_manager.cc
|
| @@ -240,6 +240,11 @@ bool BufferManager::IsUsageClientSideArray(GLenum usage) {
|
| return usage == GL_STREAM_DRAW && use_client_side_arrays_for_stream_buffers_;
|
| }
|
|
|
| +bool BufferManager::UseNonZeroSizeForClientSideArrayBuffer() {
|
| + return feature_info_ && feature_info_->workarounds(
|
| + ).use_non_zero_size_for_client_side_stream_buffers;
|
| +}
|
| +
|
| void BufferManager::SetInfo(
|
| Buffer* buffer, GLsizeiptr size, GLenum usage, const GLvoid* data) {
|
| DCHECK(buffer);
|
| @@ -268,7 +273,8 @@ void BufferManager::DoBufferData(
|
|
|
| ERRORSTATE_COPY_REAL_GL_ERRORS_TO_WRAPPER(error_state, "glBufferData");
|
| if (IsUsageClientSideArray(usage)) {
|
| - glBufferData(buffer->target(), 0, NULL, usage);
|
| + GLsizei empty_size = UseNonZeroSizeForClientSideArrayBuffer() ? 1 : 0;
|
| + glBufferData(buffer->target(), empty_size, NULL, usage);
|
| } else {
|
| glBufferData(buffer->target(), size, data, usage);
|
| }
|
|
|