Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(309)

Side by Side Diff: content/renderer/android/synchronous_compositor_proxy.h

Issue 1541203003: IPC-based sync compositor software draw optimization (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bring back zero-ing Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ 5 #ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
6 #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ 6 #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "content/common/input/input_event_ack_state.h" 9 #include "content/common/input/input_event_ack_state.h"
10 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s ource.h" 10 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s ource.h"
(...skipping 16 matching lines...) Expand all
27 class CompositorFrame; 27 class CompositorFrame;
28 } // namespace cc 28 } // namespace cc
29 29
30 namespace content { 30 namespace content {
31 31
32 class SynchronousCompositorOutputSurface; 32 class SynchronousCompositorOutputSurface;
33 struct SyncCompositorCommonBrowserParams; 33 struct SyncCompositorCommonBrowserParams;
34 struct SyncCompositorCommonRendererParams; 34 struct SyncCompositorCommonRendererParams;
35 struct SyncCompositorDemandDrawHwParams; 35 struct SyncCompositorDemandDrawHwParams;
36 struct SyncCompositorDemandDrawSwParams; 36 struct SyncCompositorDemandDrawSwParams;
37 struct SyncCompositorSetSharedMemoryParams;
37 38
38 class SynchronousCompositorProxy 39 class SynchronousCompositorProxy
39 : public ui::SynchronousInputHandler, 40 : public ui::SynchronousInputHandler,
40 public SynchronousCompositorExternalBeginFrameSourceClient, 41 public SynchronousCompositorExternalBeginFrameSourceClient,
41 public SynchronousCompositorOutputSurfaceClient { 42 public SynchronousCompositorOutputSurfaceClient {
42 public: 43 public:
43 SynchronousCompositorProxy( 44 SynchronousCompositorProxy(
44 int routing_id, 45 int routing_id,
45 IPC::Sender* sender, 46 IPC::Sender* sender,
46 SynchronousCompositorOutputSurface* output_surface, 47 SynchronousCompositorOutputSurface* output_surface,
(...skipping 15 matching lines...) Expand all
62 void OnNeedsBeginFramesChange(bool needs_begin_frames) override; 63 void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
63 64
64 // SynchronousCompositorOutputSurfaceClient overrides. 65 // SynchronousCompositorOutputSurfaceClient overrides.
65 void Invalidate() override; 66 void Invalidate() override;
66 67
67 void OnMessageReceived(const IPC::Message& message); 68 void OnMessageReceived(const IPC::Message& message);
68 bool Send(IPC::Message* message); 69 bool Send(IPC::Message* message);
69 void DidOverscroll(const DidOverscrollParams& did_overscroll_params); 70 void DidOverscroll(const DidOverscrollParams& did_overscroll_params);
70 71
71 private: 72 private:
73 struct SharedMemoryWithSize;
74
72 void ProcessCommonParams( 75 void ProcessCommonParams(
73 const SyncCompositorCommonBrowserParams& common_params); 76 const SyncCompositorCommonBrowserParams& common_params);
74 void PopulateCommonParams(SyncCompositorCommonRendererParams* params); 77 void PopulateCommonParams(SyncCompositorCommonRendererParams* params);
75 78
76 // IPC handlers. 79 // IPC handlers.
77 void HandleInputEvent( 80 void HandleInputEvent(
78 const SyncCompositorCommonBrowserParams& common_params, 81 const SyncCompositorCommonBrowserParams& common_params,
79 const blink::WebInputEvent* event, 82 const blink::WebInputEvent* event,
80 SyncCompositorCommonRendererParams* common_renderer_params, 83 SyncCompositorCommonRendererParams* common_renderer_params,
81 InputEventAckState* ack); 84 InputEventAckState* ack);
82 void BeginFrame(const SyncCompositorCommonBrowserParams& common_params, 85 void BeginFrame(const SyncCompositorCommonBrowserParams& common_params,
83 const cc::BeginFrameArgs& args, 86 const cc::BeginFrameArgs& args,
84 SyncCompositorCommonRendererParams* common_renderer_params); 87 SyncCompositorCommonRendererParams* common_renderer_params);
85 void OnComputeScroll( 88 void OnComputeScroll(
86 const SyncCompositorCommonBrowserParams& common_params, 89 const SyncCompositorCommonBrowserParams& common_params,
87 base::TimeTicks animation_time, 90 base::TimeTicks animation_time,
88 SyncCompositorCommonRendererParams* common_renderer_params); 91 SyncCompositorCommonRendererParams* common_renderer_params);
89 void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params, 92 void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params,
90 const SyncCompositorDemandDrawHwParams& params, 93 const SyncCompositorDemandDrawHwParams& params,
91 SyncCompositorCommonRendererParams* common_renderer_params, 94 SyncCompositorCommonRendererParams* common_renderer_params,
92 cc::CompositorFrame* frame); 95 cc::CompositorFrame* frame);
96 void SetSharedMemory(
97 const SyncCompositorCommonBrowserParams& common_params,
98 const SyncCompositorSetSharedMemoryParams& params,
99 bool* success,
100 SyncCompositorCommonRendererParams* common_renderer_params);
101 void ZeroSharedMemory();
93 void DemandDrawSw(const SyncCompositorCommonBrowserParams& common_params, 102 void DemandDrawSw(const SyncCompositorCommonBrowserParams& common_params,
94 const SyncCompositorDemandDrawSwParams& params, 103 const SyncCompositorDemandDrawSwParams& params,
95 bool* result, 104 bool* result,
96 SyncCompositorCommonRendererParams* common_renderer_params, 105 SyncCompositorCommonRendererParams* common_renderer_params,
97 cc::CompositorFrame* frame); 106 cc::CompositorFrame* frame);
98 107
99 void DidActivatePendingTree(); 108 void DidActivatePendingTree();
100 void DeliverMessages(); 109 void DeliverMessages();
101 void SendAsyncRendererStateIfNeeded(); 110 void SendAsyncRendererStateIfNeeded();
102 111
103 const int routing_id_; 112 const int routing_id_;
104 IPC::Sender* const sender_; 113 IPC::Sender* const sender_;
105 SynchronousCompositorOutputSurface* const output_surface_; 114 SynchronousCompositorOutputSurface* const output_surface_;
106 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_; 115 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_;
107 ui::SynchronousInputHandlerProxy* const input_handler_proxy_; 116 ui::SynchronousInputHandlerProxy* const input_handler_proxy_;
108 InputHandlerManagerClient::Handler* const input_handler_; 117 InputHandlerManagerClient::Handler* const input_handler_;
109 bool inside_receive_; 118 bool inside_receive_;
110 119
111 // From browser. 120 // From browser.
112 size_t bytes_limit_; 121 size_t bytes_limit_;
122 scoped_ptr<SharedMemoryWithSize> software_draw_shm_;
113 123
124 // To browser.
114 uint32_t version_; 125 uint32_t version_;
115 gfx::ScrollOffset total_scroll_offset_; // Modified by both. 126 gfx::ScrollOffset total_scroll_offset_; // Modified by both.
116 gfx::ScrollOffset max_scroll_offset_; 127 gfx::ScrollOffset max_scroll_offset_;
117 gfx::SizeF scrollable_size_; 128 gfx::SizeF scrollable_size_;
118 float page_scale_factor_; 129 float page_scale_factor_;
119 float min_page_scale_factor_; 130 float min_page_scale_factor_;
120 float max_page_scale_factor_; 131 float max_page_scale_factor_;
121 bool need_animate_scroll_; 132 bool need_animate_scroll_;
122 bool need_invalidate_; 133 bool need_invalidate_;
123 bool need_begin_frame_; 134 bool need_begin_frame_;
124 bool did_activate_pending_tree_; 135 bool did_activate_pending_tree_;
125 136
126 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy); 137 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy);
127 }; 138 };
128 139
129 } // namespace content 140 } // namespace content
130 141
131 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ 142 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698