From 5b19e03ec9016cbfa7272b9c998babd3e520d596 Mon Sep 17 00:00:00 2001 From: reveman Date: Tue, 25 Aug 2015 12:25:40 -0700 Subject: [PATCH] cc: Fix support for RGBA4444 texture format and one-copy. BUG=524129 TEST=chrome --enable-rgba-4444-textures CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1308533003 Cr-Commit-Position: refs/heads/master@{#345404} --- cc/raster/one_copy_tile_task_worker_pool.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/cc/raster/one_copy_tile_task_worker_pool.cc b/cc/raster/one_copy_tile_task_worker_pool.cc index 9874e0f6a1bb..169fc36c2eb4 100644 --- a/cc/raster/one_copy_tile_task_worker_pool.cc +++ b/cc/raster/one_copy_tile_task_worker_pool.cc @@ -376,7 +376,8 @@ void OneCopyTileTaskWorkerPool::PlaybackAndCopyOnWorkerThread( resource_provider_->gpu_memory_buffer_manager() ->AllocateGpuMemoryBuffer( staging_buffer->size, - BufferFormat(resource_provider_->best_texture_format()), + BufferFormat( + resource_provider_->memory_efficient_texture_format()), use_persistent_gpu_memory_buffers_ ? gfx::BufferUsage::PERSISTENT_MAP : gfx::BufferUsage::MAP); @@ -405,9 +406,9 @@ void OneCopyTileTaskWorkerPool::PlaybackAndCopyOnWorkerThread( DCHECK(!playback_rect.IsEmpty()) << "Why are we rastering a tile that's not dirty?"; TileTaskWorkerPool::PlaybackToMemory( - data, resource_provider_->best_texture_format(), staging_buffer->size, - static_cast(stride), raster_source, raster_full_rect, - playback_rect, scale, include_images); + data, resource_provider_->memory_efficient_texture_format(), + staging_buffer->size, static_cast(stride), raster_source, + raster_full_rect, playback_rect, scale, include_images); staging_buffer->gpu_memory_buffer->Unmap(); staging_buffer->content_id = new_content_id; } @@ -424,7 +425,7 @@ void OneCopyTileTaskWorkerPool::PlaybackAndCopyOnWorkerThread( DCHECK(gl); unsigned image_target = resource_provider_->GetImageTextureTarget( - resource_provider_->best_texture_format()); + resource_provider_->memory_efficient_texture_format()); // Create and bind staging texture. if (!staging_buffer->texture_id) { @@ -444,7 +445,8 @@ void OneCopyTileTaskWorkerPool::PlaybackAndCopyOnWorkerThread( staging_buffer->image_id = gl->CreateImageCHROMIUM( staging_buffer->gpu_memory_buffer->AsClientBuffer(), staging_buffer->size.width(), staging_buffer->size.height(), - GLInternalFormat(resource_provider_->best_texture_format())); + GLInternalFormat( + resource_provider_->memory_efficient_texture_format())); gl->BindTexImage2DCHROMIUM(image_target, staging_buffer->image_id); } } else { @@ -471,7 +473,7 @@ void OneCopyTileTaskWorkerPool::PlaybackAndCopyOnWorkerThread( } int bytes_per_row = - (BitsPerPixel(resource_provider_->best_texture_format()) * + (BitsPerPixel(resource_provider_->memory_efficient_texture_format()) * resource->size().width()) / 8; int chunk_size_in_rows = @@ -525,7 +527,8 @@ bool OneCopyTileTaskWorkerPool::OnMemoryDump( base::AutoLock lock(lock_); for (const auto& buffer : buffers_) { - buffer->OnMemoryDump(pmd, resource_provider_->best_texture_format(), + buffer->OnMemoryDump(pmd, + resource_provider_->memory_efficient_texture_format(), std::find(free_buffers_.begin(), free_buffers_.end(), buffer) != free_buffers_.end()); } -- 2.11.4.GIT