| 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 |