1 // Copyright 2013 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.
7 #include "base/basictypes.h"
8 #include "ui/gl/gl_bindings.h"
14 namespace android_webview {
16 // This class is not thread safe and should only be used on the UI thread.
17 class ScopedAppGLStateRestore {
21 MODE_RESOURCE_MANAGEMENT,
24 ScopedAppGLStateRestore(CallMode mode);
25 ~ScopedAppGLStateRestore();
27 bool stencil_enabled() const { return stencil_test_; }
28 GLint framebuffer_binding_ext() const { return framebuffer_binding_ext_; }
33 GLint pack_alignment_;
34 GLint unpack_alignment_;
45 GLint vertex_array_buffer_binding_;
46 GLint index_array_buffer_binding_;
48 GLboolean depth_test_;
50 GLint cull_face_mode_;
51 GLboolean color_mask_[4];
52 GLfloat color_clear_[4];
54 GLint current_program_;
56 GLboolean depth_mask_;
57 GLfloat depth_rage_[2];
59 GLint hint_generate_mipmap_;
61 GLfloat polygon_offset_factor_;
62 GLfloat polygon_offset_units_;
63 GLfloat sample_coverage_value_;
64 GLboolean sample_coverage_invert_;
66 GLboolean enable_dither_;
67 GLboolean enable_polygon_offset_fill_;
68 GLboolean enable_sample_alpha_to_coverage_;
69 GLboolean enable_sample_coverage_;
71 // Not saved/restored in MODE_DRAW.
72 GLboolean blend_enabled_;
74 GLint blend_src_alpha_;
75 GLint blend_dest_rgb_;
76 GLint blend_dest_alpha_;
77 GLint active_texture_;
79 GLboolean scissor_test_;
80 GLint scissor_box_[4];
82 GLboolean stencil_test_;
87 GLint framebuffer_binding_ext_;
89 struct TextureBindings {
91 GLint texture_cube_map;
92 GLint texture_external_oes;
93 // TODO(boliu): TEXTURE_RECTANGLE_ARB
96 std::vector<TextureBindings> texture_bindings_;
98 DISALLOW_COPY_AND_ASSIGN(ScopedAppGLStateRestore);
101 } // namespace android_webview