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#include "gpu/command_buffer/service/gl_state_restorer_impl.h" 6 7#include "gpu/command_buffer/service/gles2_cmd_decoder.h" 8 9namespace gpu { 10 11GLStateRestorerImpl::GLStateRestorerImpl( 12 base::WeakPtr<gles2::GLES2Decoder> decoder) 13 : decoder_(decoder) { 14} 15 16GLStateRestorerImpl::~GLStateRestorerImpl() { 17} 18 19bool GLStateRestorerImpl::IsInitialized() { 20 DCHECK(decoder_.get()); 21 return decoder_->initialized(); 22} 23 24void GLStateRestorerImpl::RestoreState(const gfx::GLStateRestorer* prev_state) { 25 DCHECK(decoder_.get()); 26 const GLStateRestorerImpl* restorer_impl = 27 static_cast<const GLStateRestorerImpl*>(prev_state); 28 decoder_->RestoreState( 29 restorer_impl ? restorer_impl->GetContextState() : NULL); 30} 31 32void GLStateRestorerImpl::RestoreAllTextureUnitBindings() { 33 DCHECK(decoder_.get()); 34 decoder_->RestoreAllTextureUnitBindings(NULL); 35} 36 37void GLStateRestorerImpl::RestoreActiveTextureUnitBinding(unsigned int target) { 38 DCHECK(decoder_.get()); 39 decoder_->RestoreActiveTextureUnitBinding(target); 40} 41 42void GLStateRestorerImpl::RestoreFramebufferBindings() { 43 DCHECK(decoder_.get()); 44 decoder_->RestoreFramebufferBindings(); 45} 46 47const gles2::ContextState* GLStateRestorerImpl::GetContextState() const { 48 DCHECK(decoder_.get()); 49 return decoder_->GetContextState(); 50} 51 52} // namespace gpu 53