blob: c132ef8ac7a8502ec04edfc42173feecb43d25fa [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "gpu/command_buffer/service/gl_state_restorer_impl.h"
#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
#include "gpu/command_buffer/service/query_manager.h"
namespace gpu {
GLStateRestorerImpl::GLStateRestorerImpl(
base::WeakPtr<gles2::GLES2Decoder> decoder)
: decoder_(decoder) {
}
GLStateRestorerImpl::~GLStateRestorerImpl() {
}
bool GLStateRestorerImpl::IsInitialized() {
DCHECK(decoder_.get());
return decoder_->initialized();
}
void GLStateRestorerImpl::RestoreState(const gfx::GLStateRestorer* prev_state) {
DCHECK(decoder_.get());
const GLStateRestorerImpl* restorer_impl =
static_cast<const GLStateRestorerImpl*>(prev_state);
decoder_->RestoreState(
restorer_impl ? restorer_impl->GetContextState() : NULL);
}
void GLStateRestorerImpl::RestoreAllTextureUnitBindings() {
DCHECK(decoder_.get());
decoder_->RestoreAllTextureUnitBindings(NULL);
}
void GLStateRestorerImpl::RestoreActiveTextureUnitBinding(unsigned int target) {
DCHECK(decoder_.get());
decoder_->RestoreActiveTextureUnitBinding(target);
}
void GLStateRestorerImpl::RestoreFramebufferBindings() {
DCHECK(decoder_.get());
decoder_->RestoreFramebufferBindings();
}
void GLStateRestorerImpl::PauseQueries() {
DCHECK(decoder_.get());
decoder_->GetQueryManager()->PauseQueries();
}
void GLStateRestorerImpl::ResumeQueries() {
DCHECK(decoder_.get());
decoder_->GetQueryManager()->ResumeQueries();
}
const gles2::ContextState* GLStateRestorerImpl::GetContextState() const {
DCHECK(decoder_.get());
return decoder_->GetContextState();
}
} // namespace gpu