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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/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/quads/texture_draw_quad.h" | 10 #include "cc/quads/texture_draw_quad.h" |
(...skipping 1366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1377 &pass_list, | 1377 &pass_list, |
1378 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), | 1378 base::FilePath(FILE_PATH_LITERAL("anti_aliasing_perspective.png")), |
1379 FuzzyPixelOffByOneComparator(true))); | 1379 FuzzyPixelOffByOneComparator(true))); |
1380 } | 1380 } |
1381 | 1381 |
1382 TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { | 1382 TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) { |
1383 gfx::Size pile_tile_size(1000, 1000); | 1383 gfx::Size pile_tile_size(1000, 1000); |
1384 gfx::Rect viewport(this->device_viewport_size_); | 1384 gfx::Rect viewport(this->device_viewport_size_); |
1385 // TODO(enne): the renderer should figure this out on its own. | 1385 // TODO(enne): the renderer should figure this out on its own. |
1386 ResourceFormat texture_format = RGBA_8888; | 1386 ResourceFormat texture_format = RGBA_8888; |
| 1387 bool nearest_neighbor = false; |
1387 | 1388 |
1388 RenderPassId id(1, 1); | 1389 RenderPassId id(1, 1); |
1389 gfx::Transform transform_to_root; | 1390 gfx::Transform transform_to_root; |
1390 scoped_ptr<RenderPass> pass = | 1391 scoped_ptr<RenderPass> pass = |
1391 CreateTestRenderPass(id, viewport, transform_to_root); | 1392 CreateTestRenderPass(id, viewport, transform_to_root); |
1392 | 1393 |
1393 // One clipped blue quad in the lower right corner. Outside the clip | 1394 // One clipped blue quad in the lower right corner. Outside the clip |
1394 // is red, which should not appear. | 1395 // is red, which should not appear. |
1395 gfx::Rect blue_rect(gfx::Size(100, 100)); | 1396 gfx::Rect blue_rect(gfx::Size(100, 100)); |
1396 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); | 1397 gfx::Rect blue_clip_rect(gfx::Point(50, 50), gfx::Size(50, 50)); |
(...skipping 16 matching lines...) Expand all Loading... |
1413 CreateTestSharedQuadStateClipped(blue_content_to_target_transform, | 1414 CreateTestSharedQuadStateClipped(blue_content_to_target_transform, |
1414 blue_rect, | 1415 blue_rect, |
1415 gfx::ToEnclosingRect(blue_scissor_rect), | 1416 gfx::ToEnclosingRect(blue_scissor_rect), |
1416 pass.get()); | 1417 pass.get()); |
1417 | 1418 |
1418 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1419 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1419 | 1420 |
1420 blue_quad->SetNew(blue_shared_state, | 1421 blue_quad->SetNew(blue_shared_state, |
1421 viewport, // Intentionally bigger than clip. | 1422 viewport, // Intentionally bigger than clip. |
1422 gfx::Rect(), viewport, gfx::RectF(viewport), | 1423 gfx::Rect(), viewport, gfx::RectF(viewport), |
1423 viewport.size(), texture_format, viewport, 1.f, | 1424 viewport.size(), nearest_neighbor, texture_format, viewport, |
1424 blue_pile.get()); | 1425 1.f, blue_pile.get()); |
1425 | 1426 |
1426 // One viewport-filling green quad. | 1427 // One viewport-filling green quad. |
1427 scoped_refptr<FakePicturePileImpl> green_pile = | 1428 scoped_refptr<FakePicturePileImpl> green_pile = |
1428 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); | 1429 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
1429 SkPaint green_paint; | 1430 SkPaint green_paint; |
1430 green_paint.setColor(SK_ColorGREEN); | 1431 green_paint.setColor(SK_ColorGREEN); |
1431 green_pile->add_draw_rect_with_paint(viewport, green_paint); | 1432 green_pile->add_draw_rect_with_paint(viewport, green_paint); |
1432 green_pile->RerecordPile(); | 1433 green_pile->RerecordPile(); |
1433 | 1434 |
1434 gfx::Transform green_content_to_target_transform; | 1435 gfx::Transform green_content_to_target_transform; |
1435 SharedQuadState* green_shared_state = CreateTestSharedQuadState( | 1436 SharedQuadState* green_shared_state = CreateTestSharedQuadState( |
1436 green_content_to_target_transform, viewport, pass.get()); | 1437 green_content_to_target_transform, viewport, pass.get()); |
1437 | 1438 |
1438 PictureDrawQuad* green_quad = | 1439 PictureDrawQuad* green_quad = |
1439 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1440 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1440 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, | 1441 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, |
1441 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), | 1442 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), |
1442 texture_format, viewport, 1.f, green_pile.get()); | 1443 nearest_neighbor, texture_format, viewport, 1.f, |
| 1444 green_pile.get()); |
1443 | 1445 |
1444 RenderPassList pass_list; | 1446 RenderPassList pass_list; |
1445 pass_list.push_back(pass.Pass()); | 1447 pass_list.push_back(pass.Pass()); |
1446 | 1448 |
1447 EXPECT_TRUE(this->RunPixelTest( | 1449 EXPECT_TRUE(this->RunPixelTest( |
1448 &pass_list, | 1450 &pass_list, |
1449 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), | 1451 base::FilePath(FILE_PATH_LITERAL("green_with_blue_corner.png")), |
1450 ExactPixelComparator(true))); | 1452 ExactPixelComparator(true))); |
1451 } | 1453 } |
1452 | 1454 |
1453 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. | 1455 // Not WithSkiaGPUBackend since that path currently requires tiles for opacity. |
1454 TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) { | 1456 TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) { |
1455 gfx::Size pile_tile_size(1000, 1000); | 1457 gfx::Size pile_tile_size(1000, 1000); |
1456 gfx::Rect viewport(this->device_viewport_size_); | 1458 gfx::Rect viewport(this->device_viewport_size_); |
1457 ResourceFormat texture_format = RGBA_8888; | 1459 ResourceFormat texture_format = RGBA_8888; |
| 1460 bool nearest_neighbor = false; |
1458 | 1461 |
1459 RenderPassId id(1, 1); | 1462 RenderPassId id(1, 1); |
1460 gfx::Transform transform_to_root; | 1463 gfx::Transform transform_to_root; |
1461 scoped_ptr<RenderPass> pass = | 1464 scoped_ptr<RenderPass> pass = |
1462 CreateTestRenderPass(id, viewport, transform_to_root); | 1465 CreateTestRenderPass(id, viewport, transform_to_root); |
1463 | 1466 |
1464 // One viewport-filling 0.5-opacity green quad. | 1467 // One viewport-filling 0.5-opacity green quad. |
1465 scoped_refptr<FakePicturePileImpl> green_pile = | 1468 scoped_refptr<FakePicturePileImpl> green_pile = |
1466 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); | 1469 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
1467 SkPaint green_paint; | 1470 SkPaint green_paint; |
1468 green_paint.setColor(SK_ColorGREEN); | 1471 green_paint.setColor(SK_ColorGREEN); |
1469 green_pile->add_draw_rect_with_paint(viewport, green_paint); | 1472 green_pile->add_draw_rect_with_paint(viewport, green_paint); |
1470 green_pile->RerecordPile(); | 1473 green_pile->RerecordPile(); |
1471 | 1474 |
1472 gfx::Transform green_content_to_target_transform; | 1475 gfx::Transform green_content_to_target_transform; |
1473 SharedQuadState* green_shared_state = CreateTestSharedQuadState( | 1476 SharedQuadState* green_shared_state = CreateTestSharedQuadState( |
1474 green_content_to_target_transform, viewport, pass.get()); | 1477 green_content_to_target_transform, viewport, pass.get()); |
1475 green_shared_state->opacity = 0.5f; | 1478 green_shared_state->opacity = 0.5f; |
1476 | 1479 |
1477 PictureDrawQuad* green_quad = | 1480 PictureDrawQuad* green_quad = |
1478 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1481 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1479 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, | 1482 green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport, |
1480 gfx::RectF(0, 0, 1, 1), viewport.size(), texture_format, | 1483 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, |
1481 viewport, 1.f, green_pile.get()); | 1484 texture_format, viewport, 1.f, green_pile.get()); |
1482 | 1485 |
1483 // One viewport-filling white quad. | 1486 // One viewport-filling white quad. |
1484 scoped_refptr<FakePicturePileImpl> white_pile = | 1487 scoped_refptr<FakePicturePileImpl> white_pile = |
1485 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); | 1488 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
1486 SkPaint white_paint; | 1489 SkPaint white_paint; |
1487 white_paint.setColor(SK_ColorWHITE); | 1490 white_paint.setColor(SK_ColorWHITE); |
1488 white_pile->add_draw_rect_with_paint(viewport, white_paint); | 1491 white_pile->add_draw_rect_with_paint(viewport, white_paint); |
1489 white_pile->RerecordPile(); | 1492 white_pile->RerecordPile(); |
1490 | 1493 |
1491 gfx::Transform white_content_to_target_transform; | 1494 gfx::Transform white_content_to_target_transform; |
1492 SharedQuadState* white_shared_state = CreateTestSharedQuadState( | 1495 SharedQuadState* white_shared_state = CreateTestSharedQuadState( |
1493 white_content_to_target_transform, viewport, pass.get()); | 1496 white_content_to_target_transform, viewport, pass.get()); |
1494 | 1497 |
1495 PictureDrawQuad* white_quad = | 1498 PictureDrawQuad* white_quad = |
1496 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1499 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1497 white_quad->SetNew(white_shared_state, viewport, gfx::Rect(), viewport, | 1500 white_quad->SetNew(white_shared_state, viewport, gfx::Rect(), viewport, |
1498 gfx::RectF(0, 0, 1, 1), viewport.size(), texture_format, | 1501 gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor, |
1499 viewport, 1.f, white_pile.get()); | 1502 texture_format, viewport, 1.f, white_pile.get()); |
1500 | 1503 |
1501 RenderPassList pass_list; | 1504 RenderPassList pass_list; |
1502 pass_list.push_back(pass.Pass()); | 1505 pass_list.push_back(pass.Pass()); |
1503 | 1506 |
1504 EXPECT_TRUE(this->RunPixelTest( | 1507 EXPECT_TRUE(this->RunPixelTest( |
1505 &pass_list, | 1508 &pass_list, |
1506 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), | 1509 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), |
1507 FuzzyPixelOffByOneComparator(true))); | 1510 FuzzyPixelOffByOneComparator(true))); |
1508 } | 1511 } |
1509 | 1512 |
(...skipping 15 matching lines...) Expand all Loading... |
1525 // huge sharp squares. | 1528 // huge sharp squares. |
1526 TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) { | 1529 TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) { |
1527 // We only care about this in software mode since bilinear filtering is | 1530 // We only care about this in software mode since bilinear filtering is |
1528 // cheap in hardware. | 1531 // cheap in hardware. |
1529 if (!IsSoftwareRenderer<TypeParam>()) | 1532 if (!IsSoftwareRenderer<TypeParam>()) |
1530 return; | 1533 return; |
1531 | 1534 |
1532 gfx::Size pile_tile_size(1000, 1000); | 1535 gfx::Size pile_tile_size(1000, 1000); |
1533 gfx::Rect viewport(this->device_viewport_size_); | 1536 gfx::Rect viewport(this->device_viewport_size_); |
1534 ResourceFormat texture_format = RGBA_8888; | 1537 ResourceFormat texture_format = RGBA_8888; |
| 1538 bool nearest_neighbor = false; |
1535 | 1539 |
1536 RenderPassId id(1, 1); | 1540 RenderPassId id(1, 1); |
1537 gfx::Transform transform_to_root; | 1541 gfx::Transform transform_to_root; |
1538 scoped_ptr<RenderPass> pass = | 1542 scoped_ptr<RenderPass> pass = |
1539 CreateTestRenderPass(id, viewport, transform_to_root); | 1543 CreateTestRenderPass(id, viewport, transform_to_root); |
1540 | 1544 |
1541 SkBitmap bitmap; | 1545 SkBitmap bitmap; |
1542 bitmap.allocN32Pixels(2, 2); | 1546 bitmap.allocN32Pixels(2, 2); |
1543 { | 1547 { |
1544 SkAutoLockPixels lock(bitmap); | 1548 SkAutoLockPixels lock(bitmap); |
(...skipping 10 matching lines...) Expand all Loading... |
1555 paint.setFilterLevel(SkPaint::kLow_FilterLevel); | 1559 paint.setFilterLevel(SkPaint::kLow_FilterLevel); |
1556 pile->add_draw_bitmap_with_paint(bitmap, gfx::Point(), paint); | 1560 pile->add_draw_bitmap_with_paint(bitmap, gfx::Point(), paint); |
1557 pile->RerecordPile(); | 1561 pile->RerecordPile(); |
1558 | 1562 |
1559 gfx::Transform content_to_target_transform; | 1563 gfx::Transform content_to_target_transform; |
1560 SharedQuadState* shared_state = CreateTestSharedQuadState( | 1564 SharedQuadState* shared_state = CreateTestSharedQuadState( |
1561 content_to_target_transform, viewport, pass.get()); | 1565 content_to_target_transform, viewport, pass.get()); |
1562 | 1566 |
1563 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1567 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1564 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, | 1568 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, |
1565 gfx::RectF(0, 0, 2, 2), viewport.size(), texture_format, | 1569 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, |
1566 viewport, 1.f, pile.get()); | 1570 texture_format, viewport, 1.f, pile.get()); |
1567 | 1571 |
1568 RenderPassList pass_list; | 1572 RenderPassList pass_list; |
1569 pass_list.push_back(pass.Pass()); | 1573 pass_list.push_back(pass.Pass()); |
1570 | 1574 |
1571 this->disable_picture_quad_image_filtering_ = true; | 1575 this->disable_picture_quad_image_filtering_ = true; |
1572 | 1576 |
1573 EXPECT_TRUE(this->RunPixelTest( | 1577 EXPECT_TRUE(this->RunPixelTest( |
1574 &pass_list, | 1578 &pass_list, |
1575 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), | 1579 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
1576 ExactPixelComparator(true))); | 1580 ExactPixelComparator(true))); |
1577 } | 1581 } |
1578 | 1582 |
| 1583 // This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad. |
| 1584 TYPED_TEST(RendererPixelTest, PictureDrawQuadNearestNeighbor) { |
| 1585 gfx::Size pile_tile_size(1000, 1000); |
| 1586 gfx::Rect viewport(this->device_viewport_size_); |
| 1587 ResourceFormat texture_format = RGBA_8888; |
| 1588 bool nearest_neighbor = true; |
| 1589 |
| 1590 RenderPassId id(1, 1); |
| 1591 gfx::Transform transform_to_root; |
| 1592 scoped_ptr<RenderPass> pass = |
| 1593 CreateTestRenderPass(id, viewport, transform_to_root); |
| 1594 |
| 1595 SkBitmap bitmap; |
| 1596 bitmap.allocN32Pixels(2, 2); |
| 1597 { |
| 1598 SkAutoLockPixels lock(bitmap); |
| 1599 SkCanvas canvas(bitmap); |
| 1600 canvas.drawPoint(0, 0, SK_ColorGREEN); |
| 1601 canvas.drawPoint(0, 1, SK_ColorBLUE); |
| 1602 canvas.drawPoint(1, 0, SK_ColorBLUE); |
| 1603 canvas.drawPoint(1, 1, SK_ColorGREEN); |
| 1604 } |
| 1605 |
| 1606 scoped_refptr<FakePicturePileImpl> pile = |
| 1607 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
| 1608 SkPaint paint; |
| 1609 paint.setFilterLevel(SkPaint::kLow_FilterLevel); |
| 1610 pile->add_draw_bitmap_with_paint(bitmap, gfx::Point(), paint); |
| 1611 pile->RerecordPile(); |
| 1612 |
| 1613 gfx::Transform content_to_target_transform; |
| 1614 SharedQuadState* shared_state = CreateTestSharedQuadState( |
| 1615 content_to_target_transform, viewport, pass.get()); |
| 1616 |
| 1617 PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 1618 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, |
| 1619 gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor, |
| 1620 texture_format, viewport, 1.f, pile.get()); |
| 1621 |
| 1622 RenderPassList pass_list; |
| 1623 pass_list.push_back(pass.Pass()); |
| 1624 |
| 1625 EXPECT_TRUE(this->RunPixelTest( |
| 1626 &pass_list, |
| 1627 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
| 1628 ExactPixelComparator(true))); |
| 1629 } |
| 1630 |
| 1631 // This disables filtering by setting |nearest_neighbor| on the TileDrawQuad. |
| 1632 TYPED_TEST(RendererPixelTest, TileDrawQuadNearestNeighbor) { |
| 1633 gfx::Rect viewport(this->device_viewport_size_); |
| 1634 bool swizzle_contents = true; |
| 1635 bool nearest_neighbor = true; |
| 1636 |
| 1637 SkBitmap bitmap; |
| 1638 bitmap.allocN32Pixels(2, 2); |
| 1639 { |
| 1640 SkAutoLockPixels lock(bitmap); |
| 1641 SkCanvas canvas(bitmap); |
| 1642 canvas.drawPoint(0, 0, SK_ColorGREEN); |
| 1643 canvas.drawPoint(0, 1, SK_ColorBLUE); |
| 1644 canvas.drawPoint(1, 0, SK_ColorBLUE); |
| 1645 canvas.drawPoint(1, 1, SK_ColorGREEN); |
| 1646 } |
| 1647 |
| 1648 gfx::Size tile_size(2, 2); |
| 1649 ResourceProvider::ResourceId resource = |
| 1650 this->resource_provider_->CreateResource( |
| 1651 tile_size, |
| 1652 GL_CLAMP_TO_EDGE, |
| 1653 ResourceProvider::TextureHintImmutable, |
| 1654 RGBA_8888); |
| 1655 |
| 1656 { |
| 1657 SkAutoLockPixels lock(bitmap); |
| 1658 this->resource_provider_->SetPixels( |
| 1659 resource, |
| 1660 static_cast<uint8_t*>(bitmap.getPixels()), |
| 1661 gfx::Rect(tile_size), |
| 1662 gfx::Rect(tile_size), |
| 1663 gfx::Vector2d()); |
| 1664 } |
| 1665 |
| 1666 RenderPassId id(1, 1); |
| 1667 gfx::Transform transform_to_root; |
| 1668 scoped_ptr<RenderPass> pass = |
| 1669 CreateTestRenderPass(id, viewport, transform_to_root); |
| 1670 |
| 1671 gfx::Transform content_to_target_transform; |
| 1672 SharedQuadState* shared_state = CreateTestSharedQuadState( |
| 1673 content_to_target_transform, viewport, pass.get()); |
| 1674 |
| 1675 TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>(); |
| 1676 quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource, |
| 1677 gfx::Rect(tile_size), tile_size, swizzle_contents, |
| 1678 nearest_neighbor); |
| 1679 |
| 1680 RenderPassList pass_list; |
| 1681 pass_list.push_back(pass.Pass()); |
| 1682 |
| 1683 EXPECT_TRUE(this->RunPixelTest( |
| 1684 &pass_list, |
| 1685 base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")), |
| 1686 ExactPixelComparator(true))); |
| 1687 } |
| 1688 |
1579 TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { | 1689 TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) { |
1580 gfx::Size pile_tile_size(1000, 1000); | 1690 gfx::Size pile_tile_size(1000, 1000); |
1581 gfx::Rect viewport(this->device_viewport_size_); | 1691 gfx::Rect viewport(this->device_viewport_size_); |
1582 // TODO(enne): the renderer should figure this out on its own. | 1692 // TODO(enne): the renderer should figure this out on its own. |
1583 ResourceFormat texture_format = RGBA_8888; | 1693 ResourceFormat texture_format = RGBA_8888; |
| 1694 bool nearest_neighbor = false; |
1584 | 1695 |
1585 RenderPassId id(1, 1); | 1696 RenderPassId id(1, 1); |
1586 gfx::Transform transform_to_root; | 1697 gfx::Transform transform_to_root; |
1587 scoped_ptr<RenderPass> pass = | 1698 scoped_ptr<RenderPass> pass = |
1588 CreateTestRenderPass(id, viewport, transform_to_root); | 1699 CreateTestRenderPass(id, viewport, transform_to_root); |
1589 | 1700 |
1590 // As scaling up the blue checkerboards will cause sampling on the GPU, | 1701 // As scaling up the blue checkerboards will cause sampling on the GPU, |
1591 // a few extra "cleanup rects" need to be added to clobber the blending | 1702 // a few extra "cleanup rects" need to be added to clobber the blending |
1592 // to make the output image more clean. This will also test subrects | 1703 // to make the output image more clean. This will also test subrects |
1593 // of the layer. | 1704 // of the layer. |
(...skipping 12 matching lines...) Expand all Loading... |
1606 green_pile->RerecordPile(); | 1717 green_pile->RerecordPile(); |
1607 | 1718 |
1608 SharedQuadState* top_right_green_shared_quad_state = | 1719 SharedQuadState* top_right_green_shared_quad_state = |
1609 CreateTestSharedQuadState( | 1720 CreateTestSharedQuadState( |
1610 green_content_to_target_transform, viewport, pass.get()); | 1721 green_content_to_target_transform, viewport, pass.get()); |
1611 | 1722 |
1612 PictureDrawQuad* green_quad1 = | 1723 PictureDrawQuad* green_quad1 = |
1613 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1724 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1614 green_quad1->SetNew(top_right_green_shared_quad_state, green_rect1, | 1725 green_quad1->SetNew(top_right_green_shared_quad_state, green_rect1, |
1615 gfx::Rect(), green_rect1, gfx::RectF(green_rect1.size()), | 1726 gfx::Rect(), green_rect1, gfx::RectF(green_rect1.size()), |
1616 green_rect1.size(), texture_format, green_rect1, 1.f, | 1727 green_rect1.size(), nearest_neighbor, texture_format, |
1617 green_pile.get()); | 1728 green_rect1, 1.f, green_pile.get()); |
1618 | 1729 |
1619 PictureDrawQuad* green_quad2 = | 1730 PictureDrawQuad* green_quad2 = |
1620 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1731 pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1621 green_quad2->SetNew(top_right_green_shared_quad_state, green_rect2, | 1732 green_quad2->SetNew(top_right_green_shared_quad_state, green_rect2, |
1622 gfx::Rect(), green_rect2, gfx::RectF(green_rect2.size()), | 1733 gfx::Rect(), green_rect2, gfx::RectF(green_rect2.size()), |
1623 green_rect2.size(), texture_format, green_rect2, 1.f, | 1734 green_rect2.size(), nearest_neighbor, texture_format, |
1624 green_pile.get()); | 1735 green_rect2, 1.f, green_pile.get()); |
1625 | 1736 |
1626 // Add a green clipped checkerboard in the bottom right to help test | 1737 // Add a green clipped checkerboard in the bottom right to help test |
1627 // interleaving picture quad content and solid color content. | 1738 // interleaving picture quad content and solid color content. |
1628 gfx::Rect bottom_right_rect( | 1739 gfx::Rect bottom_right_rect( |
1629 gfx::Point(viewport.width() / 2, viewport.height() / 2), | 1740 gfx::Point(viewport.width() / 2, viewport.height() / 2), |
1630 gfx::Size(viewport.width() / 2, viewport.height() / 2)); | 1741 gfx::Size(viewport.width() / 2, viewport.height() / 2)); |
1631 SharedQuadState* bottom_right_green_shared_state = | 1742 SharedQuadState* bottom_right_green_shared_state = |
1632 CreateTestSharedQuadStateClipped(green_content_to_target_transform, | 1743 CreateTestSharedQuadStateClipped(green_content_to_target_transform, |
1633 viewport, | 1744 viewport, |
1634 bottom_right_rect, | 1745 bottom_right_rect, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1682 // so scale an additional 10x to make them 100x100. | 1793 // so scale an additional 10x to make them 100x100. |
1683 gfx::Transform content_to_target_transform; | 1794 gfx::Transform content_to_target_transform; |
1684 content_to_target_transform.Scale(10.0, 10.0); | 1795 content_to_target_transform.Scale(10.0, 10.0); |
1685 gfx::Rect quad_content_rect(gfx::Size(20, 20)); | 1796 gfx::Rect quad_content_rect(gfx::Size(20, 20)); |
1686 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( | 1797 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( |
1687 content_to_target_transform, quad_content_rect, pass.get()); | 1798 content_to_target_transform, quad_content_rect, pass.get()); |
1688 | 1799 |
1689 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 1800 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1690 blue_quad->SetNew(blue_shared_state, quad_content_rect, gfx::Rect(), | 1801 blue_quad->SetNew(blue_shared_state, quad_content_rect, gfx::Rect(), |
1691 quad_content_rect, gfx::RectF(quad_content_rect), | 1802 quad_content_rect, gfx::RectF(quad_content_rect), |
1692 content_union_rect.size(), texture_format, | 1803 content_union_rect.size(), nearest_neighbor, texture_format, |
1693 content_union_rect, contents_scale, pile.get()); | 1804 content_union_rect, contents_scale, pile.get()); |
1694 | 1805 |
1695 // Fill left half of viewport with green. | 1806 // Fill left half of viewport with green. |
1696 gfx::Transform half_green_content_to_target_transform; | 1807 gfx::Transform half_green_content_to_target_transform; |
1697 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); | 1808 gfx::Rect half_green_rect(gfx::Size(viewport.width() / 2, viewport.height())); |
1698 SharedQuadState* half_green_shared_state = CreateTestSharedQuadState( | 1809 SharedQuadState* half_green_shared_state = CreateTestSharedQuadState( |
1699 half_green_content_to_target_transform, half_green_rect, pass.get()); | 1810 half_green_content_to_target_transform, half_green_rect, pass.get()); |
1700 SolidColorDrawQuad* half_color_quad = | 1811 SolidColorDrawQuad* half_color_quad = |
1701 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); | 1812 pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
1702 half_color_quad->SetNew(half_green_shared_state, | 1813 half_color_quad->SetNew(half_green_shared_state, |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1867 pass_list.front(), | 1978 pass_list.front(), |
1868 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")), | 1979 base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")), |
1869 ExactPixelComparator(true), | 1980 ExactPixelComparator(true), |
1870 &capture_rect)); | 1981 &capture_rect)); |
1871 } | 1982 } |
1872 | 1983 |
1873 TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) { | 1984 TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) { |
1874 gfx::Size pile_tile_size(1000, 1000); | 1985 gfx::Size pile_tile_size(1000, 1000); |
1875 gfx::Rect viewport(this->device_viewport_size_); | 1986 gfx::Rect viewport(this->device_viewport_size_); |
1876 ResourceFormat texture_format = RGBA_4444; | 1987 ResourceFormat texture_format = RGBA_4444; |
| 1988 bool nearest_neighbor = false; |
1877 | 1989 |
1878 RenderPassId id(1, 1); | 1990 RenderPassId id(1, 1); |
1879 gfx::Transform transform_to_root; | 1991 gfx::Transform transform_to_root; |
1880 scoped_ptr<RenderPass> pass = | 1992 scoped_ptr<RenderPass> pass = |
1881 CreateTestRenderPass(id, viewport, transform_to_root); | 1993 CreateTestRenderPass(id, viewport, transform_to_root); |
1882 | 1994 |
1883 // One viewport-filling blue quad | 1995 // One viewport-filling blue quad |
1884 scoped_refptr<FakePicturePileImpl> blue_pile = | 1996 scoped_refptr<FakePicturePileImpl> blue_pile = |
1885 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); | 1997 FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size()); |
1886 SkPaint blue_paint; | 1998 SkPaint blue_paint; |
1887 blue_paint.setColor(SK_ColorBLUE); | 1999 blue_paint.setColor(SK_ColorBLUE); |
1888 blue_pile->add_draw_rect_with_paint(viewport, blue_paint); | 2000 blue_pile->add_draw_rect_with_paint(viewport, blue_paint); |
1889 blue_pile->RerecordPile(); | 2001 blue_pile->RerecordPile(); |
1890 | 2002 |
1891 gfx::Transform blue_content_to_target_transform; | 2003 gfx::Transform blue_content_to_target_transform; |
1892 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( | 2004 SharedQuadState* blue_shared_state = CreateTestSharedQuadState( |
1893 blue_content_to_target_transform, viewport, pass.get()); | 2005 blue_content_to_target_transform, viewport, pass.get()); |
1894 | 2006 |
1895 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 2007 PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
1896 blue_quad->SetNew(blue_shared_state, viewport, gfx::Rect(), viewport, | 2008 blue_quad->SetNew(blue_shared_state, viewport, gfx::Rect(), viewport, |
1897 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), | 2009 gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(), |
1898 texture_format, viewport, 1.f, blue_pile.get()); | 2010 nearest_neighbor, texture_format, viewport, 1.f, |
| 2011 blue_pile.get()); |
1899 | 2012 |
1900 RenderPassList pass_list; | 2013 RenderPassList pass_list; |
1901 pass_list.push_back(pass.Pass()); | 2014 pass_list.push_back(pass.Pass()); |
1902 | 2015 |
1903 EXPECT_TRUE(this->RunPixelTest(&pass_list, | 2016 EXPECT_TRUE(this->RunPixelTest(&pass_list, |
1904 base::FilePath(FILE_PATH_LITERAL("blue.png")), | 2017 base::FilePath(FILE_PATH_LITERAL("blue.png")), |
1905 ExactPixelComparator(true))); | 2018 ExactPixelComparator(true))); |
1906 } | 2019 } |
1907 | 2020 |
1908 TYPED_TEST(RendererPixelTest, WrapModeRepeat) { | 2021 TYPED_TEST(RendererPixelTest, WrapModeRepeat) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1965 EXPECT_TRUE(this->RunPixelTest( | 2078 EXPECT_TRUE(this->RunPixelTest( |
1966 &pass_list, | 2079 &pass_list, |
1967 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), | 2080 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), |
1968 FuzzyPixelOffByOneComparator(true))); | 2081 FuzzyPixelOffByOneComparator(true))); |
1969 } | 2082 } |
1970 | 2083 |
1971 #endif // !defined(OS_ANDROID) | 2084 #endif // !defined(OS_ANDROID) |
1972 | 2085 |
1973 } // namespace | 2086 } // namespace |
1974 } // namespace cc | 2087 } // namespace cc |
OLD | NEW |