OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "android_webview/browser/in_process_renderer/in_process_view_renderer.h " | 5 #include "android_webview/browser/in_process_renderer/in_process_view_renderer.h " |
6 | 6 |
7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
8 | 8 |
9 #include "android_webview/public/browser/draw_gl.h" | 9 #include "android_webview/public/browser/draw_gl.h" |
10 #include "android_webview/public/browser/draw_sw.h" | 10 #include "android_webview/public/browser/draw_sw.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 | 44 |
45 namespace android_webview { | 45 namespace android_webview { |
46 | 46 |
47 namespace { | 47 namespace { |
48 | 48 |
49 class GLStateRestore { | 49 class GLStateRestore { |
50 public: | 50 public: |
51 GLStateRestore() { | 51 GLStateRestore() { |
52 glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, | 52 glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, |
53 &texture_external_oes_binding_); | 53 &texture_external_oes_binding_); |
54 glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &vertex_array_buffer_binding_); | |
55 glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, | |
56 &index_array_buffer_binding_); | |
joth
2013/05/28 20:44:05
can we leave this in under !NDEBUG just to keep th
| |
57 glGetIntegerv(GL_PACK_ALIGNMENT, &pack_alignment_); | 54 glGetIntegerv(GL_PACK_ALIGNMENT, &pack_alignment_); |
58 glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpack_alignment_); | 55 glGetIntegerv(GL_UNPACK_ALIGNMENT, &unpack_alignment_); |
59 | 56 |
60 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) { | 57 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) { |
61 glGetVertexAttribiv( | 58 glGetVertexAttribiv( |
62 i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &vertex_attrib_[i].enabled); | 59 i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &vertex_attrib_[i].enabled); |
63 glGetVertexAttribiv( | 60 glGetVertexAttribiv( |
64 i, GL_VERTEX_ATTRIB_ARRAY_SIZE, &vertex_attrib_[i].size); | 61 i, GL_VERTEX_ATTRIB_ARRAY_SIZE, &vertex_attrib_[i].size); |
65 glGetVertexAttribiv( | 62 glGetVertexAttribiv( |
66 i, GL_VERTEX_ATTRIB_ARRAY_TYPE, &vertex_attrib_[i].type); | 63 i, GL_VERTEX_ATTRIB_ARRAY_TYPE, &vertex_attrib_[i].type); |
(...skipping 11 matching lines...) Expand all Loading... | |
78 glGetBooleanv(GL_BLEND, &blend_enabled_); | 75 glGetBooleanv(GL_BLEND, &blend_enabled_); |
79 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); | 76 glGetIntegerv(GL_BLEND_SRC_RGB, &blend_src_rgb_); |
80 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); | 77 glGetIntegerv(GL_BLEND_SRC_ALPHA, &blend_src_alpha_); |
81 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); | 78 glGetIntegerv(GL_BLEND_DST_RGB, &blend_dest_rgb_); |
82 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); | 79 glGetIntegerv(GL_BLEND_DST_ALPHA, &blend_dest_alpha_); |
83 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture_); | 80 glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture_); |
84 glGetIntegerv(GL_VIEWPORT, viewport_); | 81 glGetIntegerv(GL_VIEWPORT, viewport_); |
85 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); | 82 glGetBooleanv(GL_SCISSOR_TEST, &scissor_test_); |
86 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); | 83 glGetIntegerv(GL_SCISSOR_BOX, scissor_box_); |
87 glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_); | 84 glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_); |
88 | |
89 DCHECK_EQ(0, vertex_array_buffer_binding_); | |
90 DCHECK_EQ(0, index_array_buffer_binding_); | |
91 } | 85 } |
92 | 86 |
93 ~GLStateRestore() { | 87 ~GLStateRestore() { |
94 glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_external_oes_binding_); | 88 glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_external_oes_binding_); |
95 glBindBuffer(GL_ARRAY_BUFFER, vertex_array_buffer_binding_); | |
96 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_array_buffer_binding_); | |
97 glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment_); | 89 glPixelStorei(GL_PACK_ALIGNMENT, pack_alignment_); |
98 glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment_); | 90 glPixelStorei(GL_UNPACK_ALIGNMENT, unpack_alignment_); |
99 | 91 |
100 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) { | 92 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(vertex_attrib_); ++i) { |
101 glVertexAttribPointer(i, | 93 glVertexAttribPointer(i, |
102 vertex_attrib_[i].size, | 94 vertex_attrib_[i].size, |
103 vertex_attrib_[i].type, | 95 vertex_attrib_[i].type, |
104 vertex_attrib_[i].normalized, | 96 vertex_attrib_[i].normalized, |
105 vertex_attrib_[i].stride, | 97 vertex_attrib_[i].stride, |
106 vertex_attrib_[i].pointer); | 98 vertex_attrib_[i].pointer); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
141 if (scissor_test_) { | 133 if (scissor_test_) { |
142 glEnable(GL_SCISSOR_TEST); | 134 glEnable(GL_SCISSOR_TEST); |
143 } else { | 135 } else { |
144 glDisable(GL_SCISSOR_TEST); | 136 glDisable(GL_SCISSOR_TEST); |
145 } | 137 } |
146 | 138 |
147 glScissor( | 139 glScissor( |
148 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); | 140 scissor_box_[0], scissor_box_[1], scissor_box_[2], scissor_box_[3]); |
149 | 141 |
150 glUseProgram(current_program_); | 142 glUseProgram(current_program_); |
143 | |
144 glBindBuffer(GL_ARRAY_BUFFER, 0); | |
no sievers
2013/05/28 20:04:04
Interesting, so it's expected that draw functor in
joth
2013/05/28 20:44:05
Today, Framework ensures nothing is bound when we'
| |
145 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); | |
151 } | 146 } |
152 | 147 |
153 private: | 148 private: |
154 GLint texture_external_oes_binding_; | 149 GLint texture_external_oes_binding_; |
155 GLint vertex_array_buffer_binding_; | |
156 GLint index_array_buffer_binding_; | |
157 GLint pack_alignment_; | 150 GLint pack_alignment_; |
158 GLint unpack_alignment_; | 151 GLint unpack_alignment_; |
159 | 152 |
160 struct { | 153 struct { |
161 GLint enabled; | 154 GLint enabled; |
162 GLint size; | 155 GLint size; |
163 GLint type; | 156 GLint type; |
164 GLint normalized; | 157 GLint normalized; |
165 GLint stride; | 158 GLint stride; |
166 GLvoid* pointer; | 159 GLvoid* pointer; |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
580 // TODO(joth): BrowserViewRendererImpl had a bunch of logic for dpi and page | 573 // TODO(joth): BrowserViewRendererImpl had a bunch of logic for dpi and page |
581 // scale here. Determine what if any needs bringing over to this class. | 574 // scale here. Determine what if any needs bringing over to this class. |
582 return CompositeSW(canvas); | 575 return CompositeSW(canvas); |
583 } | 576 } |
584 | 577 |
585 bool InProcessViewRenderer::CompositeSW(SkCanvas* canvas) { | 578 bool InProcessViewRenderer::CompositeSW(SkCanvas* canvas) { |
586 return compositor_ && compositor_->DemandDrawSw(canvas); | 579 return compositor_ && compositor_->DemandDrawSw(canvas); |
587 } | 580 } |
588 | 581 |
589 } // namespace android_webview | 582 } // namespace android_webview |
OLD | NEW |