summaryrefslogtreecommitdiffstats
path: root/cc/raster
diff options
context:
space:
mode:
authorreveman <reveman@chromium.org>2015-08-20 14:14:01 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-20 21:14:29 +0000
commitcfd85eeea491f720f2dd2fcf310fe634b237e601 (patch)
treea783d35ee3a26e88399dddb18ee9b08600da11e6 /cc/raster
parent1d3c8fa2f0e948c59ba433e2fa0f3fc145cfe3be (diff)
downloadchromium_src-cfd85eeea491f720f2dd2fcf310fe634b237e601.zip
chromium_src-cfd85eeea491f720f2dd2fcf310fe634b237e601.tar.gz
chromium_src-cfd85eeea491f720f2dd2fcf310fe634b237e601.tar.bz2
Add better support for RGBA_4444 textures.
Add support for RGBA_4444 textures to one/zero-copy. Also adds command line flags that allow RGBA_4444 textures to be enabled/disabled for testing purposes. BUG=511284 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1248253003 Cr-Commit-Position: refs/heads/master@{#344585}
Diffstat (limited to 'cc/raster')
-rw-r--r--cc/raster/one_copy_tile_task_worker_pool.cc10
-rw-r--r--cc/raster/tile_task_worker_pool.cc32
-rw-r--r--cc/raster/zero_copy_tile_task_worker_pool.cc2
3 files changed, 27 insertions, 17 deletions
diff --git a/cc/raster/one_copy_tile_task_worker_pool.cc b/cc/raster/one_copy_tile_task_worker_pool.cc
index d0f1713..9874e0f 100644
--- a/cc/raster/one_copy_tile_task_worker_pool.cc
+++ b/cc/raster/one_copy_tile_task_worker_pool.cc
@@ -325,7 +325,7 @@ void OneCopyTileTaskWorkerPool::CheckForCompletedTasks() {
}
ResourceFormat OneCopyTileTaskWorkerPool::GetResourceFormat() const {
- return resource_provider_->best_texture_format();
+ return resource_provider_->memory_efficient_texture_format();
}
bool OneCopyTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
@@ -338,10 +338,12 @@ scoped_ptr<RasterBuffer> OneCopyTileTaskWorkerPool::AcquireBufferForRaster(
uint64_t previous_content_id) {
// TODO(danakj): If resource_content_id != 0, we only need to copy/upload
// the dirty rect.
- DCHECK_EQ(resource->format(), resource_provider_->best_texture_format());
+ DCHECK_EQ(resource->format(),
+ resource_provider_->memory_efficient_texture_format());
return make_scoped_ptr<RasterBuffer>(new RasterBufferImpl(
- this, resource_provider_, resource_provider_->best_texture_format(),
- resource, previous_content_id));
+ this, resource_provider_,
+ resource_provider_->memory_efficient_texture_format(), resource,
+ previous_content_id));
}
void OneCopyTileTaskWorkerPool::ReleaseBufferForRaster(
diff --git a/cc/raster/tile_task_worker_pool.cc b/cc/raster/tile_task_worker_pool.cc
index 8829e2c..e980c85 100644
--- a/cc/raster/tile_task_worker_pool.cc
+++ b/cc/raster/tile_task_worker_pool.cc
@@ -182,6 +182,8 @@ void TileTaskWorkerPool::PlaybackToMemory(void* memory,
const gfx::Rect& canvas_playback_rect,
float scale,
bool include_images) {
+ TRACE_EVENT0("cc", "TileTaskWorkerPool::PlaybackToMemory");
+
DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format;
// Uses kPremul_SkAlphaType since the result is not known to be opaque.
@@ -219,19 +221,25 @@ void TileTaskWorkerPool::PlaybackToMemory(void* memory,
skia::AdoptRef(SkSurface::NewRaster(info, &surface_props));
skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
canvas->setDrawFilter(image_filter.get());
+ // TODO(reveman): Improve partial raster support by reducing the size of
+ // playback rect passed to PlaybackToCanvas. crbug.com/519070
raster_source->PlaybackToCanvas(canvas.get(), canvas_bitmap_rect,
- canvas_playback_rect, scale);
-
- SkImageInfo dst_info =
- SkImageInfo::Make(info.width(), info.height(), buffer_color_type,
- info.alphaType(), info.profileType());
- // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the
- // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728
- // is fixed.
- const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes());
- DCHECK_EQ(0u, dst_row_bytes % 4);
- bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0);
- DCHECK_EQ(true, success);
+ canvas_bitmap_rect, scale);
+
+ {
+ TRACE_EVENT0("cc", "TileTaskWorkerPool::PlaybackToMemory::ConvertPixels");
+
+ SkImageInfo dst_info =
+ SkImageInfo::Make(info.width(), info.height(), buffer_color_type,
+ info.alphaType(), info.profileType());
+ // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the
+ // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728
+ // is fixed.
+ const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes());
+ DCHECK_EQ(0u, dst_row_bytes % 4);
+ bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0);
+ DCHECK_EQ(true, success);
+ }
}
} // namespace cc
diff --git a/cc/raster/zero_copy_tile_task_worker_pool.cc b/cc/raster/zero_copy_tile_task_worker_pool.cc
index 35a2d03..98ac447 100644
--- a/cc/raster/zero_copy_tile_task_worker_pool.cc
+++ b/cc/raster/zero_copy_tile_task_worker_pool.cc
@@ -182,7 +182,7 @@ void ZeroCopyTileTaskWorkerPool::CheckForCompletedTasks() {
}
ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat() const {
- return resource_provider_->best_texture_format();
+ return resource_provider_->memory_efficient_texture_format();
}
bool ZeroCopyTileTaskWorkerPool::GetResourceRequiresSwizzle() const {