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

Side by Side Diff: cc/output/direct_renderer.cc

Issue 2194013002: cc: Delete the Renderer base class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dcheck-delegating
Patch Set: delete-renderer-base-class: rebase Created 4 years, 4 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
« no previous file with comments | « cc/output/direct_renderer.h ('k') | cc/output/gl_renderer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "base/numerics/safe_conversions.h" 14 #include "base/numerics/safe_conversions.h"
15 #include "base/trace_event/trace_event.h" 15 #include "base/trace_event/trace_event.h"
16 #include "cc/base/math_util.h" 16 #include "cc/base/math_util.h"
17 #include "cc/output/bsp_tree.h" 17 #include "cc/output/bsp_tree.h"
18 #include "cc/output/bsp_walk_action.h" 18 #include "cc/output/bsp_walk_action.h"
19 #include "cc/output/copy_output_request.h" 19 #include "cc/output/copy_output_request.h"
20 #include "cc/output/renderer_settings.h"
20 #include "cc/quads/draw_quad.h" 21 #include "cc/quads/draw_quad.h"
22 #include "cc/resources/scoped_resource.h"
21 #include "ui/gfx/geometry/quad_f.h" 23 #include "ui/gfx/geometry/quad_f.h"
22 #include "ui/gfx/geometry/rect_conversions.h" 24 #include "ui/gfx/geometry/rect_conversions.h"
23 #include "ui/gfx/transform.h" 25 #include "ui/gfx/transform.h"
24 26
25 static gfx::Transform OrthoProjectionMatrix(float left, 27 static gfx::Transform OrthoProjectionMatrix(float left,
26 float right, 28 float right,
27 float bottom, 29 float bottom,
28 float top) { 30 float top) {
29 // Use the standard formula to map the clipping frustum to the cube from 31 // Use the standard formula to map the clipping frustum to the cube from
30 // [-1, -1, -1] to [1, 1, 1]. 32 // [-1, -1, -1] to [1, 1, 1].
(...skipping 23 matching lines...) Expand all
54 56
55 // Map from ([-1, -1] to [1, 1]) -> ([0, 0] to [1, 1]) 57 // Map from ([-1, -1] to [1, 1]) -> ([0, 0] to [1, 1])
56 canvas.Translate3d(0.5, 0.5, 0.5); 58 canvas.Translate3d(0.5, 0.5, 0.5);
57 canvas.Scale3d(0.5, 0.5, 0.5); 59 canvas.Scale3d(0.5, 0.5, 0.5);
58 60
59 return canvas; 61 return canvas;
60 } 62 }
61 63
62 namespace cc { 64 namespace cc {
63 65
64 DirectRenderer::DrawingFrame::DrawingFrame() 66 DirectRenderer::DrawingFrame::DrawingFrame() = default;
65 : root_render_pass(NULL), current_render_pass(NULL), current_texture(NULL) { 67 DirectRenderer::DrawingFrame::~DrawingFrame() = default;
68
69 DirectRenderer::DirectRenderer(const RendererSettings* settings,
70 OutputSurface* output_surface,
71 ResourceProvider* resource_provider)
72 : settings_(settings),
73 output_surface_(output_surface),
74 resource_provider_(resource_provider),
75 overlay_processor_(new OverlayProcessor(output_surface)) {
76 // TODO(danakj): This should not be happening in the constructor.
77 overlay_processor_->Initialize();
66 } 78 }
67 79
68 DirectRenderer::DrawingFrame::~DrawingFrame() {} 80 DirectRenderer::~DirectRenderer() = default;
69 81
70 //
71 // static 82 // static
72 gfx::RectF DirectRenderer::QuadVertexRect() { 83 gfx::RectF DirectRenderer::QuadVertexRect() {
73 return gfx::RectF(-0.5f, -0.5f, 1.f, 1.f); 84 return gfx::RectF(-0.5f, -0.5f, 1.f, 1.f);
74 } 85 }
75 86
76 // static 87 // static
77 void DirectRenderer::QuadRectTransform(gfx::Transform* quad_rect_transform, 88 void DirectRenderer::QuadRectTransform(gfx::Transform* quad_rect_transform,
78 const gfx::Transform& quad_transform, 89 const gfx::Transform& quad_transform,
79 const gfx::RectF& quad_rect) { 90 const gfx::RectF& quad_rect) {
80 *quad_rect_transform = quad_transform; 91 *quad_rect_transform = quad_transform;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 const DrawingFrame* frame, 132 const DrawingFrame* frame,
122 const gfx::Rect& draw_rect) const { 133 const gfx::Rect& draw_rect) const {
123 gfx::Rect window_rect = draw_rect; 134 gfx::Rect window_rect = draw_rect;
124 window_rect -= current_draw_rect_.OffsetFromOrigin(); 135 window_rect -= current_draw_rect_.OffsetFromOrigin();
125 window_rect += current_viewport_rect_.OffsetFromOrigin(); 136 window_rect += current_viewport_rect_.OffsetFromOrigin();
126 if (FlippedFramebuffer(frame)) 137 if (FlippedFramebuffer(frame))
127 window_rect.set_y(current_surface_size_.height() - window_rect.bottom()); 138 window_rect.set_y(current_surface_size_.height() - window_rect.bottom());
128 return window_rect; 139 return window_rect;
129 } 140 }
130 141
131 DirectRenderer::DirectRenderer(const RendererSettings* settings,
132 OutputSurface* output_surface,
133 ResourceProvider* resource_provider)
134 : Renderer(settings),
135 output_surface_(output_surface),
136 resource_provider_(resource_provider),
137 overlay_processor_(new OverlayProcessor(output_surface)) {
138 overlay_processor_->Initialize();
139 }
140
141 DirectRenderer::~DirectRenderer() {}
142
143 const TileDrawQuad* DirectRenderer::CanPassBeDrawnDirectly( 142 const TileDrawQuad* DirectRenderer::CanPassBeDrawnDirectly(
144 const RenderPass* pass) { 143 const RenderPass* pass) {
145 return nullptr; 144 return nullptr;
146 } 145 }
147 146
147 void DirectRenderer::SetVisible(bool visible) {
148 if (visible_ == visible)
149 return;
150 visible_ = visible;
151 DidChangeVisibility();
152 }
153
148 void DirectRenderer::DecideRenderPassAllocationsForFrame( 154 void DirectRenderer::DecideRenderPassAllocationsForFrame(
149 const RenderPassList& render_passes_in_draw_order) { 155 const RenderPassList& render_passes_in_draw_order) {
150 render_pass_bypass_quads_.clear(); 156 render_pass_bypass_quads_.clear();
151 157
152 std::unordered_map<RenderPassId, gfx::Size, RenderPassIdHash> 158 std::unordered_map<RenderPassId, gfx::Size, RenderPassIdHash>
153 render_passes_in_frame; 159 render_passes_in_frame;
154 RenderPass* root_render_pass = render_passes_in_draw_order.back().get(); 160 RenderPass* root_render_pass = render_passes_in_draw_order.back().get();
155 for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i) { 161 for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i) {
156 RenderPass* pass = render_passes_in_draw_order[i].get(); 162 RenderPass* pass = render_passes_in_draw_order[i].get();
157 if (pass != root_render_pass) { 163 if (pass != root_render_pass) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 if (!resource) 199 if (!resource)
194 resource = ScopedResource::Create(resource_provider_); 200 resource = ScopedResource::Create(resource_provider_);
195 } 201 }
196 } 202 }
197 203
198 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, 204 void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order,
199 float device_scale_factor, 205 float device_scale_factor,
200 const gfx::ColorSpace& device_color_space, 206 const gfx::ColorSpace& device_color_space,
201 const gfx::Rect& device_viewport_rect, 207 const gfx::Rect& device_viewport_rect,
202 const gfx::Rect& device_clip_rect) { 208 const gfx::Rect& device_clip_rect) {
203 DCHECK(visible()); 209 DCHECK(visible_);
204 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame"); 210 TRACE_EVENT0("cc", "DirectRenderer::DrawFrame");
205 UMA_HISTOGRAM_COUNTS( 211 UMA_HISTOGRAM_COUNTS(
206 "Renderer4.renderPassCount", 212 "Renderer4.renderPassCount",
207 base::saturated_cast<int>(render_passes_in_draw_order->size())); 213 base::saturated_cast<int>(render_passes_in_draw_order->size()));
208 214
209 RenderPass* root_render_pass = render_passes_in_draw_order->back().get(); 215 RenderPass* root_render_pass = render_passes_in_draw_order->back().get();
210 DCHECK(root_render_pass); 216 DCHECK(root_render_pass);
211 217
212 DrawingFrame frame; 218 DrawingFrame frame;
213 frame.render_passes_in_draw_order = render_passes_in_draw_order; 219 frame.render_passes_in_draw_order = render_passes_in_draw_order;
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 } 371 }
366 372
367 void DirectRenderer::SetScissorTestRectInDrawSpace( 373 void DirectRenderer::SetScissorTestRectInDrawSpace(
368 const DrawingFrame* frame, 374 const DrawingFrame* frame,
369 const gfx::Rect& draw_space_rect) { 375 const gfx::Rect& draw_space_rect) {
370 gfx::Rect window_space_rect = 376 gfx::Rect window_space_rect =
371 MoveFromDrawToWindowSpace(frame, draw_space_rect); 377 MoveFromDrawToWindowSpace(frame, draw_space_rect);
372 SetScissorTestRect(window_space_rect); 378 SetScissorTestRect(window_space_rect);
373 } 379 }
374 380
375 void DirectRenderer::FinishDrawingQuadList() {}
376
377 void DirectRenderer::DoDrawPolygon(const DrawPolygon& poly, 381 void DirectRenderer::DoDrawPolygon(const DrawPolygon& poly,
378 DrawingFrame* frame, 382 DrawingFrame* frame,
379 const gfx::Rect& render_pass_scissor, 383 const gfx::Rect& render_pass_scissor,
380 bool use_render_pass_scissor) { 384 bool use_render_pass_scissor) {
381 SetScissorStateForQuad(frame, *poly.original_ref(), render_pass_scissor, 385 SetScissorStateForQuad(frame, *poly.original_ref(), render_pass_scissor,
382 use_render_pass_scissor); 386 use_render_pass_scissor);
383 387
384 // If the poly has not been split, then it is just a normal DrawQuad, 388 // If the poly has not been split, then it is just a normal DrawQuad,
385 // and we should save any extra processing that would have to be done. 389 // and we should save any extra processing that would have to be done.
386 if (!poly.is_split()) { 390 if (!poly.is_split()) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 auto iter = render_pass_textures_.find(id); 573 auto iter = render_pass_textures_.find(id);
570 return iter != render_pass_textures_.end() && iter->second->id(); 574 return iter != render_pass_textures_.end() && iter->second->id();
571 } 575 }
572 576
573 // static 577 // static
574 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) { 578 gfx::Size DirectRenderer::RenderPassTextureSize(const RenderPass* render_pass) {
575 return render_pass->output_rect.size(); 579 return render_pass->output_rect.size();
576 } 580 }
577 581
578 } // namespace cc 582 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/direct_renderer.h ('k') | cc/output/gl_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698