Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: cc/test/layer_tree_pixel_resource_test.cc

Issue 820743002: cc: GPU rasterize tiles synchronously in PrepareToDraw. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format and merge Created 5 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698