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

Side by Side Diff: cc/output/software_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
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/software_renderer.h" 5 #include "cc/output/software_renderer.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/trace_event/trace_event.h" 8 #include "base/trace_event/trace_event.h"
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/output/compositor_frame.h" 10 #include "cc/output/compositor_frame.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) && 45 SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) &&
46 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) && 46 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) &&
47 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) && 47 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) &&
48 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) && 48 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) &&
49 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f); 49 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f);
50 } 50 }
51 51
52 } // anonymous namespace 52 } // anonymous namespace
53 53
54 std::unique_ptr<SoftwareRenderer> SoftwareRenderer::Create( 54 std::unique_ptr<SoftwareRenderer> SoftwareRenderer::Create(
55 RendererClient* client, 55 DirectRendererClient* client,
56 const RendererSettings* settings, 56 const RendererSettings* settings,
57 OutputSurface* output_surface, 57 OutputSurface* output_surface,
58 ResourceProvider* resource_provider) { 58 ResourceProvider* resource_provider) {
59 return base::WrapUnique(new SoftwareRenderer(client, settings, output_surface, 59 return base::WrapUnique(new SoftwareRenderer(client, settings, output_surface,
60 resource_provider)); 60 resource_provider));
61 } 61 }
62 62
63 SoftwareRenderer::SoftwareRenderer(RendererClient* client, 63 SoftwareRenderer::SoftwareRenderer(DirectRendererClient* client,
64 const RendererSettings* settings, 64 const RendererSettings* settings,
65 OutputSurface* output_surface, 65 OutputSurface* output_surface,
66 ResourceProvider* resource_provider) 66 ResourceProvider* resource_provider)
67 : DirectRenderer(client, settings, output_surface, resource_provider), 67 : DirectRenderer(client, settings, output_surface, resource_provider),
68 is_scissor_enabled_(false), 68 is_scissor_enabled_(false),
69 is_backbuffer_discarded_(false),
70 output_device_(output_surface->software_device()), 69 output_device_(output_surface->software_device()),
71 current_canvas_(nullptr) { 70 current_canvas_(nullptr) {
72 if (resource_provider_) { 71 if (resource_provider_) {
73 capabilities_.max_texture_size = resource_provider_->max_texture_size(); 72 capabilities_.max_texture_size = resource_provider_->max_texture_size();
74 capabilities_.best_texture_format = 73 capabilities_.best_texture_format =
75 resource_provider_->best_texture_format(); 74 resource_provider_->best_texture_format();
76 } 75 }
77 // The updater can access bitmaps while the SoftwareRenderer is using them. 76 // The updater can access bitmaps while the SoftwareRenderer is using them.
78 capabilities_.allow_partial_texture_updates = true; 77 capabilities_.allow_partial_texture_updates = true;
79 capabilities_.using_partial_swap = true; 78 capabilities_.using_partial_swap = true;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 // rendering, but the underlying effect we want is to clear any existing 124 // rendering, but the underlying effect we want is to clear any existing
126 // clipRect on the current SkCanvas. This is done by setting clipRect to 125 // clipRect on the current SkCanvas. This is done by setting clipRect to
127 // the viewport's dimensions. 126 // the viewport's dimensions.
128 if (!current_canvas_) 127 if (!current_canvas_)
129 return; 128 return;
130 is_scissor_enabled_ = false; 129 is_scissor_enabled_ = false;
131 SkISize size = current_canvas_->getBaseLayerSize(); 130 SkISize size = current_canvas_->getBaseLayerSize();
132 SetClipRect(gfx::Rect(size.width(), size.height())); 131 SetClipRect(gfx::Rect(size.width(), size.height()));
133 } 132 }
134 133
135 void SoftwareRenderer::Finish() {}
136
137 void SoftwareRenderer::BindFramebufferToOutputSurface(DrawingFrame* frame) { 134 void SoftwareRenderer::BindFramebufferToOutputSurface(DrawingFrame* frame) {
138 DCHECK(!output_surface_->HasExternalStencilTest()); 135 DCHECK(!output_surface_->HasExternalStencilTest());
139 current_framebuffer_lock_ = nullptr; 136 current_framebuffer_lock_ = nullptr;
140 current_framebuffer_canvas_.reset(); 137 current_framebuffer_canvas_.reset();
141 current_canvas_ = root_canvas_; 138 current_canvas_ = root_canvas_;
142 } 139 }
143 140
144 bool SoftwareRenderer::BindFramebufferToTexture( 141 bool SoftwareRenderer::BindFramebufferToTexture(
145 DrawingFrame* frame, 142 DrawingFrame* frame,
146 const ScopedResource* texture) { 143 const ScopedResource* texture) {
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 598
602 std::unique_ptr<SkBitmap> bitmap(new SkBitmap); 599 std::unique_ptr<SkBitmap> bitmap(new SkBitmap);
603 bitmap->setInfo(SkImageInfo::MakeN32Premul(window_copy_rect.width(), 600 bitmap->setInfo(SkImageInfo::MakeN32Premul(window_copy_rect.width(),
604 window_copy_rect.height())); 601 window_copy_rect.height()));
605 current_canvas_->readPixels( 602 current_canvas_->readPixels(
606 bitmap.get(), window_copy_rect.x(), window_copy_rect.y()); 603 bitmap.get(), window_copy_rect.x(), window_copy_rect.y());
607 604
608 request->SendBitmapResult(std::move(bitmap)); 605 request->SendBitmapResult(std::move(bitmap));
609 } 606 }
610 607
611 void SoftwareRenderer::DiscardBackbuffer() {
612 if (is_backbuffer_discarded_)
613 return;
614
615 output_surface_->DiscardBackbuffer();
616
617 is_backbuffer_discarded_ = true;
618
619 // Damage tracker needs a full reset every time framebuffer is discarded.
620 client_->SetFullRootLayerDamage();
621 }
622
623 void SoftwareRenderer::EnsureBackbuffer() {
624 if (!is_backbuffer_discarded_)
625 return;
626
627 output_surface_->EnsureBackbuffer();
628 is_backbuffer_discarded_ = false;
629 }
630
631 void SoftwareRenderer::DidChangeVisibility() {
632 if (visible())
633 EnsureBackbuffer();
634 else
635 DiscardBackbuffer();
636 }
637
638 bool SoftwareRenderer::ShouldApplyBackgroundFilters( 608 bool SoftwareRenderer::ShouldApplyBackgroundFilters(
639 const RenderPassDrawQuad* quad) const { 609 const RenderPassDrawQuad* quad) const {
640 if (quad->background_filters.IsEmpty()) 610 if (quad->background_filters.IsEmpty())
641 return false; 611 return false;
642 612
643 // TODO(hendrikw): Look into allowing background filters to see pixels from 613 // TODO(hendrikw): Look into allowing background filters to see pixels from
644 // other render targets. See crbug.com/314867. 614 // other render targets. See crbug.com/314867.
645 615
646 return true; 616 return true;
647 } 617 }
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 ApplyImageFilter(filter.get(), quad, backdrop_bitmap, nullptr); 723 ApplyImageFilter(filter.get(), quad, backdrop_bitmap, nullptr);
754 724
755 if (!filter_backdrop_image) 725 if (!filter_backdrop_image)
756 return nullptr; 726 return nullptr;
757 727
758 return filter_backdrop_image->makeShader(content_tile_mode, content_tile_mode, 728 return filter_backdrop_image->makeShader(content_tile_mode, content_tile_mode,
759 &filter_backdrop_transform); 729 &filter_backdrop_transform);
760 } 730 }
761 731
762 } // namespace cc 732 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698