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

Unified Diff: cc/output/software_renderer.cc

Issue 2128113002: Use a cc::Display for WebView resourceless software draws. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: displaywebview: mojom Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/software_renderer.h ('k') | cc/output/software_renderer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/software_renderer.cc
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc
index 0368ad9c588049eac3259e9d554c19e99b771d1e..ee169b7d06a6492a4a0decf04660624f3da0ce0a 100644
--- a/cc/output/software_renderer.cc
+++ b/cc/output/software_renderer.cc
@@ -56,24 +56,20 @@ std::unique_ptr<SoftwareRenderer> SoftwareRenderer::Create(
RendererClient* client,
const RendererSettings* settings,
OutputSurface* output_surface,
- ResourceProvider* resource_provider,
- bool use_image_hijack_canvas) {
+ ResourceProvider* resource_provider) {
return base::WrapUnique(new SoftwareRenderer(client, settings, output_surface,
- resource_provider,
- use_image_hijack_canvas));
+ resource_provider));
}
SoftwareRenderer::SoftwareRenderer(RendererClient* client,
const RendererSettings* settings,
OutputSurface* output_surface,
- ResourceProvider* resource_provider,
- bool use_image_hijack_canvas)
+ ResourceProvider* resource_provider)
: DirectRenderer(client, settings, output_surface, resource_provider),
is_scissor_enabled_(false),
is_backbuffer_discarded_(false),
output_device_(output_surface->software_device()),
- current_canvas_(nullptr),
- use_image_hijack_canvas_(use_image_hijack_canvas) {
+ current_canvas_(nullptr) {
if (resource_provider_) {
capabilities_.max_texture_size = resource_provider_->max_texture_size();
capabilities_.best_texture_format =
@@ -366,13 +362,19 @@ void SoftwareRenderer::DrawPictureQuad(const DrawingFrame* frame,
const bool needs_transparency =
SkScalarRoundToInt(quad->shared_quad_state->opacity * 255) < 255;
const bool disable_image_filtering =
- frame->disable_picture_quad_image_filtering || quad->nearest_neighbor;
+ disable_picture_quad_image_filtering_ || quad->nearest_neighbor;
TRACE_EVENT0("cc", "SoftwareRenderer::DrawPictureQuad");
RasterSource::PlaybackSettings playback_settings;
playback_settings.playback_to_shared_canvas = true;
- playback_settings.use_image_hijack_canvas = use_image_hijack_canvas_;
+ // Indicates whether content rasterization should happen through an
+ // ImageHijackCanvas, which causes image decodes to be managed by an
+ // ImageDecodeController. PictureDrawQuads are used for resourceless software
+ // draws, while a GPU ImageDecodeController may be in use by the compositor
+ // providing the RasterSource. So we disable the image hijack canvas to avoid
+ // trying to use the GPU ImageDecodeController while doing a software draw.
+ playback_settings.use_image_hijack_canvas = false;
if (needs_transparency || disable_image_filtering) {
// TODO(aelias): This isn't correct in all cases. We should detect these
// cases and fall back to a persistent bitmap backing
« no previous file with comments | « cc/output/software_renderer.h ('k') | cc/output/software_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698