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

Side by Side Diff: cc/output/renderer_pixeltest.cc

Issue 12157002: Adding YUVA support for enabling Alpha Playback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase and pixel tests for YUV and YUVA Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/message_loop.h" 5 #include "base/message_loop.h"
6 #include "cc/layers/append_quads_data.h" 6 #include "cc/layers/append_quads_data.h"
7 #include "cc/output/gl_renderer.h" 7 #include "cc/output/gl_renderer.h"
8 #include "cc/quads/draw_quad.h" 8 #include "cc/quads/draw_quad.h"
9 #include "cc/quads/picture_draw_quad.h" 9 #include "cc/quads/picture_draw_quad.h"
10 #include "cc/resources/platform_color.h" 10 #include "cc/resources/platform_color.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 pass_list.push_back(child_pass.Pass()); 200 pass_list.push_back(child_pass.Pass());
201 pass_list.push_back(root_pass.Pass()); 201 pass_list.push_back(root_pass.Pass());
202 202
203 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget( 203 EXPECT_TRUE(this->RunPixelTestWithReadbackTarget(
204 &pass_list, 204 &pass_list,
205 child_pass_ptr, 205 child_pass_ptr,
206 base::FilePath(FILE_PATH_LITERAL("green_small.png")), 206 base::FilePath(FILE_PATH_LITERAL("green_small.png")),
207 ExactPixelComparator(true))); 207 ExactPixelComparator(true)));
208 } 208 }
209 209
210 TEST_F(GLRendererPixelTest, SimpleYUVRect) {
211 gfx::Rect rect(this->device_viewport_size_);
212 gfx::Rect opaque_rect(0, 0, 0, 0);
213
214 RenderPass::Id id(1, 1);
215 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
216
217 scoped_ptr<SharedQuadState> shared_state =
218 CreateTestSharedQuadState(gfx::Transform(), rect);
219
220 ResourceProvider::ResourceId y_resource =
221 cc::PixelTest::resource_provider_->CreateResource(
enne (OOO) 2013/05/30 23:52:54 cc::PixelTest::resource_provider_ => this->resourc
vignesh 2013/05/31 19:49:37 Done.
222 this->device_viewport_size_,
223 GL_RGBA,
224 ResourceProvider::TextureUsageAny);
225 ResourceProvider::ResourceId u_resource =
226 cc::PixelTest::resource_provider_->CreateResource(
227 this->device_viewport_size_,
228 GL_RGBA,
229 ResourceProvider::TextureUsageAny);
230 ResourceProvider::ResourceId v_resource =
231 cc::PixelTest::resource_provider_->CreateResource(
232 this->device_viewport_size_,
233 GL_RGBA,
234 ResourceProvider::TextureUsageAny);
235
236 int w = this->device_viewport_size_.width();
237 int h = this->device_viewport_size_.height();
238 uint8_t* y_plane = new uint8_t[w * h];
enne (OOO) 2013/05/30 23:52:54 Please use a scoped_ptr for any memory ownership:
vignesh 2013/05/31 19:49:37 Done.
239 uint8_t* u_plane = new uint8_t[(w / 2) * (h / 2)];
enne (OOO) 2013/05/30 23:52:54 Can you put this repeated expression in a temporar
vignesh 2013/05/31 19:49:37 Done.
240 uint8_t* v_plane = new uint8_t[(w / 2) * (h / 2)];
241 // YUV values representing Green.
242 memset(y_plane, 149, w * h);
243 memset(u_plane, 43, (w / 2) * (h / 2));
244 memset(v_plane, 21, (w / 2) * (h / 2));
245
246 cc::PixelTest::resource_provider_->SetPixels(y_resource, y_plane, rect, rect,
247 gfx::Vector2d());
248 cc::PixelTest::resource_provider_->SetPixels(u_resource, u_plane, rect, rect,
249 gfx::Vector2d());
250 cc::PixelTest::resource_provider_->SetPixels(v_resource, v_plane, rect, rect,
251 gfx::Vector2d());
252
253 scoped_ptr<cc::YUVVideoDrawQuad> yuv_quad = cc::YUVVideoDrawQuad::Create();
254 yuv_quad->SetNew(shared_state.get(), rect, opaque_rect, gfx::Size(0, 0),
enne (OOO) 2013/05/30 23:52:54 style nit: gfx::Size(), here and elsewhere
vignesh 2013/05/31 19:49:37 Done.
255 y_resource, u_resource, v_resource, 0);
256
257 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>());
258
259 RenderPassList pass_list;
260 pass_list.push_back(pass.Pass());
261
262 delete[] y_plane;
263 delete[] u_plane;
264 delete[] v_plane;
265
266 EXPECT_TRUE(this->RunPixelTest(
267 &pass_list,
268 base::FilePath(FILE_PATH_LITERAL("green.png")),
269 ExactPixelComparator(true)));
270 }
271
272 TEST_F(GLRendererPixelTest, SimpleYUVARect) {
273 gfx::Rect rect(this->device_viewport_size_);
274 gfx::Rect opaque_rect(0, 0, 0, 0);
275
276 RenderPass::Id id(1, 1);
277 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
278
279 scoped_ptr<SharedQuadState> shared_state =
280 CreateTestSharedQuadState(gfx::Transform(), rect);
281
282 ResourceProvider::ResourceId y_resource =
enne (OOO) 2013/05/30 23:52:54 There's a lot of repeated code between these two t
vignesh 2013/05/31 19:49:37 Done.
283 cc::PixelTest::resource_provider_->CreateResource(
284 this->device_viewport_size_,
285 GL_RGBA,
286 ResourceProvider::TextureUsageAny);
287 ResourceProvider::ResourceId u_resource =
288 cc::PixelTest::resource_provider_->CreateResource(
289 this->device_viewport_size_,
290 GL_RGBA,
291 ResourceProvider::TextureUsageAny);
292 ResourceProvider::ResourceId v_resource =
293 cc::PixelTest::resource_provider_->CreateResource(
294 this->device_viewport_size_,
295 GL_RGBA,
296 ResourceProvider::TextureUsageAny);
297 ResourceProvider::ResourceId a_resource =
298 cc::PixelTest::resource_provider_->CreateResource(
299 this->device_viewport_size_,
300 GL_RGBA,
301 ResourceProvider::TextureUsageAny);
302
303 int w = this->device_viewport_size_.width();
304 int h = this->device_viewport_size_.height();
305 uint8_t* y_plane = new uint8_t[w * h];
306 uint8_t* u_plane = new uint8_t[(w / 2) * (h / 2)];
307 uint8_t* v_plane = new uint8_t[(w / 2) * (h / 2)];
308 uint8_t* a_plane = new uint8_t[w * h];
309 // YUV values representing Green.
310 memset(y_plane, 149, w * h);
311 memset(u_plane, 43, (w / 2) * (h / 2));
312 memset(v_plane, 21, (w / 2) * (h / 2));
313 memset(a_plane, 128, (w / 2) * (h / 2));
314
315 cc::PixelTest::resource_provider_->SetPixels(y_resource, y_plane, rect, rect,
316 gfx::Vector2d());
317 cc::PixelTest::resource_provider_->SetPixels(u_resource, u_plane, rect, rect,
318 gfx::Vector2d());
319 cc::PixelTest::resource_provider_->SetPixels(v_resource, v_plane, rect, rect,
320 gfx::Vector2d());
321 cc::PixelTest::resource_provider_->SetPixels(a_resource, a_plane, rect, rect,
322 gfx::Vector2d());
323
324 scoped_ptr<cc::YUVVideoDrawQuad> yuv_quad = cc::YUVVideoDrawQuad::Create();
325 yuv_quad->SetNew(shared_state.get(), rect, opaque_rect, gfx::Size(0, 0),
326 y_resource, u_resource, v_resource, a_resource);
327
328 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>());
329
330 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
331 color_quad->SetNew(shared_state.get(), rect, SK_ColorWHITE, false);
332
333 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
334
335 RenderPassList pass_list;
336 pass_list.push_back(pass.Pass());
337
338 delete[] y_plane;
339 delete[] u_plane;
340 delete[] v_plane;
341 delete[] a_plane;
342
343 EXPECT_TRUE(this->RunPixelTest(
344 &pass_list,
345 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")),
346 ExactPixelComparator(true)));
347 }
348
210 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) { 349 TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) {
211 gfx::Rect viewport_rect(this->device_viewport_size_); 350 gfx::Rect viewport_rect(this->device_viewport_size_);
212 351
213 RenderPass::Id root_pass_id(1, 1); 352 RenderPass::Id root_pass_id(1, 1);
214 scoped_ptr<RenderPass> root_pass = 353 scoped_ptr<RenderPass> root_pass =
215 CreateTestRootRenderPass(root_pass_id, viewport_rect); 354 CreateTestRootRenderPass(root_pass_id, viewport_rect);
216 355
217 RenderPass::Id child_pass_id(2, 2); 356 RenderPass::Id child_pass_id(2, 2);
218 gfx::Rect pass_rect(this->device_viewport_size_); 357 gfx::Rect pass_rect(this->device_viewport_size_);
219 gfx::Transform transform_to_root; 358 gfx::Transform transform_to_root;
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 1112
974 EXPECT_TRUE(this->RunPixelTest( 1113 EXPECT_TRUE(this->RunPixelTest(
975 &pass_list, 1114 &pass_list,
976 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), 1115 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
977 ExactPixelComparator(true))); 1116 ExactPixelComparator(true)));
978 } 1117 }
979 #endif // !defined(OS_ANDROID) 1118 #endif // !defined(OS_ANDROID)
980 1119
981 } // namespace 1120 } // namespace
982 } // namespace cc 1121 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698