OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/direct_renderer.h" | 5 #include "cc/output/direct_renderer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <unordered_map> | 9 #include <unordered_map> |
10 #include <utility> | 10 #include <utility> |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 const DrawingFrame* frame, | 121 const DrawingFrame* frame, |
122 const gfx::Rect& draw_rect) const { | 122 const gfx::Rect& draw_rect) const { |
123 gfx::Rect window_rect = draw_rect; | 123 gfx::Rect window_rect = draw_rect; |
124 window_rect -= current_draw_rect_.OffsetFromOrigin(); | 124 window_rect -= current_draw_rect_.OffsetFromOrigin(); |
125 window_rect += current_viewport_rect_.OffsetFromOrigin(); | 125 window_rect += current_viewport_rect_.OffsetFromOrigin(); |
126 if (FlippedFramebuffer(frame)) | 126 if (FlippedFramebuffer(frame)) |
127 window_rect.set_y(current_surface_size_.height() - window_rect.bottom()); | 127 window_rect.set_y(current_surface_size_.height() - window_rect.bottom()); |
128 return window_rect; | 128 return window_rect; |
129 } | 129 } |
130 | 130 |
131 DirectRenderer::DirectRenderer(RendererClient* client, | 131 DirectRenderer::DirectRenderer(DirectRendererClient* client, |
132 const RendererSettings* settings, | 132 const RendererSettings* settings, |
133 OutputSurface* output_surface, | 133 OutputSurface* output_surface, |
134 ResourceProvider* resource_provider) | 134 ResourceProvider* resource_provider) |
135 : Renderer(client, settings), | 135 : client_(client), |
| 136 settings_(settings), |
136 output_surface_(output_surface), | 137 output_surface_(output_surface), |
137 resource_provider_(resource_provider), | 138 resource_provider_(resource_provider), |
138 overlay_processor_(new OverlayProcessor(output_surface)) { | 139 overlay_processor_(new OverlayProcessor(output_surface)) { |
139 overlay_processor_->Initialize(); | 140 overlay_processor_->Initialize(); |
140 } | 141 } |
141 | 142 |
142 DirectRenderer::~DirectRenderer() {} | 143 DirectRenderer::~DirectRenderer() = default; |
143 | 144 |
144 const TileDrawQuad* DirectRenderer::CanPassBeDrawnDirectly( | 145 const TileDrawQuad* DirectRenderer::CanPassBeDrawnDirectly( |
145 const RenderPass* pass) { | 146 const RenderPass* pass) { |
146 return nullptr; | 147 return nullptr; |
147 } | 148 } |
148 | 149 |
149 void DirectRenderer::DecideRenderPassAllocationsForFrame( | 150 void DirectRenderer::DecideRenderPassAllocationsForFrame( |
150 const RenderPassList& render_passes_in_draw_order) { | 151 const RenderPassList& render_passes_in_draw_order) { |
151 render_pass_bypass_quads_.clear(); | 152 render_pass_bypass_quads_.clear(); |
152 | 153 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 | 212 |
212 DrawingFrame frame; | 213 DrawingFrame frame; |
213 frame.render_passes_in_draw_order = render_passes_in_draw_order; | 214 frame.render_passes_in_draw_order = render_passes_in_draw_order; |
214 frame.root_render_pass = root_render_pass; | 215 frame.root_render_pass = root_render_pass; |
215 frame.root_damage_rect = root_render_pass->damage_rect; | 216 frame.root_damage_rect = root_render_pass->damage_rect; |
216 frame.root_damage_rect.Union(overlay_processor_->GetAndResetOverlayDamage()); | 217 frame.root_damage_rect.Union(overlay_processor_->GetAndResetOverlayDamage()); |
217 frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size())); | 218 frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size())); |
218 frame.device_viewport_rect = device_viewport_rect; | 219 frame.device_viewport_rect = device_viewport_rect; |
219 frame.device_clip_rect = device_clip_rect; | 220 frame.device_clip_rect = device_clip_rect; |
220 | 221 |
221 EnsureBackbuffer(); | |
222 | |
223 // Only reshape when we know we are going to draw. Otherwise, the reshape | 222 // Only reshape when we know we are going to draw. Otherwise, the reshape |
224 // can leave the window at the wrong size if we never draw and the proper | 223 // can leave the window at the wrong size if we never draw and the proper |
225 // viewport size is never set. | 224 // viewport size is never set. |
226 output_surface_->Reshape(device_viewport_rect.size(), device_scale_factor, | 225 output_surface_->Reshape(device_viewport_rect.size(), device_scale_factor, |
227 device_color_space, | 226 device_color_space, |
228 frame.root_render_pass->has_transparent_background); | 227 frame.root_render_pass->has_transparent_background); |
229 | 228 |
230 BeginDrawingFrame(&frame); | 229 BeginDrawingFrame(&frame); |
231 | 230 |
232 // Draw all non-root render passes except for the root render pass. | 231 // Draw all non-root render passes except for the root render pass. |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 auto iter = render_pass_textures_.find(id); | 569 auto iter = render_pass_textures_.find(id); |
571 return iter != render_pass_textures_.end() && iter->second->id(); | 570 return iter != render_pass_textures_.end() && iter->second->id(); |
572 } | 571 } |
573 | 572 |
574 // static | 573 // static |
575 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) { | 574 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) { |
576 return render_pass->output_rect.size(); | 575 return render_pass->output_rect.size(); |
577 } | 576 } |
578 | 577 |
579 } // namespace cc | 578 } // namespace cc |
OLD | NEW |