Chromium Code Reviews| 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 496068d0bc88846a638199415e4c4ef24c495176..064772e6b48e7fc94d66c020e7a1e01cd8ebc341 100644 |
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc |
| @@ -547,9 +547,6 @@ class GLES2DecoderImpl : public GLES2Decoder, public ErrorStateClient { |
| void RestoreActiveTextureUnitBinding(unsigned int target) const override { |
| state_.RestoreActiveTextureUnitBinding(target); |
| } |
| - void RestoreBufferBinding(unsigned int target) const override { |
| - state_.RestoreBufferBinding(target); |
| - } |
| void RestoreBufferBindings() const override { |
| state_.RestoreBufferBindings(); |
| } |
| @@ -563,6 +560,7 @@ class GLES2DecoderImpl : public GLES2Decoder, public ErrorStateClient { |
| void RestoreVertexAttribArray(unsigned index) override { |
| RestoreStateForAttrib(index, true); |
| } |
| + void RestoreBufferBinding(unsigned int target) override; |
| void RestoreFramebufferBindings() const override; |
| void RestoreRenderbufferBindings() override; |
| void RestoreTextureState(unsigned service_id) const override; |
| @@ -5600,6 +5598,21 @@ void GLES2DecoderImpl::RestoreState(const ContextState* prev_state) { |
| state_.RestoreState(prev_state); |
| } |
| +void GLES2DecoderImpl::RestoreBufferBinding(unsigned int target) { |
| + Buffer* bound_buffer = |
| + buffer_manager()->GetBufferInfoForTarget(&state_, target); |
| + if (target == GL_PIXEL_PACK_BUFFER) { |
| + glPixelStorei(GL_PACK_ROW_LENGTH, |
|
piman
2017/04/04 17:48:43
We should only do these if we're on an ES3 context
Chandan
2017/04/04 18:18:45
Thanks. As I see, these two methods are private.
piman
2017/04/04 19:59:14
Alternatively, move this code to ContextState.
Chandan
2017/04/05 11:23:52
The idea was to reuse BufferManager::GetBufferInfo
|
| + bound_buffer ? state_.pack_row_length : 0); |
| + } else if (target == GL_PIXEL_UNPACK_BUFFER) { |
| + glPixelStorei(GL_UNPACK_ROW_LENGTH, |
| + bound_buffer ? state_.unpack_row_length : 0); |
| + glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, |
| + bound_buffer ? state_.unpack_image_height : 0); |
| + } |
| + glBindBuffer(target, bound_buffer ? bound_buffer->service_id() : 0); |
| +} |
| + |
| void GLES2DecoderImpl::RestoreFramebufferBindings() const { |
| GLuint service_id = |
| framebuffer_state_.bound_draw_framebuffer.get() |