1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This file contains the GLStateRestorerImpl class. 6 7#ifndef GPU_COMMAND_BUFFER_SERVICE_GL_STATE_RESTORER_IMPL_H_ 8#define GPU_COMMAND_BUFFER_SERVICE_GL_STATE_RESTORER_IMPL_H_ 9 10#include "base/compiler_specific.h" 11#include "base/memory/weak_ptr.h" 12#include "gpu/gpu_export.h" 13#include "ui/gl/gl_state_restorer.h" 14 15namespace gpu { 16namespace gles2 { 17class GLES2Decoder; 18struct ContextState; 19} 20 21// This class implements a GLStateRestorer that forwards to a GLES2Decoder. 22class GPU_EXPORT GLStateRestorerImpl : public gfx::GLStateRestorer { 23 public: 24 explicit GLStateRestorerImpl(base::WeakPtr<gles2::GLES2Decoder> decoder); 25 virtual ~GLStateRestorerImpl(); 26 27 virtual bool IsInitialized() OVERRIDE; 28 virtual void RestoreState(const gfx::GLStateRestorer* prev_state) OVERRIDE; 29 virtual void RestoreAllTextureUnitBindings() OVERRIDE; 30 virtual void RestoreActiveTextureUnitBinding(unsigned int target) OVERRIDE; 31 virtual void RestoreFramebufferBindings() OVERRIDE; 32 33 private: 34 const gles2::ContextState* GetContextState() const; 35 base::WeakPtr<gles2::GLES2Decoder> decoder_; 36 37 DISALLOW_COPY_AND_ASSIGN(GLStateRestorerImpl); 38}; 39 40} // namespace gpu 41 42#endif // GPU_COMMAND_BUFFER_SERVICE_GL_STATE_RESTORER_IMPL_H_ 43