OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |