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