summaryrefslogtreecommitdiff
path: root/chromium/cc/resources/tile_manager.cc
diff options
context:
space:
mode:
authorreveman@chromium.org <reveman@chromium.org>2014-02-11 01:56:37 +0000
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-06-13 17:09:37 +0200
commit66ec79d38fe3a0958ace8c131df64c1c9e0dc3ec (patch)
treeba8a6eb0ecef688ec0d2c99db4e38c77d7f0ad30 /chromium/cc/resources/tile_manager.cc
parenta95f019bf395b7fbd21299652d4aaf2f4d233dec (diff)
downloadqtwebengine-chromium-66ec79d38fe3a0958ace8c131df64c1c9e0dc3ec.tar.gz
[Backport] cc: Prevent usage of rasterize on-demand with delegating renderer.33.0.1750.149-based
PictureDrawQuads are not yet supported by the delegating renderer. Generating this type of quads for on-demand raster of tiles cause invalid IPC to be sent to the parent compositor and the renderer to be killed. This makes us activate with low-res or checkerboard tiles until PictureDrawQuads are properly supported by the delegating renderer. BUG=340695 TEST=cc_unittests --gtest_filter=*RasterizeOnDemand* Review URL: https://codereview.chromium.org/157743007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250273 0039d316-1c4b-4281-b951-d872f2087c98 Conflicts: cc/resources/tile_manager.cc Change-Id: I9a08cc770d97d297c71dec88f3fdb878208d21ac Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'chromium/cc/resources/tile_manager.cc')
-rw-r--r--chromium/cc/resources/tile_manager.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/chromium/cc/resources/tile_manager.cc b/chromium/cc/resources/tile_manager.cc
index 2fbb6d18913..58a697312ad 100644
--- a/chromium/cc/resources/tile_manager.cc
+++ b/chromium/cc/resources/tile_manager.cc
@@ -170,6 +170,7 @@ scoped_ptr<TileManager> TileManager::Create(
size_t num_raster_threads,
RenderingStatsInstrumentation* rendering_stats_instrumentation,
bool use_map_image,
+ bool use_rasterize_on_demand,
size_t max_transfer_buffer_usage_bytes,
size_t max_raster_usage_bytes,
GLenum map_image_texture_target) {
@@ -187,7 +188,8 @@ scoped_ptr<TileManager> TileManager::Create(
max_transfer_buffer_usage_bytes),
num_raster_threads,
max_raster_usage_bytes,
- rendering_stats_instrumentation));
+ rendering_stats_instrumentation,
+ use_rasterize_on_demand));
}
TileManager::TileManager(
@@ -196,7 +198,8 @@ TileManager::TileManager(
scoped_ptr<RasterWorkerPool> raster_worker_pool,
size_t num_raster_threads,
size_t max_raster_usage_bytes,
- RenderingStatsInstrumentation* rendering_stats_instrumentation)
+ RenderingStatsInstrumentation* rendering_stats_instrumentation,
+ bool use_rasterize_on_demand)
: client_(client),
resource_pool_(ResourcePool::Create(
resource_provider,
@@ -214,7 +217,8 @@ TileManager::TileManager(
ever_exceeded_memory_budget_(false),
rendering_stats_instrumentation_(rendering_stats_instrumentation),
did_initialize_visible_tile_(false),
- did_check_for_completed_tasks_since_last_schedule_tasks_(true) {
+ did_check_for_completed_tasks_since_last_schedule_tasks_(true),
+ use_rasterize_on_demand_(use_rasterize_on_demand) {
raster_worker_pool_->SetClient(this);
}
@@ -328,7 +332,8 @@ void TileManager::DidFinishRunningTasks() {
// If we can't raster on demand, give up early (and don't activate).
if (!allow_rasterize_on_demand)
return;
- tile_version.set_rasterize_on_demand();
+ if (use_rasterize_on_demand_)
+ tile_version.set_rasterize_on_demand();
}
}
@@ -706,7 +711,7 @@ void TileManager::AssignGpuMemoryToTiles(
// This tile was already on screen and now its resources have been
// released. In order to prevent checkerboarding, set this tile as
// rasterize on demand immediately.
- if (mts.visible_and_ready_to_draw)
+ if (mts.visible_and_ready_to_draw && use_rasterize_on_demand_)
tile_version.set_rasterize_on_demand();
oomed = true;