summaryrefslogtreecommitdiffstats
path: root/cc/raster
diff options
context:
space:
mode:
authorhendrikw <hendrikw@chromium.org>2015-06-19 16:45:43 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-19 23:46:10 +0000
commit316921858b47cf38d65f242435782d87f6f78b93 (patch)
tree7821f36fe4969ce8dd8e91b5d7eb6c5f13fde138 /cc/raster
parent59fc7718fefd2c93e1acd94c4d5a405949a0cf10 (diff)
downloadchromium_src-316921858b47cf38d65f242435782d87f6f78b93.zip
chromium_src-316921858b47cf38d65f242435782d87f6f78b93.tar.gz
chromium_src-316921858b47cf38d65f242435782d87f6f78b93.tar.bz2
cc, gpu: Use RGBA when using msaa on systems that don't support BGRA
The pixel is compiled to prefer BGRA, but doesn't support BGRA for render buffers. When we try to use msaa, it tries to create a BGRA render buffer and fails. Fix is, plumb the setting to the gpu raster code, and prefer RGBA when using msaa on a system that doesn't support BGRA. BUG=497478 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1174733003 Cr-Commit-Position: refs/heads/master@{#335395}
Diffstat (limited to 'cc/raster')
-rw-r--r--cc/raster/bitmap_tile_task_worker_pool.cc7
-rw-r--r--cc/raster/bitmap_tile_task_worker_pool.h3
-rw-r--r--cc/raster/gpu_tile_task_worker_pool.cc9
-rw-r--r--cc/raster/gpu_tile_task_worker_pool.h3
-rw-r--r--cc/raster/one_copy_tile_task_worker_pool.cc7
-rw-r--r--cc/raster/one_copy_tile_task_worker_pool.h3
-rw-r--r--cc/raster/pixel_buffer_tile_task_worker_pool.cc7
-rw-r--r--cc/raster/pixel_buffer_tile_task_worker_pool.h3
-rw-r--r--cc/raster/tile_task_runner.h5
-rw-r--r--cc/raster/zero_copy_tile_task_worker_pool.cc7
-rw-r--r--cc/raster/zero_copy_tile_task_worker_pool.h3
11 files changed, 45 insertions, 12 deletions
diff --git a/cc/raster/bitmap_tile_task_worker_pool.cc b/cc/raster/bitmap_tile_task_worker_pool.cc
index 586b9a9..bd6af35 100644
--- a/cc/raster/bitmap_tile_task_worker_pool.cc
+++ b/cc/raster/bitmap_tile_task_worker_pool.cc
@@ -12,6 +12,7 @@
#include "cc/debug/traced_value.h"
#include "cc/playback/raster_source.h"
#include "cc/raster/raster_buffer.h"
+#include "cc/resources/platform_color.h"
#include "cc/resources/resource.h"
namespace cc {
@@ -178,10 +179,14 @@ void BitmapTileTaskWorkerPool::CheckForCompletedTasks() {
completed_tasks_.clear();
}
-ResourceFormat BitmapTileTaskWorkerPool::GetResourceFormat() {
+ResourceFormat BitmapTileTaskWorkerPool::GetResourceFormat() const {
return resource_provider_->best_texture_format();
}
+bool BitmapTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
+ return !PlatformColor::SameComponentOrder(GetResourceFormat());
+}
+
scoped_ptr<RasterBuffer> BitmapTileTaskWorkerPool::AcquireBufferForRaster(
const Resource* resource,
uint64_t resource_content_id,
diff --git a/cc/raster/bitmap_tile_task_worker_pool.h b/cc/raster/bitmap_tile_task_worker_pool.h
index 21b8cf5..3df206a 100644
--- a/cc/raster/bitmap_tile_task_worker_pool.h
+++ b/cc/raster/bitmap_tile_task_worker_pool.h
@@ -38,7 +38,8 @@ class CC_EXPORT BitmapTileTaskWorkerPool : public TileTaskWorkerPool,
void Shutdown() override;
void ScheduleTasks(TileTaskQueue* queue) override;
void CheckForCompletedTasks() override;
- ResourceFormat GetResourceFormat() override;
+ ResourceFormat GetResourceFormat() const override;
+ bool GetResourceRequiresSwizzle() const override;
// Overridden from TileTaskClient:
scoped_ptr<RasterBuffer> AcquireBufferForRaster(
diff --git a/cc/raster/gpu_tile_task_worker_pool.cc b/cc/raster/gpu_tile_task_worker_pool.cc
index a79b880..f2806c4 100644
--- a/cc/raster/gpu_tile_task_worker_pool.cc
+++ b/cc/raster/gpu_tile_task_worker_pool.cc
@@ -207,8 +207,13 @@ void GpuTileTaskWorkerPool::CheckForCompletedTasks() {
completed_tasks_.clear();
}
-ResourceFormat GpuTileTaskWorkerPool::GetResourceFormat() {
- return rasterizer_->resource_provider()->best_texture_format();
+ResourceFormat GpuTileTaskWorkerPool::GetResourceFormat() const {
+ return rasterizer_->resource_provider()->best_render_buffer_format();
+}
+
+bool GpuTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
+ // This doesn't require a swizzle because we rasterize to the correct format.
+ return false;
}
void GpuTileTaskWorkerPool::CompleteTasks(const Task::Vector& tasks) {
diff --git a/cc/raster/gpu_tile_task_worker_pool.h b/cc/raster/gpu_tile_task_worker_pool.h
index 54c8620..32a9d23 100644
--- a/cc/raster/gpu_tile_task_worker_pool.h
+++ b/cc/raster/gpu_tile_task_worker_pool.h
@@ -36,7 +36,8 @@ class CC_EXPORT GpuTileTaskWorkerPool : public TileTaskWorkerPool,
void Shutdown() override;
void ScheduleTasks(TileTaskQueue* queue) override;
void CheckForCompletedTasks() override;
- ResourceFormat GetResourceFormat() override;
+ ResourceFormat GetResourceFormat() const override;
+ bool GetResourceRequiresSwizzle() const override;
// Overridden from TileTaskClient:
scoped_ptr<RasterBuffer> AcquireBufferForRaster(
diff --git a/cc/raster/one_copy_tile_task_worker_pool.cc b/cc/raster/one_copy_tile_task_worker_pool.cc
index e3d1df5..78e6b10 100644
--- a/cc/raster/one_copy_tile_task_worker_pool.cc
+++ b/cc/raster/one_copy_tile_task_worker_pool.cc
@@ -13,6 +13,7 @@
#include "cc/base/math_util.h"
#include "cc/debug/traced_value.h"
#include "cc/raster/raster_buffer.h"
+#include "cc/resources/platform_color.h"
#include "cc/resources/resource_pool.h"
#include "cc/resources/scoped_resource.h"
#include "gpu/command_buffer/client/gles2_interface.h"
@@ -295,10 +296,14 @@ void OneCopyTileTaskWorkerPool::CheckForCompletedTasks() {
completed_tasks_.clear();
}
-ResourceFormat OneCopyTileTaskWorkerPool::GetResourceFormat() {
+ResourceFormat OneCopyTileTaskWorkerPool::GetResourceFormat() const {
return resource_provider_->best_texture_format();
}
+bool OneCopyTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
+ return !PlatformColor::SameComponentOrder(GetResourceFormat());
+}
+
scoped_ptr<RasterBuffer> OneCopyTileTaskWorkerPool::AcquireBufferForRaster(
const Resource* resource,
uint64_t resource_content_id,
diff --git a/cc/raster/one_copy_tile_task_worker_pool.h b/cc/raster/one_copy_tile_task_worker_pool.h
index f627193..518aaa2d 100644
--- a/cc/raster/one_copy_tile_task_worker_pool.h
+++ b/cc/raster/one_copy_tile_task_worker_pool.h
@@ -50,7 +50,8 @@ class CC_EXPORT OneCopyTileTaskWorkerPool : public TileTaskWorkerPool,
void Shutdown() override;
void ScheduleTasks(TileTaskQueue* queue) override;
void CheckForCompletedTasks() override;
- ResourceFormat GetResourceFormat() override;
+ ResourceFormat GetResourceFormat() const override;
+ bool GetResourceRequiresSwizzle() const override;
// Overridden from TileTaskClient:
scoped_ptr<RasterBuffer> AcquireBufferForRaster(
diff --git a/cc/raster/pixel_buffer_tile_task_worker_pool.cc b/cc/raster/pixel_buffer_tile_task_worker_pool.cc
index 14b6ee2..df79519 100644
--- a/cc/raster/pixel_buffer_tile_task_worker_pool.cc
+++ b/cc/raster/pixel_buffer_tile_task_worker_pool.cc
@@ -12,6 +12,7 @@
#include "base/trace_event/trace_event_argument.h"
#include "cc/debug/traced_value.h"
#include "cc/raster/raster_buffer.h"
+#include "cc/resources/platform_color.h"
#include "cc/resources/resource.h"
#include "gpu/command_buffer/client/gles2_interface.h"
@@ -312,10 +313,14 @@ void PixelBufferTileTaskWorkerPool::CheckForCompletedTasks() {
completed_raster_tasks_.clear();
}
-ResourceFormat PixelBufferTileTaskWorkerPool::GetResourceFormat() {
+ResourceFormat PixelBufferTileTaskWorkerPool::GetResourceFormat() const {
return resource_provider_->memory_efficient_texture_format();
}
+bool PixelBufferTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
+ return !PlatformColor::SameComponentOrder(GetResourceFormat());
+}
+
scoped_ptr<RasterBuffer> PixelBufferTileTaskWorkerPool::AcquireBufferForRaster(
const Resource* resource,
uint64_t resource_content_id,
diff --git a/cc/raster/pixel_buffer_tile_task_worker_pool.h b/cc/raster/pixel_buffer_tile_task_worker_pool.h
index 01618a6..2c6aeb9 100644
--- a/cc/raster/pixel_buffer_tile_task_worker_pool.h
+++ b/cc/raster/pixel_buffer_tile_task_worker_pool.h
@@ -46,7 +46,8 @@ class CC_EXPORT PixelBufferTileTaskWorkerPool : public TileTaskWorkerPool,
void Shutdown() override;
void ScheduleTasks(TileTaskQueue* queue) override;
void CheckForCompletedTasks() override;
- ResourceFormat GetResourceFormat() override;
+ ResourceFormat GetResourceFormat() const override;
+ bool GetResourceRequiresSwizzle() const override;
// Overridden from TileTaskClient:
scoped_ptr<RasterBuffer> AcquireBufferForRaster(
diff --git a/cc/raster/tile_task_runner.h b/cc/raster/tile_task_runner.h
index a4c7d88..9dffee4 100644
--- a/cc/raster/tile_task_runner.h
+++ b/cc/raster/tile_task_runner.h
@@ -163,7 +163,10 @@ class CC_EXPORT TileTaskRunner {
virtual void CheckForCompletedTasks() = 0;
// Returns the format to use for the tiles.
- virtual ResourceFormat GetResourceFormat() = 0;
+ virtual ResourceFormat GetResourceFormat() const = 0;
+
+ // Determine if the resource requires swizzling.
+ virtual bool GetResourceRequiresSwizzle() const = 0;
protected:
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 d42570a..64fc5f4 100644
--- a/cc/raster/zero_copy_tile_task_worker_pool.cc
+++ b/cc/raster/zero_copy_tile_task_worker_pool.cc
@@ -11,6 +11,7 @@
#include "base/trace_event/trace_event_argument.h"
#include "cc/debug/traced_value.h"
#include "cc/raster/raster_buffer.h"
+#include "cc/resources/platform_color.h"
#include "cc/resources/resource.h"
#include "ui/gfx/gpu_memory_buffer.h"
@@ -176,10 +177,14 @@ void ZeroCopyTileTaskWorkerPool::CheckForCompletedTasks() {
completed_tasks_.clear();
}
-ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat() {
+ResourceFormat ZeroCopyTileTaskWorkerPool::GetResourceFormat() const {
return resource_provider_->best_texture_format();
}
+bool ZeroCopyTileTaskWorkerPool::GetResourceRequiresSwizzle() const {
+ return !PlatformColor::SameComponentOrder(GetResourceFormat());
+}
+
scoped_ptr<RasterBuffer> ZeroCopyTileTaskWorkerPool::AcquireBufferForRaster(
const Resource* resource,
uint64_t resource_content_id,
diff --git a/cc/raster/zero_copy_tile_task_worker_pool.h b/cc/raster/zero_copy_tile_task_worker_pool.h
index 9714119..7dcdff0a 100644
--- a/cc/raster/zero_copy_tile_task_worker_pool.h
+++ b/cc/raster/zero_copy_tile_task_worker_pool.h
@@ -38,7 +38,8 @@ class CC_EXPORT ZeroCopyTileTaskWorkerPool : public TileTaskWorkerPool,
void Shutdown() override;
void ScheduleTasks(TileTaskQueue* queue) override;
void CheckForCompletedTasks() override;
- ResourceFormat GetResourceFormat() override;
+ ResourceFormat GetResourceFormat() const override;
+ bool GetResourceRequiresSwizzle() const override;
// Overridden from TileTaskClient:
scoped_ptr<RasterBuffer> AcquireBufferForRaster(