diff options
author | reveman@chromium.org <reveman@chromium.org> | 2014-02-11 01:56:37 +0000 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-06-13 17:09:37 +0200 |
commit | 66ec79d38fe3a0958ace8c131df64c1c9e0dc3ec (patch) | |
tree | ba8a6eb0ecef688ec0d2c99db4e38c77d7f0ad30 /chromium/cc/resources/tile_manager.cc | |
parent | a95f019bf395b7fbd21299652d4aaf2f4d233dec (diff) | |
download | qtwebengine-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.cc | 15 |
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; |