OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ | 5 #ifndef ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ |
6 #define ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ | 6 #define ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ |
7 | 7 |
8 #include <queue> | 8 #include "android_webview/browser/hardware_renderer_interface.h" |
9 | |
10 #include "android_webview/browser/shared_renderer_state.h" | 9 #include "android_webview/browser/shared_renderer_state.h" |
11 #include "base/lazy_instance.h" | 10 #include "base/memory/scoped_ptr.h" |
12 #include "base/memory/ref_counted.h" | 11 #include "cc/layers/delegated_frame_resource_collection.h" |
13 #include "base/threading/thread_local.h" | 12 #include "cc/trees/layer_tree_host_client.h" |
| 13 #include "cc/trees/layer_tree_host_single_thread_client.h" |
14 | 14 |
15 struct AwDrawGLInfo; | 15 struct AwDrawGLInfo; |
16 | 16 |
| 17 namespace cc { |
| 18 class DelegatedFrameProvider; |
| 19 class DelegatedRendererLayer; |
| 20 class Layer; |
| 21 class LayerTreeHost; |
| 22 } |
| 23 |
17 namespace android_webview { | 24 namespace android_webview { |
18 | 25 |
19 class AwGLSurface; | 26 class AwGLSurface; |
20 class BrowserViewRendererClient; | 27 class ParentOutputSurface; |
21 | 28 |
22 namespace internal { | 29 class HardwareRenderer : public HardwareRendererInterface, |
23 class DeferredGpuCommandService; | 30 public cc::LayerTreeHostClient, |
24 } // namespace internal | 31 public cc::LayerTreeHostSingleThreadClient, |
25 | 32 public cc::DelegatedFrameResourceCollectionClient { |
26 class HardwareRenderer { | |
27 public: | 33 public: |
28 explicit HardwareRenderer(SharedRendererState* state); | 34 explicit HardwareRenderer(SharedRendererState* state); |
29 ~HardwareRenderer(); | 35 virtual ~HardwareRenderer(); |
30 | 36 |
31 bool DrawGL(bool stencil_enabled, | 37 // HardwareRendererInterface overrides. |
32 int framebuffer_binding_ext, | 38 virtual bool DrawGL(bool stencil_enabled, |
33 AwDrawGLInfo* draw_info, | 39 int framebuffer_binding_ext, |
34 DrawGLResult* result); | 40 AwDrawGLInfo* draw_info, |
| 41 DrawGLResult* result) OVERRIDE; |
| 42 |
| 43 // cc::LayerTreeHostClient overrides. |
| 44 virtual void WillBeginMainFrame(int frame_id) OVERRIDE {} |
| 45 virtual void DidBeginMainFrame() OVERRIDE; |
| 46 virtual void Animate(base::TimeTicks frame_begin_time) OVERRIDE {} |
| 47 virtual void Layout() OVERRIDE {} |
| 48 virtual void ApplyScrollAndScale(const gfx::Vector2d& scroll_delta, |
| 49 float page_scale) OVERRIDE {} |
| 50 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( |
| 51 bool fallback) OVERRIDE; |
| 52 virtual void DidInitializeOutputSurface() OVERRIDE {} |
| 53 virtual void WillCommit() OVERRIDE {} |
| 54 virtual void DidCommit() OVERRIDE {} |
| 55 virtual void DidCommitAndDrawFrame() OVERRIDE {} |
| 56 virtual void DidCompleteSwapBuffers() OVERRIDE {} |
| 57 |
| 58 // cc::LayerTreeHostSingleThreadClient overrides. |
| 59 virtual void ScheduleComposite() OVERRIDE {} |
| 60 virtual void ScheduleAnimation() OVERRIDE {} |
| 61 virtual void DidPostSwapBuffers() OVERRIDE {} |
| 62 virtual void DidAbortSwapBuffers() OVERRIDE {} |
| 63 |
| 64 // cc::DelegatedFrameResourceCollectionClient overrides. |
| 65 virtual void UnusedResourcesAreAvailable() OVERRIDE; |
35 | 66 |
36 private: | 67 private: |
37 friend class internal::DeferredGpuCommandService; | |
38 | |
39 void SetCompositorMemoryPolicy(); | |
40 | |
41 SharedRendererState* shared_renderer_state_; | 68 SharedRendererState* shared_renderer_state_; |
42 | 69 |
43 typedef void* EGLContext; | 70 typedef void* EGLContext; |
44 EGLContext last_egl_context_; | 71 EGLContext last_egl_context_; |
45 | 72 |
| 73 // Information about last delegated frame. |
| 74 int view_width_; |
| 75 int view_height_; |
| 76 gfx::Vector2d scroll_offset_; |
| 77 |
| 78 // Information from draw. |
| 79 gfx::Size viewport_; |
| 80 gfx::Rect clip_; |
| 81 bool viewport_clip_valid_for_dcheck_; |
| 82 |
46 scoped_refptr<AwGLSurface> gl_surface_; | 83 scoped_refptr<AwGLSurface> gl_surface_; |
47 | 84 |
| 85 scoped_ptr<cc::LayerTreeHost> layer_tree_host_; |
| 86 scoped_refptr<cc::Layer> root_layer_; |
| 87 |
| 88 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection_; |
| 89 scoped_refptr<cc::DelegatedFrameProvider> frame_provider_; |
| 90 scoped_refptr<cc::DelegatedRendererLayer> delegated_layer_; |
| 91 |
| 92 // This is owned indirectly by |layer_tree_host_|. |
| 93 ParentOutputSurface* output_surface_; |
| 94 |
48 DISALLOW_COPY_AND_ASSIGN(HardwareRenderer); | 95 DISALLOW_COPY_AND_ASSIGN(HardwareRenderer); |
49 }; | 96 }; |
50 | 97 |
51 } // namespace android_webview | 98 } // namespace android_webview |
52 | 99 |
53 #endif // ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ | 100 #endif // ANDROID_WEBVIEW_BROWSER_HARDWARE_RENDERER_H_ |
OLD | NEW |