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_raster_worker_pool.h" | 8 #include "cc/resources/bitmap_tile_task_worker_pool.h" |
9 #include "cc/resources/gpu_raster_worker_pool.h" | 9 #include "cc/resources/gpu_tile_task_worker_pool.h" |
10 #include "cc/resources/one_copy_raster_worker_pool.h" | 10 #include "cc/resources/one_copy_tile_task_worker_pool.h" |
11 #include "cc/resources/pixel_buffer_raster_worker_pool.h" | 11 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" |
12 #include "cc/resources/raster_worker_pool.h" | |
13 #include "cc/resources/resource_pool.h" | 12 #include "cc/resources/resource_pool.h" |
14 #include "cc/resources/zero_copy_raster_worker_pool.h" | 13 #include "cc/resources/tile_task_worker_pool.h" |
| 14 #include "cc/resources/zero_copy_tile_task_worker_pool.h" |
15 #include "cc/test/fake_output_surface.h" | 15 #include "cc/test/fake_output_surface.h" |
16 #include "gpu/GLES2/gl2extchromium.h" | 16 #include "gpu/GLES2/gl2extchromium.h" |
17 | 17 |
18 namespace cc { | 18 namespace cc { |
19 | 19 |
20 namespace { | 20 namespace { |
21 | 21 |
22 bool IsTestCaseSupported(PixelResourceTestCase test_case) { | 22 bool IsTestCaseSupported(PixelResourceTestCase test_case) { |
23 switch (test_case) { | 23 switch (test_case) { |
24 case SOFTWARE: | 24 case SOFTWARE: |
(...skipping 14 matching lines...) Expand all Loading... |
39 NOTREACHED(); | 39 NOTREACHED(); |
40 return false; | 40 return false; |
41 } | 41 } |
42 | 42 |
43 } // namespace | 43 } // namespace |
44 | 44 |
45 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest( | 45 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest( |
46 PixelResourceTestCase test_case) | 46 PixelResourceTestCase test_case) |
47 : staging_texture_target_(GL_INVALID_VALUE), | 47 : staging_texture_target_(GL_INVALID_VALUE), |
48 draw_texture_target_(GL_INVALID_VALUE), | 48 draw_texture_target_(GL_INVALID_VALUE), |
49 resource_pool_option_(BITMAP_RASTER_WORKER_POOL), | 49 resource_pool_option_(BITMAP_TILE_TASK_WORKER_POOL), |
50 test_case_(test_case) { | 50 test_case_(test_case) { |
51 InitializeFromTestCase(test_case); | 51 InitializeFromTestCase(test_case); |
52 } | 52 } |
53 | 53 |
54 void LayerTreeHostPixelResourceTest::InitializeFromTestCase( | 54 void LayerTreeHostPixelResourceTest::InitializeFromTestCase( |
55 PixelResourceTestCase test_case) { | 55 PixelResourceTestCase test_case) { |
56 switch (test_case) { | 56 switch (test_case) { |
57 case SOFTWARE: | 57 case SOFTWARE: |
58 test_type_ = PIXEL_TEST_SOFTWARE; | 58 test_type_ = PIXEL_TEST_SOFTWARE; |
59 staging_texture_target_ = GL_INVALID_VALUE; | 59 staging_texture_target_ = GL_INVALID_VALUE; |
60 draw_texture_target_ = GL_INVALID_VALUE; | 60 draw_texture_target_ = GL_INVALID_VALUE; |
61 resource_pool_option_ = BITMAP_RASTER_WORKER_POOL; | 61 resource_pool_option_ = BITMAP_TILE_TASK_WORKER_POOL; |
62 return; | 62 return; |
63 case GL_GPU_RASTER_2D_DRAW: | 63 case GL_GPU_RASTER_2D_DRAW: |
64 test_type_ = PIXEL_TEST_GL; | 64 test_type_ = PIXEL_TEST_GL; |
65 staging_texture_target_ = GL_INVALID_VALUE; | 65 staging_texture_target_ = GL_INVALID_VALUE; |
66 draw_texture_target_ = GL_TEXTURE_2D; | 66 draw_texture_target_ = GL_TEXTURE_2D; |
67 resource_pool_option_ = GPU_RASTER_WORKER_POOL; | 67 resource_pool_option_ = GPU_TILE_TASK_WORKER_POOL; |
68 return; | 68 return; |
69 case GL_ONE_COPY_2D_STAGING_2D_DRAW: | 69 case GL_ONE_COPY_2D_STAGING_2D_DRAW: |
70 test_type_ = PIXEL_TEST_GL; | 70 test_type_ = PIXEL_TEST_GL; |
71 staging_texture_target_ = GL_TEXTURE_2D; | 71 staging_texture_target_ = GL_TEXTURE_2D; |
72 draw_texture_target_ = GL_TEXTURE_2D; | 72 draw_texture_target_ = GL_TEXTURE_2D; |
73 resource_pool_option_ = ONE_COPY_RASTER_WORKER_POOL; | 73 resource_pool_option_ = ONE_COPY_TILE_TASK_WORKER_POOL; |
74 return; | 74 return; |
75 case GL_ONE_COPY_RECT_STAGING_2D_DRAW: | 75 case GL_ONE_COPY_RECT_STAGING_2D_DRAW: |
76 test_type_ = PIXEL_TEST_GL; | 76 test_type_ = PIXEL_TEST_GL; |
77 staging_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; | 77 staging_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; |
78 draw_texture_target_ = GL_TEXTURE_2D; | 78 draw_texture_target_ = GL_TEXTURE_2D; |
79 resource_pool_option_ = ONE_COPY_RASTER_WORKER_POOL; | 79 resource_pool_option_ = ONE_COPY_TILE_TASK_WORKER_POOL; |
80 return; | 80 return; |
81 case GL_ONE_COPY_EXTERNAL_STAGING_2D_DRAW: | 81 case GL_ONE_COPY_EXTERNAL_STAGING_2D_DRAW: |
82 test_type_ = PIXEL_TEST_GL; | 82 test_type_ = PIXEL_TEST_GL; |
83 staging_texture_target_ = GL_TEXTURE_EXTERNAL_OES; | 83 staging_texture_target_ = GL_TEXTURE_EXTERNAL_OES; |
84 draw_texture_target_ = GL_TEXTURE_2D; | 84 draw_texture_target_ = GL_TEXTURE_2D; |
85 resource_pool_option_ = ONE_COPY_RASTER_WORKER_POOL; | 85 resource_pool_option_ = ONE_COPY_TILE_TASK_WORKER_POOL; |
86 return; | 86 return; |
87 case GL_ZERO_COPY_2D_DRAW: | 87 case GL_ZERO_COPY_2D_DRAW: |
88 test_type_ = PIXEL_TEST_GL; | 88 test_type_ = PIXEL_TEST_GL; |
89 staging_texture_target_ = GL_INVALID_VALUE; | 89 staging_texture_target_ = GL_INVALID_VALUE; |
90 draw_texture_target_ = GL_TEXTURE_2D; | 90 draw_texture_target_ = GL_TEXTURE_2D; |
91 resource_pool_option_ = ZERO_COPY_RASTER_WORKER_POOL; | 91 resource_pool_option_ = ZERO_COPY_TILE_TASK_WORKER_POOL; |
92 return; | 92 return; |
93 case GL_ZERO_COPY_RECT_DRAW: | 93 case GL_ZERO_COPY_RECT_DRAW: |
94 test_type_ = PIXEL_TEST_GL; | 94 test_type_ = PIXEL_TEST_GL; |
95 staging_texture_target_ = GL_INVALID_VALUE; | 95 staging_texture_target_ = GL_INVALID_VALUE; |
96 draw_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; | 96 draw_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; |
97 resource_pool_option_ = ZERO_COPY_RASTER_WORKER_POOL; | 97 resource_pool_option_ = ZERO_COPY_TILE_TASK_WORKER_POOL; |
98 return; | 98 return; |
99 case GL_ZERO_COPY_EXTERNAL_DRAW: | 99 case GL_ZERO_COPY_EXTERNAL_DRAW: |
100 test_type_ = PIXEL_TEST_GL; | 100 test_type_ = PIXEL_TEST_GL; |
101 staging_texture_target_ = GL_INVALID_VALUE; | 101 staging_texture_target_ = GL_INVALID_VALUE; |
102 draw_texture_target_ = GL_TEXTURE_EXTERNAL_OES; | 102 draw_texture_target_ = GL_TEXTURE_EXTERNAL_OES; |
103 resource_pool_option_ = ZERO_COPY_RASTER_WORKER_POOL; | 103 resource_pool_option_ = ZERO_COPY_TILE_TASK_WORKER_POOL; |
104 return; | 104 return; |
105 case GL_ASYNC_UPLOAD_2D_DRAW: | 105 case GL_ASYNC_UPLOAD_2D_DRAW: |
106 test_type_ = PIXEL_TEST_GL; | 106 test_type_ = PIXEL_TEST_GL; |
107 staging_texture_target_ = GL_INVALID_VALUE; | 107 staging_texture_target_ = GL_INVALID_VALUE; |
108 draw_texture_target_ = GL_TEXTURE_2D; | 108 draw_texture_target_ = GL_TEXTURE_2D; |
109 resource_pool_option_ = PIXEL_BUFFER_RASTER_WORKER_POOL; | 109 resource_pool_option_ = PIXEL_BUFFER_TILE_TASK_WORKER_POOL; |
110 return; | 110 return; |
111 } | 111 } |
112 NOTREACHED(); | 112 NOTREACHED(); |
113 } | 113 } |
114 | 114 |
115 void LayerTreeHostPixelResourceTest::CreateResourceAndRasterWorkerPool( | 115 void LayerTreeHostPixelResourceTest::CreateResourceAndTileTaskWorkerPool( |
116 LayerTreeHostImpl* host_impl, | 116 LayerTreeHostImpl* host_impl, |
117 scoped_ptr<RasterWorkerPool>* raster_worker_pool, | 117 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, |
118 scoped_ptr<ResourcePool>* resource_pool, | 118 scoped_ptr<ResourcePool>* resource_pool, |
119 scoped_ptr<ResourcePool>* staging_resource_pool) { | 119 scoped_ptr<ResourcePool>* staging_resource_pool) { |
120 base::SingleThreadTaskRunner* task_runner = | 120 base::SingleThreadTaskRunner* task_runner = |
121 proxy()->HasImplThread() ? proxy()->ImplThreadTaskRunner() | 121 proxy()->HasImplThread() ? proxy()->ImplThreadTaskRunner() |
122 : proxy()->MainThreadTaskRunner(); | 122 : proxy()->MainThreadTaskRunner(); |
123 DCHECK(task_runner); | 123 DCHECK(task_runner); |
124 | 124 |
125 ContextProvider* context_provider = | 125 ContextProvider* context_provider = |
126 host_impl->output_surface()->context_provider(); | 126 host_impl->output_surface()->context_provider(); |
127 ResourceProvider* resource_provider = host_impl->resource_provider(); | 127 ResourceProvider* resource_provider = host_impl->resource_provider(); |
128 bool use_distance_field_text = false; | 128 bool use_distance_field_text = false; |
129 size_t max_transfer_buffer_usage_bytes = 1024u * 1024u * 60u; | 129 size_t max_transfer_buffer_usage_bytes = 1024u * 1024u * 60u; |
130 | 130 |
131 switch (resource_pool_option_) { | 131 switch (resource_pool_option_) { |
132 case BITMAP_RASTER_WORKER_POOL: | 132 case BITMAP_TILE_TASK_WORKER_POOL: |
133 EXPECT_FALSE(context_provider); | 133 EXPECT_FALSE(context_provider); |
134 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); | 134 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); |
135 *resource_pool = | 135 *resource_pool = |
136 ResourcePool::Create(resource_provider, | 136 ResourcePool::Create(resource_provider, |
137 draw_texture_target_, | 137 draw_texture_target_, |
138 resource_provider->best_texture_format()); | 138 resource_provider->best_texture_format()); |
139 | 139 |
140 *raster_worker_pool = | 140 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create( |
141 BitmapRasterWorkerPool::Create(task_runner, | 141 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
142 RasterWorkerPool::GetTaskGraphRunner(), | 142 resource_provider); |
143 resource_provider); | |
144 break; | 143 break; |
145 case GPU_RASTER_WORKER_POOL: | 144 case GPU_TILE_TASK_WORKER_POOL: |
146 EXPECT_TRUE(context_provider); | 145 EXPECT_TRUE(context_provider); |
147 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 146 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
148 *resource_pool = | 147 *resource_pool = |
149 ResourcePool::Create(resource_provider, | 148 ResourcePool::Create(resource_provider, |
150 draw_texture_target_, | 149 draw_texture_target_, |
151 resource_provider->best_texture_format()); | 150 resource_provider->best_texture_format()); |
152 | 151 |
153 *raster_worker_pool = | 152 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create( |
154 GpuRasterWorkerPool::Create(task_runner, | 153 task_runner, context_provider, resource_provider, |
155 context_provider, | 154 use_distance_field_text); |
156 resource_provider, | |
157 use_distance_field_text); | |
158 break; | 155 break; |
159 case ZERO_COPY_RASTER_WORKER_POOL: | 156 case ZERO_COPY_TILE_TASK_WORKER_POOL: |
160 EXPECT_TRUE(context_provider); | 157 EXPECT_TRUE(context_provider); |
161 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 158 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
162 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); | 159 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); |
163 *resource_pool = | 160 *resource_pool = |
164 ResourcePool::Create(resource_provider, | 161 ResourcePool::Create(resource_provider, |
165 draw_texture_target_, | 162 draw_texture_target_, |
166 resource_provider->best_texture_format()); | 163 resource_provider->best_texture_format()); |
167 | 164 |
168 *raster_worker_pool = ZeroCopyRasterWorkerPool::Create( | 165 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create( |
169 task_runner, | 166 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
170 RasterWorkerPool::GetTaskGraphRunner(), | |
171 resource_provider); | 167 resource_provider); |
172 break; | 168 break; |
173 case ONE_COPY_RASTER_WORKER_POOL: | 169 case ONE_COPY_TILE_TASK_WORKER_POOL: |
174 EXPECT_TRUE(context_provider); | 170 EXPECT_TRUE(context_provider); |
175 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 171 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
176 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); | 172 EXPECT_TRUE(host_impl->GetRendererCapabilities().using_image); |
177 // We need to create a staging resource pool when using copy rasterizer. | 173 // We need to create a staging resource pool when using copy rasterizer. |
178 *staging_resource_pool = | 174 *staging_resource_pool = |
179 ResourcePool::Create(resource_provider, | 175 ResourcePool::Create(resource_provider, |
180 staging_texture_target_, | 176 staging_texture_target_, |
181 resource_provider->best_texture_format()); | 177 resource_provider->best_texture_format()); |
182 *resource_pool = | 178 *resource_pool = |
183 ResourcePool::Create(resource_provider, | 179 ResourcePool::Create(resource_provider, |
184 draw_texture_target_, | 180 draw_texture_target_, |
185 resource_provider->best_texture_format()); | 181 resource_provider->best_texture_format()); |
186 | 182 |
187 *raster_worker_pool = OneCopyRasterWorkerPool::Create( | 183 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create( |
188 task_runner, | 184 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
189 RasterWorkerPool::GetTaskGraphRunner(), | 185 context_provider, resource_provider, staging_resource_pool->get()); |
190 context_provider, | |
191 resource_provider, | |
192 staging_resource_pool->get()); | |
193 break; | 186 break; |
194 case PIXEL_BUFFER_RASTER_WORKER_POOL: | 187 case PIXEL_BUFFER_TILE_TASK_WORKER_POOL: |
195 EXPECT_TRUE(context_provider); | 188 EXPECT_TRUE(context_provider); |
196 EXPECT_EQ(PIXEL_TEST_GL, test_type_); | 189 EXPECT_EQ(PIXEL_TEST_GL, test_type_); |
197 *resource_pool = ResourcePool::Create( | 190 *resource_pool = ResourcePool::Create( |
198 resource_provider, | 191 resource_provider, |
199 draw_texture_target_, | 192 draw_texture_target_, |
200 resource_provider->memory_efficient_texture_format()); | 193 resource_provider->memory_efficient_texture_format()); |
201 | 194 |
202 *raster_worker_pool = PixelBufferRasterWorkerPool::Create( | 195 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create( |
203 task_runner, | 196 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), |
204 RasterWorkerPool::GetTaskGraphRunner(), | 197 context_provider, resource_provider, max_transfer_buffer_usage_bytes); |
205 context_provider, | |
206 resource_provider, | |
207 max_transfer_buffer_usage_bytes); | |
208 break; | 198 break; |
209 } | 199 } |
210 } | 200 } |
211 | 201 |
212 void LayerTreeHostPixelResourceTest::RunPixelResourceTest( | 202 void LayerTreeHostPixelResourceTest::RunPixelResourceTest( |
213 scoped_refptr<Layer> content_root, | 203 scoped_refptr<Layer> content_root, |
214 base::FilePath file_name) { | 204 base::FilePath file_name) { |
215 if (!IsTestCaseSupported(test_case_)) | 205 if (!IsTestCaseSupported(test_case_)) |
216 return; | 206 return; |
217 RunPixelTest(test_type_, content_root, file_name); | 207 RunPixelTest(test_type_, content_root, file_name); |
218 } | 208 } |
219 | 209 |
220 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() | 210 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() |
221 : LayerTreeHostPixelResourceTest(GetParam()) { | 211 : LayerTreeHostPixelResourceTest(GetParam()) { |
222 } | 212 } |
223 | 213 |
224 } // namespace cc | 214 } // namespace cc |
OLD | NEW |