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() |