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

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

Issue 14060015: cc: Async readback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit Created 7 years, 8 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 "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include "cc/layers/append_quads_data.h" 7 #include "cc/layers/append_quads_data.h"
8 #include "cc/quads/draw_quad.h" 8 #include "cc/quads/draw_quad.h"
9 #include "cc/test/pixel_test.h" 9 #include "cc/test/pixel_test.h"
10 #include "third_party/skia/include/core/SkImageFilter.h" 10 #include "third_party/skia/include/core/SkImageFilter.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 CreateTestSharedQuadState(content_to_target_transform, rect); 85 CreateTestSharedQuadState(content_to_target_transform, rect);
86 86
87 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); 87 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create();
88 color_quad->SetNew(shared_state.get(), rect, SK_ColorGREEN); 88 color_quad->SetNew(shared_state.get(), rect, SK_ColorGREEN);
89 89
90 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>()); 90 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>());
91 91
92 RenderPassList pass_list; 92 RenderPassList pass_list;
93 pass_list.push_back(pass.Pass()); 93 pass_list.push_back(pass.Pass());
94 94
95 renderer_->DrawFrame(&pass_list); 95 EXPECT_TRUE(RunPixelTest(
96 96 &pass_list,
97 EXPECT_TRUE(PixelsMatchReference(
98 base::FilePath(FILE_PATH_LITERAL("green.png")), 97 base::FilePath(FILE_PATH_LITERAL("green.png")),
99 ExactPixelComparator(true))); 98 ExactPixelComparator(true)));
100 } 99 }
101 100
102 TEST_F(GLRendererPixelTest, fastPassColorFilterAlpha) { 101 TEST_F(GLRendererPixelTest, FastPassColorFilterAlpha) {
103 gfx::Rect viewport_rect(device_viewport_size_); 102 gfx::Rect viewport_rect(device_viewport_size_);
104 103
105 RenderPass::Id root_pass_id(1, 1); 104 RenderPass::Id root_pass_id(1, 1);
106 scoped_ptr<RenderPass> root_pass = 105 scoped_ptr<RenderPass> root_pass =
107 CreateTestRootRenderPass(root_pass_id, viewport_rect); 106 CreateTestRootRenderPass(root_pass_id, viewport_rect);
108 107
109 RenderPass::Id child_pass_id(2, 2); 108 RenderPass::Id child_pass_id(2, 2);
110 gfx::Rect pass_rect(device_viewport_size_); 109 gfx::Rect pass_rect(device_viewport_size_);
111 gfx::Transform transform_to_root; 110 gfx::Transform transform_to_root;
112 scoped_ptr<RenderPass> child_pass = 111 scoped_ptr<RenderPass> child_pass =
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 matrix[11] = 0.715f - 0.715f * amount; 160 matrix[11] = 0.715f - 0.715f * amount;
162 matrix[12] = 1.f - (matrix[10] + matrix[11]); 161 matrix[12] = 1.f - (matrix[10] + matrix[11]);
163 matrix[13] = matrix[14] = 0; 162 matrix[13] = matrix[14] = 0;
164 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; 163 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
165 matrix[18] = 1; 164 matrix[18] = 1;
166 skia::RefPtr<SkColorFilter> colorFilter(skia::AdoptRef( 165 skia::RefPtr<SkColorFilter> colorFilter(skia::AdoptRef(
167 new SkColorMatrixFilter(matrix))); 166 new SkColorMatrixFilter(matrix)));
168 skia::RefPtr<SkImageFilter> filter = 167 skia::RefPtr<SkImageFilter> filter =
169 skia::AdoptRef(SkColorFilterImageFilter::Create(colorFilter.get(), NULL)); 168 skia::AdoptRef(SkColorFilterImageFilter::Create(colorFilter.get(), NULL));
170 169
171 scoped_ptr<RenderPassDrawQuad> render_pass_quad = RenderPassDrawQuad::Create() ; 170 scoped_ptr<RenderPassDrawQuad> render_pass_quad =
171 RenderPassDrawQuad::Create();
172 render_pass_quad->SetNew(pass_shared_state.get(), 172 render_pass_quad->SetNew(pass_shared_state.get(),
173 pass_rect, 173 pass_rect,
174 child_pass_id, 174 child_pass_id,
175 false, 175 false,
176 0, 176 0,
177 pass_rect, 177 pass_rect,
178 gfx::RectF(), 178 gfx::RectF(),
179 WebKit::WebFilterOperations(), 179 WebKit::WebFilterOperations(),
180 filter, 180 filter,
181 WebKit::WebFilterOperations()); 181 WebKit::WebFilterOperations());
182 182
183 root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>()); 183 root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>());
184 184
185 RenderPassList pass_list; 185 RenderPassList pass_list;
186 pass_list.push_back(child_pass.Pass()); 186 pass_list.push_back(child_pass.Pass());
187 pass_list.push_back(root_pass.Pass()); 187 pass_list.push_back(root_pass.Pass());
188 188
189 renderer_->SetEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75)); 189 EXPECT_TRUE(RunPixelTest(
190 renderer_->DecideRenderPassAllocationsForFrame(pass_list); 190 &pass_list,
191 renderer_->DrawFrame(&pass_list);
192
193 EXPECT_TRUE(PixelsMatchReference(
194 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")), 191 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
195 ExactPixelComparator(false))); 192 ExactPixelComparator(false)));
196 } 193 }
197 194
198 TEST_F(GLRendererPixelTest, fastPassColorFilterAlphaTranslation) { 195 TEST_F(GLRendererPixelTest, FastPassColorFilterAlphaTranslation) {
199 gfx::Rect viewport_rect(device_viewport_size_); 196 gfx::Rect viewport_rect(device_viewport_size_);
200 197
201 RenderPass::Id root_pass_id(1, 1); 198 RenderPass::Id root_pass_id(1, 1);
202 scoped_ptr<RenderPass> root_pass = 199 scoped_ptr<RenderPass> root_pass =
203 CreateTestRootRenderPass(root_pass_id, viewport_rect); 200 CreateTestRootRenderPass(root_pass_id, viewport_rect);
204 201
205 RenderPass::Id child_pass_id(2, 2); 202 RenderPass::Id child_pass_id(2, 2);
206 gfx::Rect pass_rect(device_viewport_size_); 203 gfx::Rect pass_rect(device_viewport_size_);
207 gfx::Transform transform_to_root; 204 gfx::Transform transform_to_root;
208 scoped_ptr<RenderPass> child_pass = 205 scoped_ptr<RenderPass> child_pass =
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 WebKit::WebFilterOperations(), 276 WebKit::WebFilterOperations(),
280 filter, 277 filter,
281 WebKit::WebFilterOperations()); 278 WebKit::WebFilterOperations());
282 279
283 root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>()); 280 root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>());
284 RenderPassList pass_list; 281 RenderPassList pass_list;
285 282
286 pass_list.push_back(child_pass.Pass()); 283 pass_list.push_back(child_pass.Pass());
287 pass_list.push_back(root_pass.Pass()); 284 pass_list.push_back(root_pass.Pass());
288 285
289 renderer_->SetEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75)); 286 EXPECT_TRUE(RunPixelTest(
290 renderer_->DecideRenderPassAllocationsForFrame(pass_list); 287 &pass_list,
291 renderer_->DrawFrame(&pass_list);
292
293 EXPECT_TRUE(PixelsMatchReference(
294 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")), 288 base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha_translate.png")),
295 ExactPixelComparator(false))); 289 ExactPixelComparator(false)));
296 } 290 }
297 291
298 TEST_F(GLRendererPixelTest, RenderPassChangesSize) { 292 TEST_F(GLRendererPixelTest, RenderPassChangesSize) {
299 gfx::Rect viewport_rect(device_viewport_size_); 293 gfx::Rect viewport_rect(device_viewport_size_);
300 294
301 RenderPass::Id root_pass_id(1, 1); 295 RenderPass::Id root_pass_id(1, 1);
302 scoped_ptr<RenderPass> root_pass = 296 scoped_ptr<RenderPass> root_pass =
303 CreateTestRootRenderPass(root_pass_id, viewport_rect); 297 CreateTestRootRenderPass(root_pass_id, viewport_rect);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 root_pass->quad_list.push_back( 329 root_pass->quad_list.push_back(
336 CreateTestRenderPassDrawQuad(pass_shared_state.get(), 330 CreateTestRenderPassDrawQuad(pass_shared_state.get(),
337 pass_rect, 331 pass_rect,
338 child_pass_id)); 332 child_pass_id));
339 333
340 RenderPassList pass_list; 334 RenderPassList pass_list;
341 pass_list.push_back(child_pass.Pass()); 335 pass_list.push_back(child_pass.Pass());
342 pass_list.push_back(root_pass.Pass()); 336 pass_list.push_back(root_pass.Pass());
343 337
344 renderer_->SetEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75)); 338 renderer_->SetEnlargePassTextureAmountForTesting(gfx::Vector2d(50, 75));
345 renderer_->DecideRenderPassAllocationsForFrame(pass_list);
346 renderer_->DrawFrame(&pass_list);
347 339
348 EXPECT_TRUE(PixelsMatchReference( 340 EXPECT_TRUE(RunPixelTest(
341 &pass_list,
349 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")), 342 base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
350 ExactPixelComparator(true))); 343 ExactPixelComparator(true)));
351 } 344 }
352 345
353 class GLRendererPixelTestWithBackgroundFilter : public GLRendererPixelTest { 346 class GLRendererPixelTestWithBackgroundFilter : public GLRendererPixelTest {
354 protected: 347 protected:
355 void DrawFrame() { 348 void SetUpRenderPassList() {
356 gfx::Rect device_viewport_rect(device_viewport_size_); 349 gfx::Rect device_viewport_rect(device_viewport_size_);
357 350
358 RenderPass::Id root_id(1, 1); 351 RenderPass::Id root_id(1, 1);
359 scoped_ptr<RenderPass> root_pass = 352 scoped_ptr<RenderPass> root_pass =
360 CreateTestRootRenderPass(root_id, device_viewport_rect); 353 CreateTestRootRenderPass(root_id, device_viewport_rect);
361 root_pass->has_transparent_background = false; 354 root_pass->has_transparent_background = false;
362 355
363 gfx::Transform identity_content_to_target_transform; 356 gfx::Transform identity_content_to_target_transform;
364 357
365 RenderPass::Id filter_pass_id(2, 1); 358 RenderPass::Id filter_pass_id(2, 1);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 CreateTestSharedQuadState(identity_content_to_target_transform, 438 CreateTestSharedQuadState(identity_content_to_target_transform,
446 device_viewport_rect); 439 device_viewport_rect);
447 scoped_ptr<SolidColorDrawQuad> background_quad = 440 scoped_ptr<SolidColorDrawQuad> background_quad =
448 SolidColorDrawQuad::Create(); 441 SolidColorDrawQuad::Create();
449 background_quad->SetNew(shared_state.get(), 442 background_quad->SetNew(shared_state.get(),
450 device_viewport_rect, 443 device_viewport_rect,
451 SK_ColorWHITE); 444 SK_ColorWHITE);
452 root_pass->quad_list.push_back(background_quad.PassAs<DrawQuad>()); 445 root_pass->quad_list.push_back(background_quad.PassAs<DrawQuad>());
453 root_pass->shared_quad_state_list.push_back(shared_state.Pass()); 446 root_pass->shared_quad_state_list.push_back(shared_state.Pass());
454 447
455 RenderPassList pass_list; 448 pass_list_.push_back(filter_pass.Pass());
456 pass_list.push_back(filter_pass.Pass()); 449 pass_list_.push_back(root_pass.Pass());
457 pass_list.push_back(root_pass.Pass());
458
459 renderer_->DecideRenderPassAllocationsForFrame(pass_list);
460 renderer_->DrawFrame(&pass_list);
461 } 450 }
462 451
452 RenderPassList pass_list_;
463 WebKit::WebFilterOperations background_filters_; 453 WebKit::WebFilterOperations background_filters_;
464 gfx::Transform filter_pass_to_target_transform_; 454 gfx::Transform filter_pass_to_target_transform_;
465 gfx::Rect filter_pass_content_rect_; 455 gfx::Rect filter_pass_content_rect_;
466 }; 456 };
467 457
468 TEST_F(GLRendererPixelTestWithBackgroundFilter, InvertFilter) { 458 TEST_F(GLRendererPixelTestWithBackgroundFilter, InvertFilter) {
469 background_filters_.append( 459 background_filters_.append(
470 WebKit::WebFilterOperation::createInvertFilter(1.f)); 460 WebKit::WebFilterOperation::createInvertFilter(1.f));
471 461
472 filter_pass_content_rect_ = gfx::Rect(device_viewport_size_); 462 filter_pass_content_rect_ = gfx::Rect(device_viewport_size_);
473 filter_pass_content_rect_.Inset(12, 14, 16, 18); 463 filter_pass_content_rect_.Inset(12, 14, 16, 18);
474 464
475 DrawFrame(); 465 SetUpRenderPassList();
476 EXPECT_TRUE(PixelsMatchReference( 466 EXPECT_TRUE(RunPixelTest(
467 &pass_list_,
477 base::FilePath(FILE_PATH_LITERAL("background_filter.png")), 468 base::FilePath(FILE_PATH_LITERAL("background_filter.png")),
478 ExactPixelComparator(true))); 469 ExactPixelComparator(true)));
479 } 470 }
480 471
481 TEST_F(GLRendererPixelTest, AntiAliasing) { 472 TEST_F(GLRendererPixelTest, AntiAliasing) {
482 gfx::Rect rect(0, 0, 200, 200); 473 gfx::Rect rect(0, 0, 200, 200);
483 474
484 RenderPass::Id id(1, 1); 475 RenderPass::Id id(1, 1);
485 gfx::Transform transform_to_root; 476 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect);
486 scoped_ptr<RenderPass> pass =
487 CreateTestRenderPass(id, rect, transform_to_root);
488 477
489 gfx::Transform red_content_to_target_transform; 478 gfx::Transform red_content_to_target_transform;
490 red_content_to_target_transform.Rotate(10); 479 red_content_to_target_transform.Rotate(10);
491 scoped_ptr<SharedQuadState> red_shared_state = 480 scoped_ptr<SharedQuadState> red_shared_state =
492 CreateTestSharedQuadState(red_content_to_target_transform, rect); 481 CreateTestSharedQuadState(red_content_to_target_transform, rect);
493 482
494 scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create(); 483 scoped_ptr<SolidColorDrawQuad> red = SolidColorDrawQuad::Create();
495 red->SetNew(red_shared_state.get(), rect, SK_ColorRED); 484 red->SetNew(red_shared_state.get(), rect, SK_ColorRED);
496 485
497 pass->quad_list.push_back(red.PassAs<DrawQuad>()); 486 pass->quad_list.push_back(red.PassAs<DrawQuad>());
(...skipping 13 matching lines...) Expand all
511 CreateTestSharedQuadState(blue_content_to_target_transform, rect); 500 CreateTestSharedQuadState(blue_content_to_target_transform, rect);
512 501
513 scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create(); 502 scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
514 blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE); 503 blue->SetNew(blue_shared_state.get(), rect, SK_ColorBLUE);
515 504
516 pass->quad_list.push_back(blue.PassAs<DrawQuad>()); 505 pass->quad_list.push_back(blue.PassAs<DrawQuad>());
517 506
518 RenderPassList pass_list; 507 RenderPassList pass_list;
519 pass_list.push_back(pass.Pass()); 508 pass_list.push_back(pass.Pass());
520 509
521 renderer_->DrawFrame(&pass_list); 510 EXPECT_TRUE(RunPixelTest(
522 511 &pass_list,
523 EXPECT_TRUE(PixelsMatchReference(
524 base::FilePath(FILE_PATH_LITERAL("anti_aliasing.png")), 512 base::FilePath(FILE_PATH_LITERAL("anti_aliasing.png")),
525 ExactPixelComparator(true))); 513 ExactPixelComparator(true)));
526 } 514 }
527 #endif 515 #endif
528 516
529 } // namespace 517 } // namespace
530 } // namespace cc 518 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698