Send compressed histograms with system logs when sending feedback.
[chromium-blink-merge.git] / android_webview / browser / scoped_app_gl_state_restore.h
bloba6e1b93e2884027ee22640c2282ef37f2cb2456f
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.
5 #include <vector>
7 #include "base/basictypes.h"
8 #include "ui/gl/gl_bindings.h"
10 namespace gfx {
11 class GLContext;
14 namespace android_webview {
16 // This class is not thread safe and should only be used on the UI thread.
17 class ScopedAppGLStateRestore {
18 public:
19 enum CallMode {
20 MODE_DRAW,
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_; }
30 private:
31 const CallMode mode_;
33 GLint pack_alignment_;
34 GLint unpack_alignment_;
36 struct {
37 GLint enabled;
38 GLint size;
39 GLint type;
40 GLint normalized;
41 GLint stride;
42 GLvoid* pointer;
43 } vertex_attrib_[3];
45 GLint vertex_array_buffer_binding_;
46 GLint index_array_buffer_binding_;
48 GLboolean depth_test_;
49 GLboolean cull_face_;
50 GLint cull_face_mode_;
51 GLboolean color_mask_[4];
52 GLfloat color_clear_[4];
53 GLfloat depth_clear_;
54 GLint current_program_;
55 GLint depth_func_;
56 GLboolean depth_mask_;
57 GLfloat depth_rage_[2];
58 GLint front_face_;
59 GLint hint_generate_mipmap_;
60 GLfloat line_width_;
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_;
73 GLint blend_src_rgb_;
74 GLint blend_src_alpha_;
75 GLint blend_dest_rgb_;
76 GLint blend_dest_alpha_;
77 GLint active_texture_;
78 GLint viewport_[4];
79 GLboolean scissor_test_;
80 GLint scissor_box_[4];
82 GLboolean stencil_test_;
83 GLint stencil_func_;
84 GLint stencil_mask_;
85 GLint stencil_ref_;
87 GLint framebuffer_binding_ext_;
89 struct TextureBindings {
90 GLint texture_2d;
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