diff options
author | reveman <reveman@chromium.org> | 2015-08-20 14:14:01 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-20 21:14:29 +0000 |
commit | cfd85eeea491f720f2dd2fcf310fe634b237e601 (patch) | |
tree | a783d35ee3a26e88399dddb18ee9b08600da11e6 /cc/raster | |
parent | 1d3c8fa2f0e948c59ba433e2fa0f3fc145cfe3be (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | cc/raster/tile_task_worker_pool.cc | 32 | ||||
-rw-r--r-- | cc/raster/zero_copy_tile_task_worker_pool.cc | 2 |
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 { |