OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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 "cc/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "cc/resources/layer_quad.h" | 33 #include "cc/resources/layer_quad.h" |
34 #include "cc/resources/scoped_resource.h" | 34 #include "cc/resources/scoped_resource.h" |
35 #include "cc/resources/texture_mailbox_deleter.h" | 35 #include "cc/resources/texture_mailbox_deleter.h" |
36 #include "cc/trees/damage_tracker.h" | 36 #include "cc/trees/damage_tracker.h" |
37 #include "cc/trees/proxy.h" | 37 #include "cc/trees/proxy.h" |
38 #include "cc/trees/single_thread_proxy.h" | 38 #include "cc/trees/single_thread_proxy.h" |
39 #include "gpu/GLES2/gl2extchromium.h" | 39 #include "gpu/GLES2/gl2extchromium.h" |
40 #include "gpu/command_buffer/client/context_support.h" | 40 #include "gpu/command_buffer/client/context_support.h" |
41 #include "gpu/command_buffer/client/gles2_interface.h" | 41 #include "gpu/command_buffer/client/gles2_interface.h" |
42 #include "gpu/command_buffer/common/gpu_memory_allocation.h" | 42 #include "gpu/command_buffer/common/gpu_memory_allocation.h" |
43 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" | |
44 #include "third_party/khronos/GLES2/gl2.h" | 43 #include "third_party/khronos/GLES2/gl2.h" |
45 #include "third_party/khronos/GLES2/gl2ext.h" | 44 #include "third_party/khronos/GLES2/gl2ext.h" |
46 #include "third_party/skia/include/core/SkBitmap.h" | 45 #include "third_party/skia/include/core/SkBitmap.h" |
47 #include "third_party/skia/include/core/SkColor.h" | 46 #include "third_party/skia/include/core/SkColor.h" |
48 #include "third_party/skia/include/core/SkColorFilter.h" | 47 #include "third_party/skia/include/core/SkColorFilter.h" |
49 #include "third_party/skia/include/core/SkSurface.h" | 48 #include "third_party/skia/include/core/SkSurface.h" |
50 #include "third_party/skia/include/gpu/GrContext.h" | 49 #include "third_party/skia/include/gpu/GrContext.h" |
51 #include "third_party/skia/include/gpu/GrTexture.h" | 50 #include "third_party/skia/include/gpu/GrTexture.h" |
52 #include "third_party/skia/include/gpu/SkGpuDevice.h" | 51 #include "third_party/skia/include/gpu/SkGpuDevice.h" |
53 #include "third_party/skia/include/gpu/SkGrTexturePixelRef.h" | 52 #include "third_party/skia/include/gpu/SkGrTexturePixelRef.h" |
54 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" | 53 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" |
55 #include "ui/gfx/quad_f.h" | 54 #include "ui/gfx/quad_f.h" |
56 #include "ui/gfx/rect_conversions.h" | 55 #include "ui/gfx/rect_conversions.h" |
57 | 56 |
58 using blink::WebGraphicsContext3D; | |
59 using gpu::gles2::GLES2Interface; | 57 using gpu::gles2::GLES2Interface; |
60 | 58 |
61 namespace cc { | 59 namespace cc { |
62 | 60 |
63 namespace { | 61 namespace { |
64 | 62 |
65 // TODO(epenner): This should probably be moved to output surface. | 63 // TODO(epenner): This should probably be moved to output surface. |
66 // | 64 // |
67 // This implements a simple fence based on client side swaps. | 65 // This implements a simple fence based on client side swaps. |
68 // This is to isolate the ResourceProvider from 'frames' which | 66 // This is to isolate the ResourceProvider from 'frames' which |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 | 157 |
160 GLRenderer::GLRenderer(RendererClient* client, | 158 GLRenderer::GLRenderer(RendererClient* client, |
161 const LayerTreeSettings* settings, | 159 const LayerTreeSettings* settings, |
162 OutputSurface* output_surface, | 160 OutputSurface* output_surface, |
163 ResourceProvider* resource_provider, | 161 ResourceProvider* resource_provider, |
164 TextureMailboxDeleter* texture_mailbox_deleter, | 162 TextureMailboxDeleter* texture_mailbox_deleter, |
165 int highp_threshold_min) | 163 int highp_threshold_min) |
166 : DirectRenderer(client, settings, output_surface, resource_provider), | 164 : DirectRenderer(client, settings, output_surface, resource_provider), |
167 offscreen_framebuffer_id_(0), | 165 offscreen_framebuffer_id_(0), |
168 shared_geometry_quad_(gfx::RectF(-0.5f, -0.5f, 1.0f, 1.0f)), | 166 shared_geometry_quad_(gfx::RectF(-0.5f, -0.5f, 1.0f, 1.0f)), |
169 context_(output_surface->context_provider()->Context3d()), | |
170 gl_(output_surface->context_provider()->ContextGL()), | 167 gl_(output_surface->context_provider()->ContextGL()), |
171 context_support_(output_surface->context_provider()->ContextSupport()), | 168 context_support_(output_surface->context_provider()->ContextSupport()), |
172 texture_mailbox_deleter_(texture_mailbox_deleter), | 169 texture_mailbox_deleter_(texture_mailbox_deleter), |
173 is_backbuffer_discarded_(false), | 170 is_backbuffer_discarded_(false), |
174 visible_(true), | 171 visible_(true), |
175 is_scissor_enabled_(false), | 172 is_scissor_enabled_(false), |
176 scissor_rect_needs_reset_(true), | 173 scissor_rect_needs_reset_(true), |
177 stencil_shadow_(false), | 174 stencil_shadow_(false), |
178 blend_shadow_(false), | 175 blend_shadow_(false), |
179 highp_threshold_min_(highp_threshold_min), | 176 highp_threshold_min_(highp_threshold_min), |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 pending_async_read_pixels_.pop_back(); | 216 pending_async_read_pixels_.pop_back(); |
220 } | 217 } |
221 | 218 |
222 CleanupSharedObjects(); | 219 CleanupSharedObjects(); |
223 } | 220 } |
224 | 221 |
225 const RendererCapabilities& GLRenderer::Capabilities() const { | 222 const RendererCapabilities& GLRenderer::Capabilities() const { |
226 return capabilities_; | 223 return capabilities_; |
227 } | 224 } |
228 | 225 |
229 WebGraphicsContext3D* GLRenderer::Context() { return context_; } | |
230 | |
231 void GLRenderer::DebugGLCall(GLES2Interface* gl, | 226 void GLRenderer::DebugGLCall(GLES2Interface* gl, |
232 const char* command, | 227 const char* command, |
233 const char* file, | 228 const char* file, |
234 int line) { | 229 int line) { |
235 GLuint error = gl->GetError(); | 230 GLuint error = gl->GetError(); |
236 if (error != GL_NO_ERROR) | 231 if (error != GL_NO_ERROR) |
237 LOG(ERROR) << "GL command failed: File: " << file << "\n\tLine " << line | 232 LOG(ERROR) << "GL command failed: File: " << file << "\n\tLine " << line |
238 << "\n\tcommand: " << command << ", error " | 233 << "\n\tcommand: " << command << ", error " |
239 << static_cast<int>(error) << "\n"; | 234 << static_cast<int>(error) << "\n"; |
240 } | 235 } |
(...skipping 2767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3008 is_scissor_enabled_ = false; | 3003 is_scissor_enabled_ = false; |
3009 GLC(gl_, gl_->Disable(GL_SCISSOR_TEST)); | 3004 GLC(gl_, gl_->Disable(GL_SCISSOR_TEST)); |
3010 scissor_rect_needs_reset_ = true; | 3005 scissor_rect_needs_reset_ = true; |
3011 } | 3006 } |
3012 | 3007 |
3013 bool GLRenderer::IsContextLost() { | 3008 bool GLRenderer::IsContextLost() { |
3014 return output_surface_->context_provider()->IsContextLost(); | 3009 return output_surface_->context_provider()->IsContextLost(); |
3015 } | 3010 } |
3016 | 3011 |
3017 } // namespace cc | 3012 } // namespace cc |
OLD | NEW |