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

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

Issue 21154002: Add support for converting cc::FilterOperations into an SkImageFilter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 3 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
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/render_surface_filters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <set> 7 #include <set>
8 8
9 #include "cc/base/math_util.h" 9 #include "cc/base/math_util.h"
10 #include "cc/debug/test_web_graphics_context_3d.h" 10 #include "cc/debug/test_web_graphics_context_3d.h"
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 matrix[10] = 0.213f - 0.213f * amount; 1422 matrix[10] = 0.213f - 0.213f * amount;
1423 matrix[11] = 0.715f - 0.715f * amount; 1423 matrix[11] = 0.715f - 0.715f * amount;
1424 matrix[12] = 1.f - (matrix[10] + matrix[11]); 1424 matrix[12] = 1.f - (matrix[10] + matrix[11]);
1425 matrix[13] = matrix[14] = 0; 1425 matrix[13] = matrix[14] = 0;
1426 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0; 1426 matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
1427 matrix[18] = 1; 1427 matrix[18] = 1;
1428 skia::RefPtr<SkColorFilter> color_filter( 1428 skia::RefPtr<SkColorFilter> color_filter(
1429 skia::AdoptRef(new SkColorMatrixFilter(matrix))); 1429 skia::AdoptRef(new SkColorMatrixFilter(matrix)));
1430 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef( 1430 skia::RefPtr<SkImageFilter> filter = skia::AdoptRef(
1431 SkColorFilterImageFilter::Create(color_filter.get(), NULL)); 1431 SkColorFilterImageFilter::Create(color_filter.get(), NULL));
1432 FilterOperations filters;
1433 filters.Append(FilterOperation::CreateReferenceFilter(filter));
1432 1434
1433 gfx::Transform transform_causing_aa; 1435 gfx::Transform transform_causing_aa;
1434 transform_causing_aa.Rotate(20.0); 1436 transform_causing_aa.Rotate(20.0);
1435 1437
1436 // RenderPassProgram 1438 // RenderPassProgram
1437 render_passes->clear(); 1439 render_passes->clear();
1438 1440
1439 child_pass = AddRenderPass( 1441 child_pass = AddRenderPass(
1440 render_passes, child_pass_id, child_rect, gfx::Transform()); 1442 render_passes, child_pass_id, child_rect, gfx::Transform());
1441 1443
1442 root_pass = AddRenderPass( 1444 root_pass = AddRenderPass(
1443 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1445 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1444 1446
1445 AddRenderPassQuad(root_pass, 1447 AddRenderPassQuad(root_pass,
1446 child_pass, 1448 child_pass,
1447 0, 1449 0,
1448 skia::RefPtr<SkImageFilter>(), 1450 FilterOperations(),
1449 gfx::Transform()); 1451 gfx::Transform());
1450 1452
1451 renderer_->DecideRenderPassAllocationsForFrame( 1453 renderer_->DecideRenderPassAllocationsForFrame(
1452 *renderer_client_.render_passes_in_draw_order()); 1454 *renderer_client_.render_passes_in_draw_order());
1453 renderer_->DrawFrame( 1455 renderer_->DrawFrame(
1454 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1456 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1455 TestRenderPassProgram(); 1457 TestRenderPassProgram();
1456 1458
1457 // RenderPassColorMatrixProgram 1459 // RenderPassColorMatrixProgram
1458 render_passes->clear(); 1460 render_passes->clear();
1459 1461
1460 child_pass = AddRenderPass( 1462 child_pass = AddRenderPass(
1461 render_passes, child_pass_id, child_rect, transform_causing_aa); 1463 render_passes, child_pass_id, child_rect, transform_causing_aa);
1462 1464
1463 root_pass = AddRenderPass( 1465 root_pass = AddRenderPass(
1464 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1466 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1465 1467
1466 AddRenderPassQuad(root_pass, child_pass, 0, filter, gfx::Transform()); 1468 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform());
1467 1469
1468 renderer_->DecideRenderPassAllocationsForFrame( 1470 renderer_->DecideRenderPassAllocationsForFrame(
1469 *renderer_client_.render_passes_in_draw_order()); 1471 *renderer_client_.render_passes_in_draw_order());
1470 renderer_->DrawFrame( 1472 renderer_->DrawFrame(
1471 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1473 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1472 TestRenderPassColorMatrixProgram(); 1474 TestRenderPassColorMatrixProgram();
1473 1475
1474 // RenderPassMaskProgram 1476 // RenderPassMaskProgram
1475 render_passes->clear(); 1477 render_passes->clear();
1476 1478
1477 child_pass = AddRenderPass( 1479 child_pass = AddRenderPass(
1478 render_passes, child_pass_id, child_rect, gfx::Transform()); 1480 render_passes, child_pass_id, child_rect, gfx::Transform());
1479 1481
1480 root_pass = AddRenderPass( 1482 root_pass = AddRenderPass(
1481 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1483 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1482 1484
1483 AddRenderPassQuad(root_pass, 1485 AddRenderPassQuad(root_pass,
1484 child_pass, 1486 child_pass,
1485 mask, 1487 mask,
1486 skia::RefPtr<SkImageFilter>(), 1488 FilterOperations(),
1487 gfx::Transform()); 1489 gfx::Transform());
1488 1490
1489 renderer_->DecideRenderPassAllocationsForFrame( 1491 renderer_->DecideRenderPassAllocationsForFrame(
1490 *renderer_client_.render_passes_in_draw_order()); 1492 *renderer_client_.render_passes_in_draw_order());
1491 renderer_->DrawFrame( 1493 renderer_->DrawFrame(
1492 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1494 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1493 TestRenderPassMaskProgram(); 1495 TestRenderPassMaskProgram();
1494 1496
1495 // RenderPassMaskColorMatrixProgram 1497 // RenderPassMaskColorMatrixProgram
1496 render_passes->clear(); 1498 render_passes->clear();
1497 1499
1498 child_pass = AddRenderPass( 1500 child_pass = AddRenderPass(
1499 render_passes, child_pass_id, child_rect, gfx::Transform()); 1501 render_passes, child_pass_id, child_rect, gfx::Transform());
1500 1502
1501 root_pass = AddRenderPass( 1503 root_pass = AddRenderPass(
1502 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1504 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1503 1505
1504 AddRenderPassQuad(root_pass, child_pass, mask, filter, gfx::Transform()); 1506 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform());
1505 1507
1506 renderer_->DecideRenderPassAllocationsForFrame( 1508 renderer_->DecideRenderPassAllocationsForFrame(
1507 *renderer_client_.render_passes_in_draw_order()); 1509 *renderer_client_.render_passes_in_draw_order());
1508 renderer_->DrawFrame( 1510 renderer_->DrawFrame(
1509 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1511 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1510 TestRenderPassMaskColorMatrixProgram(); 1512 TestRenderPassMaskColorMatrixProgram();
1511 1513
1512 // RenderPassProgramAA 1514 // RenderPassProgramAA
1513 render_passes->clear(); 1515 render_passes->clear();
1514 1516
1515 child_pass = AddRenderPass( 1517 child_pass = AddRenderPass(
1516 render_passes, child_pass_id, child_rect, transform_causing_aa); 1518 render_passes, child_pass_id, child_rect, transform_causing_aa);
1517 1519
1518 root_pass = AddRenderPass( 1520 root_pass = AddRenderPass(
1519 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1521 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1520 1522
1521 AddRenderPassQuad(root_pass, 1523 AddRenderPassQuad(root_pass,
1522 child_pass, 1524 child_pass,
1523 0, 1525 0,
1524 skia::RefPtr<SkImageFilter>(), 1526 FilterOperations(),
1525 transform_causing_aa); 1527 transform_causing_aa);
1526 1528
1527 renderer_->DecideRenderPassAllocationsForFrame( 1529 renderer_->DecideRenderPassAllocationsForFrame(
1528 *renderer_client_.render_passes_in_draw_order()); 1530 *renderer_client_.render_passes_in_draw_order());
1529 renderer_->DrawFrame( 1531 renderer_->DrawFrame(
1530 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1532 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1531 TestRenderPassProgramAA(); 1533 TestRenderPassProgramAA();
1532 1534
1533 // RenderPassColorMatrixProgramAA 1535 // RenderPassColorMatrixProgramAA
1534 render_passes->clear(); 1536 render_passes->clear();
1535 1537
1536 child_pass = AddRenderPass( 1538 child_pass = AddRenderPass(
1537 render_passes, child_pass_id, child_rect, transform_causing_aa); 1539 render_passes, child_pass_id, child_rect, transform_causing_aa);
1538 1540
1539 root_pass = AddRenderPass( 1541 root_pass = AddRenderPass(
1540 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1542 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1541 1543
1542 AddRenderPassQuad(root_pass, child_pass, 0, filter, transform_causing_aa); 1544 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa);
1543 1545
1544 renderer_->DecideRenderPassAllocationsForFrame( 1546 renderer_->DecideRenderPassAllocationsForFrame(
1545 *renderer_client_.render_passes_in_draw_order()); 1547 *renderer_client_.render_passes_in_draw_order());
1546 renderer_->DrawFrame( 1548 renderer_->DrawFrame(
1547 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1549 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1548 TestRenderPassColorMatrixProgramAA(); 1550 TestRenderPassColorMatrixProgramAA();
1549 1551
1550 // RenderPassMaskProgramAA 1552 // RenderPassMaskProgramAA
1551 render_passes->clear(); 1553 render_passes->clear();
1552 1554
1553 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, 1555 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect,
1554 transform_causing_aa); 1556 transform_causing_aa);
1555 1557
1556 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, 1558 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect,
1557 gfx::Transform()); 1559 gfx::Transform());
1558 1560
1559 AddRenderPassQuad(root_pass, child_pass, mask, skia::RefPtr<SkImageFilter>(), 1561 AddRenderPassQuad(root_pass, child_pass, mask, FilterOperations(),
1560 transform_causing_aa); 1562 transform_causing_aa);
1561 1563
1562 renderer_->DecideRenderPassAllocationsForFrame( 1564 renderer_->DecideRenderPassAllocationsForFrame(
1563 *renderer_client_.render_passes_in_draw_order()); 1565 *renderer_client_.render_passes_in_draw_order());
1564 renderer_->DrawFrame( 1566 renderer_->DrawFrame(
1565 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1567 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1566 TestRenderPassMaskProgramAA(); 1568 TestRenderPassMaskProgramAA();
1567 1569
1568 // RenderPassMaskColorMatrixProgramAA 1570 // RenderPassMaskColorMatrixProgramAA
1569 render_passes->clear(); 1571 render_passes->clear();
1570 1572
1571 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect, 1573 child_pass = AddRenderPass(render_passes, child_pass_id, child_rect,
1572 transform_causing_aa); 1574 transform_causing_aa);
1573 1575
1574 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect, 1576 root_pass = AddRenderPass(render_passes, root_pass_id, viewport_rect,
1575 transform_causing_aa); 1577 transform_causing_aa);
1576 1578
1577 AddRenderPassQuad(root_pass, child_pass, mask, filter, transform_causing_aa); 1579 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa);
1578 1580
1579 renderer_->DecideRenderPassAllocationsForFrame( 1581 renderer_->DecideRenderPassAllocationsForFrame(
1580 *renderer_client_.render_passes_in_draw_order()); 1582 *renderer_client_.render_passes_in_draw_order());
1581 renderer_->DrawFrame( 1583 renderer_->DrawFrame(
1582 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1584 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1583 TestRenderPassMaskColorMatrixProgramAA(); 1585 TestRenderPassMaskColorMatrixProgramAA();
1584 } 1586 }
1585 1587
1586 // At this time, the AA code path cannot be taken if the surface's rect would 1588 // At this time, the AA code path cannot be taken if the surface's rect would
1587 // project incorrectly by the given transform, because of w<0 clipping. 1589 // project incorrectly by the given transform, because of w<0 clipping.
(...skipping 27 matching lines...) Expand all
1615 1617
1616 child_pass = AddRenderPass( 1618 child_pass = AddRenderPass(
1617 render_passes, child_pass_id, child_rect, transform_preventing_aa); 1619 render_passes, child_pass_id, child_rect, transform_preventing_aa);
1618 1620
1619 root_pass = AddRenderPass( 1621 root_pass = AddRenderPass(
1620 render_passes, root_pass_id, viewport_rect, gfx::Transform()); 1622 render_passes, root_pass_id, viewport_rect, gfx::Transform());
1621 1623
1622 AddRenderPassQuad(root_pass, 1624 AddRenderPassQuad(root_pass,
1623 child_pass, 1625 child_pass,
1624 0, 1626 0,
1625 skia::RefPtr<SkImageFilter>(), 1627 FilterOperations(),
1626 transform_preventing_aa); 1628 transform_preventing_aa);
1627 1629
1628 renderer_->DecideRenderPassAllocationsForFrame( 1630 renderer_->DecideRenderPassAllocationsForFrame(
1629 *renderer_client_.render_passes_in_draw_order()); 1631 *renderer_client_.render_passes_in_draw_order());
1630 renderer_->DrawFrame( 1632 renderer_->DrawFrame(
1631 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true); 1633 renderer_client_.render_passes_in_draw_order(), NULL, 1.f, true);
1632 1634
1633 // If use_aa incorrectly ignores clipping, it will use the 1635 // If use_aa incorrectly ignores clipping, it will use the
1634 // RenderPassProgramAA shader instead of the RenderPassProgram. 1636 // RenderPassProgramAA shader instead of the RenderPassProgram.
1635 TestRenderPassProgram(); 1637 TestRenderPassProgram();
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1856 base::MessageLoop::current()->Run(); 1858 base::MessageLoop::current()->Run();
1857 1859
1858 // The sync point should have happened. 1860 // The sync point should have happened.
1859 EXPECT_EQ(1, sync_point_callback_count); 1861 EXPECT_EQ(1, sync_point_callback_count);
1860 EXPECT_EQ(1, other_callback_count); 1862 EXPECT_EQ(1, other_callback_count);
1861 } 1863 }
1862 #endif // OS_ANDROID 1864 #endif // OS_ANDROID
1863 1865
1864 } // namespace 1866 } // namespace
1865 } // namespace cc 1867 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/render_surface_filters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698