diff options
Diffstat (limited to 'cc/raster')
-rw-r--r-- | cc/raster/bitmap_tile_task_worker_pool.cc | 3 | ||||
-rw-r--r-- | cc/raster/one_copy_tile_task_worker_pool.cc | 3 | ||||
-rw-r--r-- | cc/raster/tile_task_runner.cc | 21 | ||||
-rw-r--r-- | cc/raster/tile_task_runner.h | 3 | ||||
-rw-r--r-- | cc/raster/zero_copy_tile_task_worker_pool.cc | 3 |
5 files changed, 27 insertions, 6 deletions
diff --git a/cc/raster/bitmap_tile_task_worker_pool.cc b/cc/raster/bitmap_tile_task_worker_pool.cc index 8892502..de651476 100644 --- a/cc/raster/bitmap_tile_task_worker_pool.cc +++ b/cc/raster/bitmap_tile_task_worker_pool.cc @@ -128,8 +128,7 @@ ResourceFormat BitmapTileTaskWorkerPool::GetResourceFormat( bool BitmapTileTaskWorkerPool::GetResourceRequiresSwizzle( bool must_support_alpha) const { - return !PlatformColor::SameComponentOrder( - GetResourceFormat(must_support_alpha)); + return ResourceFormatRequiresSwizzle(GetResourceFormat(must_support_alpha)); } scoped_ptr<RasterBuffer> BitmapTileTaskWorkerPool::AcquireBufferForRaster( diff --git a/cc/raster/one_copy_tile_task_worker_pool.cc b/cc/raster/one_copy_tile_task_worker_pool.cc index 38e3076..0158752 100644 --- a/cc/raster/one_copy_tile_task_worker_pool.cc +++ b/cc/raster/one_copy_tile_task_worker_pool.cc @@ -296,8 +296,7 @@ ResourceFormat OneCopyTileTaskWorkerPool::GetResourceFormat( bool OneCopyTileTaskWorkerPool::GetResourceRequiresSwizzle( bool must_support_alpha) const { - return !PlatformColor::SameComponentOrder( - GetResourceFormat(must_support_alpha)); + return ResourceFormatRequiresSwizzle(GetResourceFormat(must_support_alpha)); } scoped_ptr<RasterBuffer> OneCopyTileTaskWorkerPool::AcquireBufferForRaster( diff --git a/cc/raster/tile_task_runner.cc b/cc/raster/tile_task_runner.cc index 074f045..50e8805 100644 --- a/cc/raster/tile_task_runner.cc +++ b/cc/raster/tile_task_runner.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "cc/raster/tile_task_runner.h" +#include "cc/resources/platform_color.h" namespace cc { @@ -55,4 +56,24 @@ RasterTask::RasterTask(ImageDecodeTask::Vector* dependencies) { RasterTask::~RasterTask() { } +bool TileTaskRunner::ResourceFormatRequiresSwizzle(ResourceFormat format) { + switch (format) { + case RGBA_8888: + case BGRA_8888: + // Initialize resource using the preferred PlatformColor component + // order and swizzle in the shader instead of in software. + return !PlatformColor::SameComponentOrder(format); + case RGBA_4444: + case ETC1: + case ALPHA_8: + case LUMINANCE_8: + case RGB_565: + case RED_8: + case LUMINANCE_F16: + return false; + } + NOTREACHED(); + return false; +} + } // namespace cc diff --git a/cc/raster/tile_task_runner.h b/cc/raster/tile_task_runner.h index ed0f29a..5e2f7fd 100644 --- a/cc/raster/tile_task_runner.h +++ b/cc/raster/tile_task_runner.h @@ -104,6 +104,9 @@ class CC_EXPORT TileTaskRunner { virtual bool GetResourceRequiresSwizzle(bool must_support_alpha) const = 0; protected: + // Check if resource format matches output format. + static bool ResourceFormatRequiresSwizzle(ResourceFormat format); + virtual ~TileTaskRunner() {} }; diff --git a/cc/raster/zero_copy_tile_task_worker_pool.cc b/cc/raster/zero_copy_tile_task_worker_pool.cc index 1fd8e3d..410540a 100644 --- a/cc/raster/zero_copy_tile_task_worker_pool.cc +++ b/cc/raster/zero_copy_tile_task_worker_pool.cc @@ -136,8 +136,7 @@ ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat( bool ZeroCopyTileTaskWorkerPool::GetResourceRequiresSwizzle( bool must_support_alpha) const { - return !PlatformColor::SameComponentOrder( - GetResourceFormat(must_support_alpha)); + return ResourceFormatRequiresSwizzle(GetResourceFormat(must_support_alpha)); } scoped_ptr<RasterBuffer> ZeroCopyTileTaskWorkerPool::AcquireBufferForRaster( |