| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/test/layer_tree_pixel_resource_test.h" | 5 #include "cc/test/layer_tree_pixel_resource_test.h" |
| 6 | 6 |
| 7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
| 8 #include "cc/resources/bitmap_tile_task_worker_pool.h" | 8 #include "cc/resources/bitmap_tile_task_worker_pool.h" |
| 9 #include "cc/resources/gpu_rasterizer.h" |
| 9 #include "cc/resources/gpu_tile_task_worker_pool.h" | 10 #include "cc/resources/gpu_tile_task_worker_pool.h" |
| 10 #include "cc/resources/one_copy_tile_task_worker_pool.h" | 11 #include "cc/resources/one_copy_tile_task_worker_pool.h" |
| 11 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" | 12 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" |
| 12 #include "cc/resources/resource_pool.h" | 13 #include "cc/resources/resource_pool.h" |
| 14 #include "cc/resources/software_rasterizer.h" |
| 13 #include "cc/resources/tile_task_worker_pool.h" | 15 #include "cc/resources/tile_task_worker_pool.h" |
| 14 #include "cc/resources/zero_copy_tile_task_worker_pool.h" | 16 #include "cc/resources/zero_copy_tile_task_worker_pool.h" |
| 15 #include "cc/test/fake_output_surface.h" | 17 #include "cc/test/fake_output_surface.h" |
| 16 #include "gpu/GLES2/gl2extchromium.h" | 18 #include "gpu/GLES2/gl2extchromium.h" |
| 17 | 19 |
| 18 namespace cc { | 20 namespace cc { |
| 19 | 21 |
| 20 namespace { | 22 namespace { |
| 21 | 23 |
| 22 bool IsTestCaseSupported(PixelResourceTestCase test_case) { | 24 bool IsTestCaseSupported(PixelResourceTestCase test_case) { |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 draw_texture_target_ = GL_TEXTURE_2D; | 121 draw_texture_target_ = GL_TEXTURE_2D; |
| 120 resource_pool_option_ = PIXEL_BUFFER_TILE_TASK_WORKER_POOL; | 122 resource_pool_option_ = PIXEL_BUFFER_TILE_TASK_WORKER_POOL; |
| 121 return; | 123 return; |
| 122 } | 124 } |
| 123 NOTREACHED(); | 125 NOTREACHED(); |
| 124 } | 126 } |
| 125 | 127 |
| 126 void LayerTreeHostPixelResourceTest::CreateResourceAndTileTaskWorkerPool( | 128 void LayerTreeHostPixelResourceTest::CreateResourceAndTileTaskWorkerPool( |
| 127 LayerTreeHostImpl* host_impl, | 129 LayerTreeHostImpl* host_impl, |
| 128 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, | 130 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, |
| 131 scoped_ptr<Rasterizer>* rasterizer, |
| 129 scoped_ptr<ResourcePool>* resource_pool, | 132 scoped_ptr<ResourcePool>* resource_pool, |
| 130 scoped_ptr<ResourcePool>* staging_resource_pool) { | 133 scoped_ptr<ResourcePool>* staging_resource_pool) { |
| 131 base::SingleThreadTaskRunner* task_runner = | 134 base::SingleThreadTaskRunner* task_runner = |
| 132 proxy()->HasImplThread() ? proxy()->ImplThreadTaskRunner() | 135 proxy()->HasImplThread() ? proxy()->ImplThreadTaskRunner() |
| 133 : proxy()->MainThreadTaskRunner(); | 136 : proxy()->MainThreadTaskRunner(); |
| 134 DCHECK(task_runner); | 137 DCHECK(task_runner); |
| 135 DCHECK(initialized_); | 138 DCHECK(initialized_); |
| 136 | 139 |
| 137 ContextProvider* context_provider = | 140 ContextProvider* context_provider = |
| 138 host_impl->output_surface()->context_provider(); | 141 host_impl->output_surface()->context_provider(); |
| 139 ResourceProvider* resource_provider = host_impl->resource_provider(); | 142 ResourceProvider* resource_provider = host_impl->resource_provider(); |
| 140 bool use_distance_field_text = false; | 143 bool use_distance_field_text = false; |
| 141 size_t max_transfer_buffer_usage_bytes = 1024u * 1024u * 60u; | 144 size_t max_transfer_buffer_usage_bytes = 1024u * 1024u * 60u; |
| 142 | 145 |
| 143 switch (resource_pool_option_) { | 146 switch (resource_pool_option_) { |
| 144 case BITMAP_TILE_TASK_WORKER_POOL: | 147 case BITMAP_TILE_TASK_WORKER_POOL: |
| 145 EXPECT_FALSE(context_provider); | 148 EXPECT_FALSE(context_provider); |
| 146 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); | 149 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); |
| 147 *resource_pool = | 150 *resource_pool = |
| 148 ResourcePool::Create(resource_provider, | 151 ResourcePool::Create(resource_provider, |
| 149 draw_texture_target_, | 152 draw_texture_target_, |
| 150 resource_provider->best_texture_format()); | 153 resource_provider->best_texture_format()); |
| 151 | 154 |
| 152 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create( | 155 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create( |
| 153 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), | 156 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
| 154 resource_provider); | 157 resource_provider); |
| 158 |
| 159 *rasterizer = SoftwareRasterizer::Create(); |
| 155 break; | 160 break; |
| 156 case GPU_TILE_TASK_WORKER_POOL: | 161 case GPU_TILE_TASK_WORKER_POOL: |
| 157 EXPECT_TRUE(context_provider); | 162 EXPECT_TRUE(context_provider); |
| 158 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 163 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
| 159 *resource_pool = | 164 *resource_pool = |
| 160 ResourcePool::Create(resource_provider, | 165 ResourcePool::Create(resource_provider, |
| 161 draw_texture_target_, | 166 draw_texture_target_, |
| 162 resource_provider->best_texture_format()); | 167 resource_provider->best_texture_format()); |
| 163 | 168 |
| 164 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create( | 169 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create( |
| 165 task_runner, context_provider, resource_provider, | 170 task_runner, TileTaskWorkerPool::GetTaskGraphRunner()); |
| 166 use_distance_field_text); | 171 |
| 172 *rasterizer = GpuRasterizer::Create(context_provider, resource_provider, |
| 173 use_distance_field_text, false); |
| 167 break; | 174 break; |
| 168 case ZERO_COPY_TILE_TASK_WORKER_POOL: | 175 case ZERO_COPY_TILE_TASK_WORKER_POOL: |
| 169 EXPECT_TRUE(context_provider); | 176 EXPECT_TRUE(context_provider); |
| 170 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 177 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
| 171 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); | 178 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); |
| 172 *resource_pool = | 179 *resource_pool = |
| 173 ResourcePool::Create(resource_provider, | 180 ResourcePool::Create(resource_provider, |
| 174 draw_texture_target_, | 181 draw_texture_target_, |
| 175 resource_provider->best_texture_format()); | 182 resource_provider->best_texture_format()); |
| 176 | 183 |
| 177 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create( | 184 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create( |
| 178 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), | 185 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
| 179 resource_provider); | 186 resource_provider); |
| 187 |
| 188 *rasterizer = SoftwareRasterizer::Create(); |
| 180 break; | 189 break; |
| 181 case ONE_COPY_TILE_TASK_WORKER_POOL: | 190 case ONE_COPY_TILE_TASK_WORKER_POOL: |
| 182 EXPECT_TRUE(context_provider); | 191 EXPECT_TRUE(context_provider); |
| 183 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 192 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
| 184 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); | 193 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); |
| 185 // We need to create a staging resource pool when using copy rasterizer. | 194 // We need to create a staging resource pool when using copy rasterizer. |
| 186 *staging_resource_pool = | 195 *staging_resource_pool = |
| 187 ResourcePool::Create(resource_provider, | 196 ResourcePool::Create(resource_provider, |
| 188 staging_texture_target_, | 197 staging_texture_target_, |
| 189 resource_provider->best_texture_format()); | 198 resource_provider->best_texture_format()); |
| 190 *resource_pool = | 199 *resource_pool = |
| 191 ResourcePool::Create(resource_provider, | 200 ResourcePool::Create(resource_provider, |
| 192 draw_texture_target_, | 201 draw_texture_target_, |
| 193 resource_provider->best_texture_format()); | 202 resource_provider->best_texture_format()); |
| 194 | 203 |
| 195 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create( | 204 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create( |
| 196 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), | 205 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
| 197 context_provider, resource_provider, staging_resource_pool->get()); | 206 context_provider, resource_provider, staging_resource_pool->get()); |
| 207 |
| 208 *rasterizer = SoftwareRasterizer::Create(); |
| 198 break; | 209 break; |
| 199 case PIXEL_BUFFER_TILE_TASK_WORKER_POOL: | 210 case PIXEL_BUFFER_TILE_TASK_WORKER_POOL: |
| 200 EXPECT_TRUE(context_provider); | 211 EXPECT_TRUE(context_provider); |
| 201 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 212 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
| 202 *resource_pool = ResourcePool::Create( | 213 *resource_pool = ResourcePool::Create( |
| 203 resource_provider, | 214 resource_provider, |
| 204 draw_texture_target_, | 215 draw_texture_target_, |
| 205 resource_provider->memory_efficient_texture_format()); | 216 resource_provider->memory_efficient_texture_format()); |
| 206 | 217 |
| 207 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create( | 218 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create( |
| 208 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), | 219 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
| 209 context_provider, resource_provider, max_transfer_buffer_usage_bytes); | 220 context_provider, resource_provider, max_transfer_buffer_usage_bytes); |
| 221 |
| 222 *rasterizer = SoftwareRasterizer::Create(); |
| 210 break; | 223 break; |
| 211 } | 224 } |
| 212 } | 225 } |
| 213 | 226 |
| 214 void LayerTreeHostPixelResourceTest::RunPixelResourceTest( | 227 void LayerTreeHostPixelResourceTest::RunPixelResourceTest( |
| 215 scoped_refptr<Layer> content_root, | 228 scoped_refptr<Layer> content_root, |
| 216 base::FilePath file_name) { | 229 base::FilePath file_name) { |
| 217 if (!IsTestCaseSupported(test_case_)) | 230 if (!IsTestCaseSupported(test_case_)) |
| 218 return; | 231 return; |
| 219 RunPixelTest(test_type_, content_root, file_name); | 232 RunPixelTest(test_type_, content_root, file_name); |
| 220 | 233 |
| 221 if (layer_tree_host()) | 234 if (layer_tree_host()) |
| 222 EXPECT_TRUE(layer_tree_host()->settings().impl_side_painting); | 235 EXPECT_TRUE(layer_tree_host()->settings().impl_side_painting); |
| 223 } | 236 } |
| 224 | 237 |
| 225 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() | 238 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() |
| 226 : LayerTreeHostPixelResourceTest(GetParam()) { | 239 : LayerTreeHostPixelResourceTest(GetParam()) { |
| 227 } | 240 } |
| 228 | 241 |
| 229 } // namespace cc | 242 } // namespace cc |
| OLD | NEW |