| Index: gpu/command_buffer/service/buffer_manager.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/buffer_manager.cc (revision 205634)
|
| +++ gpu/command_buffer/service/buffer_manager.cc (working copy)
|
| @@ -240,6 +240,11 @@
|
| 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 @@
|
|
|
| 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);
|
| }
|
|
|