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.
5 #include "gpu/command_buffer/service/gl_state_restorer_impl.h"
7 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
11 GLStateRestorerImpl::GLStateRestorerImpl(
12 base::WeakPtr
<gles2::GLES2Decoder
> decoder
)
16 GLStateRestorerImpl::~GLStateRestorerImpl() {
19 bool GLStateRestorerImpl::IsInitialized() {
20 DCHECK(decoder_
.get());
21 return decoder_
->initialized();
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
);
32 void GLStateRestorerImpl::RestoreAllTextureUnitBindings() {
33 DCHECK(decoder_
.get());
34 decoder_
->RestoreAllTextureUnitBindings(NULL
);
37 void GLStateRestorerImpl::RestoreActiveTextureUnitBinding(unsigned int target
) {
38 DCHECK(decoder_
.get());
39 decoder_
->RestoreActiveTextureUnitBinding(target
);
42 void GLStateRestorerImpl::RestoreFramebufferBindings() {
43 DCHECK(decoder_
.get());
44 decoder_
->RestoreFramebufferBindings();
47 const gles2::ContextState
* GLStateRestorerImpl::GetContextState() const {
48 DCHECK(decoder_
.get());
49 return decoder_
->GetContextState();