| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "ui/gl/gl_bindings.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 | 9 |
| 10 namespace gfx { | 10 namespace gfx { |
| 11 class GLContext; | 11 class GLContext; |
| 12 } | 12 } |
| 13 | 13 |
| 14 namespace android_webview { | 14 namespace android_webview { |
| 15 | 15 |
| 16 namespace internal { |
| 17 class ScopedAppGLStateRestoreImpl; |
| 18 } |
| 19 |
| 16 // This class is not thread safe and should only be used on the UI thread. | 20 // This class is not thread safe and should only be used on the UI thread. |
| 17 class ScopedAppGLStateRestore { | 21 class ScopedAppGLStateRestore { |
| 18 public: | 22 public: |
| 19 enum CallMode { | 23 enum CallMode { |
| 20 MODE_DRAW, | 24 MODE_DRAW, |
| 21 MODE_RESOURCE_MANAGEMENT, | 25 MODE_RESOURCE_MANAGEMENT, |
| 22 }; | 26 }; |
| 23 | 27 |
| 24 ScopedAppGLStateRestore(CallMode mode); | 28 ScopedAppGLStateRestore(CallMode mode); |
| 25 ~ScopedAppGLStateRestore(); | 29 ~ScopedAppGLStateRestore(); |
| 26 | 30 |
| 27 bool stencil_enabled() const { return stencil_test_; } | 31 bool stencil_enabled() const; |
| 28 GLint framebuffer_binding_ext() const { return framebuffer_binding_ext_; } | 32 int framebuffer_binding_ext() const; |
| 29 | 33 |
| 30 private: | 34 private: |
| 31 const CallMode mode_; | 35 scoped_ptr<internal::ScopedAppGLStateRestoreImpl> impl_; |
| 32 | |
| 33 GLint pack_alignment_; | |
| 34 GLint unpack_alignment_; | |
| 35 | |
| 36 struct { | |
| 37 GLint enabled; | |
| 38 GLint size; | |
| 39 GLint type; | |
| 40 GLint normalized; | |
| 41 GLint stride; | |
| 42 GLvoid* pointer; | |
| 43 GLint vertex_attrib_array_buffer_binding; | |
| 44 GLfloat current_vertex_attrib[4]; | |
| 45 } vertex_attrib_[3]; | |
| 46 | |
| 47 GLint vertex_array_buffer_binding_; | |
| 48 GLint index_array_buffer_binding_; | |
| 49 | |
| 50 GLboolean depth_test_; | |
| 51 GLboolean cull_face_; | |
| 52 GLint cull_face_mode_; | |
| 53 GLboolean color_mask_[4]; | |
| 54 GLfloat color_clear_[4]; | |
| 55 GLfloat depth_clear_; | |
| 56 GLint current_program_; | |
| 57 GLint depth_func_; | |
| 58 GLboolean depth_mask_; | |
| 59 GLfloat depth_rage_[2]; | |
| 60 GLint front_face_; | |
| 61 GLint hint_generate_mipmap_; | |
| 62 GLfloat line_width_; | |
| 63 GLfloat polygon_offset_factor_; | |
| 64 GLfloat polygon_offset_units_; | |
| 65 GLfloat sample_coverage_value_; | |
| 66 GLboolean sample_coverage_invert_; | |
| 67 | |
| 68 GLboolean enable_dither_; | |
| 69 GLboolean enable_polygon_offset_fill_; | |
| 70 GLboolean enable_sample_alpha_to_coverage_; | |
| 71 GLboolean enable_sample_coverage_; | |
| 72 | |
| 73 // Not saved/restored in MODE_DRAW. | |
| 74 GLboolean blend_enabled_; | |
| 75 GLint blend_src_rgb_; | |
| 76 GLint blend_src_alpha_; | |
| 77 GLint blend_dest_rgb_; | |
| 78 GLint blend_dest_alpha_; | |
| 79 GLint active_texture_; | |
| 80 GLint viewport_[4]; | |
| 81 GLboolean scissor_test_; | |
| 82 GLint scissor_box_[4]; | |
| 83 | |
| 84 GLboolean stencil_test_; | |
| 85 GLint stencil_func_; | |
| 86 GLint stencil_mask_; | |
| 87 GLint stencil_ref_; | |
| 88 | |
| 89 GLint framebuffer_binding_ext_; | |
| 90 | |
| 91 struct TextureBindings { | |
| 92 GLint texture_2d; | |
| 93 GLint texture_cube_map; | |
| 94 GLint texture_external_oes; | |
| 95 // TODO(boliu): TEXTURE_RECTANGLE_ARB | |
| 96 }; | |
| 97 | |
| 98 std::vector<TextureBindings> texture_bindings_; | |
| 99 | |
| 100 GLint vertex_array_bindings_oes_; | |
| 101 | 36 |
| 102 DISALLOW_COPY_AND_ASSIGN(ScopedAppGLStateRestore); | 37 DISALLOW_COPY_AND_ASSIGN(ScopedAppGLStateRestore); |
| 103 }; | 38 }; |
| 104 | 39 |
| 105 } // namespace android_webview | 40 } // namespace android_webview |
| OLD | NEW |