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

Unified Diff: cc/resources/gpu_rasterizer.cc

Issue 895853003: Update from https://crrev.com/314320 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 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/resources/gpu_rasterizer.h ('k') | cc/resources/gpu_tile_task_worker_pool.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/gpu_rasterizer.cc
diff --git a/cc/resources/gpu_rasterizer.cc b/cc/resources/gpu_rasterizer.cc
index fe13af706ce5c91c421112f9c005e7b4d5a9dc33..3fdc8bbbbc744273a3c3b9cf5a78b909a11dda17 100644
--- a/cc/resources/gpu_rasterizer.cc
+++ b/cc/resources/gpu_rasterizer.cc
@@ -31,20 +31,23 @@ scoped_ptr<GpuRasterizer> GpuRasterizer::Create(
ContextProvider* context_provider,
ResourceProvider* resource_provider,
bool use_distance_field_text,
- bool tile_prepare_enabled) {
- return make_scoped_ptr<GpuRasterizer>(
- new GpuRasterizer(context_provider, resource_provider,
- use_distance_field_text, tile_prepare_enabled));
+ bool tile_prepare_enabled,
+ int msaa_sample_count) {
+ return make_scoped_ptr<GpuRasterizer>(new GpuRasterizer(
+ context_provider, resource_provider, use_distance_field_text,
+ tile_prepare_enabled, msaa_sample_count));
}
GpuRasterizer::GpuRasterizer(ContextProvider* context_provider,
ResourceProvider* resource_provider,
bool use_distance_field_text,
- bool tile_prepare_enabled)
+ bool tile_prepare_enabled,
+ int msaa_sample_count)
: context_provider_(context_provider),
resource_provider_(resource_provider),
use_distance_field_text_(use_distance_field_text),
- tile_prepare_enabled_(tile_prepare_enabled) {
+ tile_prepare_enabled_(tile_prepare_enabled),
+ msaa_sample_count_(msaa_sample_count) {
DCHECK(context_provider_);
}
@@ -66,25 +69,22 @@ void GpuRasterizer::RasterizeTiles(
ScopedResourceWriteLocks locks;
for (Tile* tile : tiles) {
- // TODO(hendrikw): Don't create resources for solid color tiles.
- // See crbug.com/445919
- scoped_ptr<ScopedResource> resource =
- resource_pool->AcquireResource(tile->desired_texture_size(),
- resource_format);
- const ScopedResource* const_resource = resource.get();
-
RasterSource::SolidColorAnalysis analysis;
if (tile->use_picture_analysis())
PerformSolidColorAnalysis(tile, &analysis);
- if (!analysis.is_solid_color)
- AddToMultiPictureDraw(tile, const_resource, &locks);
-
+ scoped_ptr<ScopedResource> resource;
+ if (!analysis.is_solid_color) {
+ resource = resource_pool->AcquireResource(tile->desired_texture_size(),
+ resource_format);
+ AddToMultiPictureDraw(tile, resource.get(), &locks);
+ }
update_tile_draw_info.Run(tile, resource.Pass(), analysis);
}
- multi_picture_draw_.draw();
+ // If MSAA is enabled, tell Skia to resolve each render target after draw.
+ multi_picture_draw_.draw(msaa_sample_count_ > 0);
}
void GpuRasterizer::PerformSolidColorAnalysis(
@@ -120,16 +120,16 @@ void GpuRasterizer::AddToMultiPictureDraw(const Tile* tile,
use_distance_field_text_ ||
tile->raster_source()->ShouldAttemptToUseDistanceFieldText();
scoped_ptr<ResourceProvider::ScopedWriteLockGr> lock(
- new ResourceProvider::ScopedWriteLockGr(resource_provider_,
- resource->id()));
- SkSurface* sk_surface = lock->GetSkSurface(
- use_distance_field_text, tile->raster_source()->CanUseLCDText());
-
- locks->push_back(lock.Pass());
+ new ResourceProvider::ScopedWriteLockGr(
+ resource_provider_, resource->id(), use_distance_field_text,
+ tile->raster_source()->CanUseLCDText(), msaa_sample_count_));
+ SkSurface* sk_surface = lock->get_sk_surface();
if (!sk_surface)
return;
+ locks->push_back(lock.Pass());
+
SkRTreeFactory factory;
SkPictureRecorder recorder;
gfx::Size size = resource->size();
« no previous file with comments | « cc/resources/gpu_rasterizer.h ('k') | cc/resources/gpu_tile_task_worker_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698