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 9 namespace gpu { 10 11 GLStateRestorerImpl::GLStateRestorerImpl( 12 base::WeakPtr<gles2::GLES2Decoder> decoder) 13 : decoder_(decoder) { 14 } 15 16 GLStateRestorerImpl::~GLStateRestorerImpl() { 17 } 18 19 bool GLStateRestorerImpl::IsInitialized() { 20 DCHECK(decoder_.get()); 21 return decoder_->initialized(); 22 } 23 24 void 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 32 void GLStateRestorerImpl::RestoreAllTextureUnitBindings() { 33 DCHECK(decoder_.get()); 34 decoder_->RestoreAllTextureUnitBindings(NULL); 35 } 36 37 void GLStateRestorerImpl::RestoreActiveTextureUnitBinding(unsigned int target) { 38 DCHECK(decoder_.get()); 39 decoder_->RestoreActiveTextureUnitBinding(target); 40 } 41 42 void GLStateRestorerImpl::RestoreFramebufferBindings() { 43 DCHECK(decoder_.get()); 44 decoder_->RestoreFramebufferBindings(); 45 } 46 47 const gles2::ContextState* GLStateRestorerImpl::GetContextState() const { 48 DCHECK(decoder_.get()); 49 return decoder_->GetContextState(); 50 } 51 52 } // namespace gpu 53