Home | History | Annotate | Download | only in service
      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