| 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 231ea24c4e6ed6ef728fca56c98f0bf42eda0cf5..58f5698424b293a2df717f45ff940fbd89185285 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
|
| @@ -546,13 +546,14 @@ class GLES2DecoderImpl : public GLES2Decoder,
|
| virtual gfx::GLContext* GetGLContext() OVERRIDE { return context_.get(); }
|
| virtual ContextGroup* GetContextGroup() OVERRIDE { return group_.get(); }
|
| virtual Capabilities GetCapabilities() OVERRIDE;
|
| - virtual void RestoreState() const OVERRIDE;
|
| + virtual void RestoreState(const ContextState* prev_state) const OVERRIDE;
|
|
|
| virtual void RestoreActiveTexture() const OVERRIDE {
|
| state_.RestoreActiveTexture();
|
| }
|
| - virtual void RestoreAllTextureUnitBindings() const OVERRIDE {
|
| - state_.RestoreAllTextureUnitBindings();
|
| + virtual void RestoreAllTextureUnitBindings(
|
| + const ContextState* prev_state) const OVERRIDE {
|
| + state_.RestoreAllTextureUnitBindings(prev_state);
|
| }
|
| virtual void RestoreAttribute(unsigned index) const OVERRIDE {
|
| state_.RestoreAttribute(index);
|
| @@ -570,7 +571,7 @@ class GLES2DecoderImpl : public GLES2Decoder,
|
| state_.RestoreRenderbufferBindings();
|
| }
|
| virtual void RestoreTextureUnitBindings(unsigned unit) const OVERRIDE {
|
| - state_.RestoreTextureUnitBindings(unit);
|
| + state_.RestoreTextureUnitBindings(unit, NULL);
|
| }
|
| virtual void RestoreFramebufferBindings() const OVERRIDE;
|
| virtual void RestoreTextureState(unsigned service_id) const OVERRIDE;
|
| @@ -592,6 +593,7 @@ class GLES2DecoderImpl : public GLES2Decoder,
|
|
|
| virtual Logger* GetLogger() OVERRIDE;
|
| virtual ErrorState* GetErrorState() OVERRIDE;
|
| + virtual const ContextState* GetContextState() OVERRIDE { return &state_; }
|
|
|
| virtual void SetShaderCacheCallback(
|
| const ShaderCacheCallback& callback) OVERRIDE;
|
| @@ -3756,14 +3758,14 @@ GLuint GLES2DecoderImpl::GetBackbufferServiceId() const {
|
| : (surface_.get() ? surface_->GetBackingFrameBufferObject() : 0);
|
| }
|
|
|
| -void GLES2DecoderImpl::RestoreState() const {
|
| +void GLES2DecoderImpl::RestoreState(const ContextState* prev_state) const {
|
| TRACE_EVENT1("gpu", "GLES2DecoderImpl::RestoreState",
|
| "context", logger_.GetLogPrefix());
|
| // Restore the Framebuffer first because of bugs in Intel drivers.
|
| // Intel drivers incorrectly clip the viewport settings to
|
| // the size of the current framebuffer object.
|
| RestoreFramebufferBindings();
|
| - state_.RestoreState();
|
| + state_.RestoreState(prev_state);
|
| }
|
|
|
| void GLES2DecoderImpl::RestoreFramebufferBindings() const {
|
|
|