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