| Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| index 4d54739da5538081fa7d797233eeac0e9431ae54..5dd9f6440d27819ab9f65f007a4443a684c812a9 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| @@ -7578,6 +7578,11 @@ void GLES2DecoderImpl::FinishReadPixels(
|
| } else {
|
| data = glMapBuffer(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY);
|
| }
|
| + if (!data) {
|
| + LOCAL_SET_GL_ERROR(GL_OUT_OF_MEMORY, "glMapBuffer",
|
| + "Unable to map memory for readback.");
|
| + return;
|
| + }
|
| memcpy(pixels, data, pixels_size);
|
| // GL_PIXEL_PACK_BUFFER_ARB is currently unused, so we don't
|
| // have to restore the state.
|
| @@ -7779,7 +7784,10 @@ error::Error GLES2DecoderImpl::HandleReadPixels(uint32 immediate_data_size,
|
| GLuint buffer = 0;
|
| glGenBuffersARB(1, &buffer);
|
| glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, buffer);
|
| - glBufferData(GL_PIXEL_PACK_BUFFER_ARB, pixels_size, NULL, GL_STREAM_READ);
|
| + // For ANGLE client version 2, GL_STREAM_READ is not available.
|
| + const GLenum usage_hint =
|
| + features().is_angle ? GL_STATIC_DRAW : GL_STREAM_READ;
|
| + glBufferData(GL_PIXEL_PACK_BUFFER_ARB, pixels_size, NULL, usage_hint);
|
| GLenum error = glGetError();
|
| if (error == GL_NO_ERROR) {
|
| glReadPixels(x, y, width, height, format, type, 0);
|
|
|