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

Unified Diff: cc/output/renderer_pixeltest.cc

Issue 812543002: Update from https://crrev.com/308331 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/shader.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/renderer_pixeltest.cc
diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
index cb14db37dec2a5124e3f84189e72777fbfb541b5..58205a91869e87e60a68e70659bc898e23549251 100644
--- a/cc/output/renderer_pixeltest.cc
+++ b/cc/output/renderer_pixeltest.cc
@@ -1384,6 +1384,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) {
gfx::Rect viewport(this->device_viewport_size_);
// TODO(enne): the renderer should figure this out on its own.
ResourceFormat texture_format = RGBA_8888;
+ bool nearest_neighbor = false;
RenderPassId id(1, 1);
gfx::Transform transform_to_root;
@@ -1420,8 +1421,8 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) {
blue_quad->SetNew(blue_shared_state,
viewport, // Intentionally bigger than clip.
gfx::Rect(), viewport, gfx::RectF(viewport),
- viewport.size(), texture_format, viewport, 1.f,
- blue_pile.get());
+ viewport.size(), nearest_neighbor, texture_format, viewport,
+ 1.f, blue_pile.get());
// One viewport-filling green quad.
scoped_refptr<FakePicturePileImpl> green_pile =
@@ -1439,7 +1440,8 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadIdentityScale) {
pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport,
gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(),
- texture_format, viewport, 1.f, green_pile.get());
+ nearest_neighbor, texture_format, viewport, 1.f,
+ green_pile.get());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
@@ -1455,6 +1457,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) {
gfx::Size pile_tile_size(1000, 1000);
gfx::Rect viewport(this->device_viewport_size_);
ResourceFormat texture_format = RGBA_8888;
+ bool nearest_neighbor = false;
RenderPassId id(1, 1);
gfx::Transform transform_to_root;
@@ -1477,8 +1480,8 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) {
PictureDrawQuad* green_quad =
pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
green_quad->SetNew(green_shared_state, viewport, gfx::Rect(), viewport,
- gfx::RectF(0, 0, 1, 1), viewport.size(), texture_format,
- viewport, 1.f, green_pile.get());
+ gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor,
+ texture_format, viewport, 1.f, green_pile.get());
// One viewport-filling white quad.
scoped_refptr<FakePicturePileImpl> white_pile =
@@ -1495,8 +1498,8 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadOpacity) {
PictureDrawQuad* white_quad =
pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
white_quad->SetNew(white_shared_state, viewport, gfx::Rect(), viewport,
- gfx::RectF(0, 0, 1, 1), viewport.size(), texture_format,
- viewport, 1.f, white_pile.get());
+ gfx::RectF(0, 0, 1, 1), viewport.size(), nearest_neighbor,
+ texture_format, viewport, 1.f, white_pile.get());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
@@ -1532,6 +1535,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) {
gfx::Size pile_tile_size(1000, 1000);
gfx::Rect viewport(this->device_viewport_size_);
ResourceFormat texture_format = RGBA_8888;
+ bool nearest_neighbor = false;
RenderPassId id(1, 1);
gfx::Transform transform_to_root;
@@ -1562,8 +1566,8 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) {
PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
quad->SetNew(shared_state, viewport, gfx::Rect(), viewport,
- gfx::RectF(0, 0, 2, 2), viewport.size(), texture_format,
- viewport, 1.f, pile.get());
+ gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor,
+ texture_format, viewport, 1.f, pile.get());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
@@ -1576,11 +1580,118 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadDisableImageFiltering) {
ExactPixelComparator(true)));
}
+// This disables filtering by setting |nearest_neighbor| on the PictureDrawQuad.
+TYPED_TEST(RendererPixelTest, PictureDrawQuadNearestNeighbor) {
+ gfx::Size pile_tile_size(1000, 1000);
+ gfx::Rect viewport(this->device_viewport_size_);
+ ResourceFormat texture_format = RGBA_8888;
+ bool nearest_neighbor = true;
+
+ RenderPassId id(1, 1);
+ gfx::Transform transform_to_root;
+ scoped_ptr<RenderPass> pass =
+ CreateTestRenderPass(id, viewport, transform_to_root);
+
+ SkBitmap bitmap;
+ bitmap.allocN32Pixels(2, 2);
+ {
+ SkAutoLockPixels lock(bitmap);
+ SkCanvas canvas(bitmap);
+ canvas.drawPoint(0, 0, SK_ColorGREEN);
+ canvas.drawPoint(0, 1, SK_ColorBLUE);
+ canvas.drawPoint(1, 0, SK_ColorBLUE);
+ canvas.drawPoint(1, 1, SK_ColorGREEN);
+ }
+
+ scoped_refptr<FakePicturePileImpl> pile =
+ FakePicturePileImpl::CreateFilledPile(pile_tile_size, viewport.size());
+ SkPaint paint;
+ paint.setFilterLevel(SkPaint::kLow_FilterLevel);
+ pile->add_draw_bitmap_with_paint(bitmap, gfx::Point(), paint);
+ pile->RerecordPile();
+
+ gfx::Transform content_to_target_transform;
+ SharedQuadState* shared_state = CreateTestSharedQuadState(
+ content_to_target_transform, viewport, pass.get());
+
+ PictureDrawQuad* quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
+ quad->SetNew(shared_state, viewport, gfx::Rect(), viewport,
+ gfx::RectF(0, 0, 2, 2), viewport.size(), nearest_neighbor,
+ texture_format, viewport, 1.f, pile.get());
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ EXPECT_TRUE(this->RunPixelTest(
+ &pass_list,
+ base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
+ ExactPixelComparator(true)));
+}
+
+// This disables filtering by setting |nearest_neighbor| on the TileDrawQuad.
+TYPED_TEST(RendererPixelTest, TileDrawQuadNearestNeighbor) {
+ gfx::Rect viewport(this->device_viewport_size_);
+ bool swizzle_contents = true;
+ bool nearest_neighbor = true;
+
+ SkBitmap bitmap;
+ bitmap.allocN32Pixels(2, 2);
+ {
+ SkAutoLockPixels lock(bitmap);
+ SkCanvas canvas(bitmap);
+ canvas.drawPoint(0, 0, SK_ColorGREEN);
+ canvas.drawPoint(0, 1, SK_ColorBLUE);
+ canvas.drawPoint(1, 0, SK_ColorBLUE);
+ canvas.drawPoint(1, 1, SK_ColorGREEN);
+ }
+
+ gfx::Size tile_size(2, 2);
+ ResourceProvider::ResourceId resource =
+ this->resource_provider_->CreateResource(
+ tile_size,
+ GL_CLAMP_TO_EDGE,
+ ResourceProvider::TextureHintImmutable,
+ RGBA_8888);
+
+ {
+ SkAutoLockPixels lock(bitmap);
+ this->resource_provider_->SetPixels(
+ resource,
+ static_cast<uint8_t*>(bitmap.getPixels()),
+ gfx::Rect(tile_size),
+ gfx::Rect(tile_size),
+ gfx::Vector2d());
+ }
+
+ RenderPassId id(1, 1);
+ gfx::Transform transform_to_root;
+ scoped_ptr<RenderPass> pass =
+ CreateTestRenderPass(id, viewport, transform_to_root);
+
+ gfx::Transform content_to_target_transform;
+ SharedQuadState* shared_state = CreateTestSharedQuadState(
+ content_to_target_transform, viewport, pass.get());
+
+ TileDrawQuad* quad = pass->CreateAndAppendDrawQuad<TileDrawQuad>();
+ quad->SetNew(shared_state, viewport, gfx::Rect(), viewport, resource,
+ gfx::Rect(tile_size), tile_size, swizzle_contents,
+ nearest_neighbor);
+
+ RenderPassList pass_list;
+ pass_list.push_back(pass.Pass());
+
+ EXPECT_TRUE(this->RunPixelTest(
+ &pass_list,
+ base::FilePath(FILE_PATH_LITERAL("four_blue_green_checkers.png")),
+ ExactPixelComparator(true)));
+}
+
TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
gfx::Size pile_tile_size(1000, 1000);
gfx::Rect viewport(this->device_viewport_size_);
// TODO(enne): the renderer should figure this out on its own.
ResourceFormat texture_format = RGBA_8888;
+ bool nearest_neighbor = false;
RenderPassId id(1, 1);
gfx::Transform transform_to_root;
@@ -1613,15 +1724,15 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
green_quad1->SetNew(top_right_green_shared_quad_state, green_rect1,
gfx::Rect(), green_rect1, gfx::RectF(green_rect1.size()),
- green_rect1.size(), texture_format, green_rect1, 1.f,
- green_pile.get());
+ green_rect1.size(), nearest_neighbor, texture_format,
+ green_rect1, 1.f, green_pile.get());
PictureDrawQuad* green_quad2 =
pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
green_quad2->SetNew(top_right_green_shared_quad_state, green_rect2,
gfx::Rect(), green_rect2, gfx::RectF(green_rect2.size()),
- green_rect2.size(), texture_format, green_rect2, 1.f,
- green_pile.get());
+ green_rect2.size(), nearest_neighbor, texture_format,
+ green_rect2, 1.f, green_pile.get());
// Add a green clipped checkerboard in the bottom right to help test
// interleaving picture quad content and solid color content.
@@ -1689,7 +1800,7 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
blue_quad->SetNew(blue_shared_state, quad_content_rect, gfx::Rect(),
quad_content_rect, gfx::RectF(quad_content_rect),
- content_union_rect.size(), texture_format,
+ content_union_rect.size(), nearest_neighbor, texture_format,
content_union_rect, contents_scale, pile.get());
// Fill left half of viewport with green.
@@ -1874,6 +1985,7 @@ TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) {
gfx::Size pile_tile_size(1000, 1000);
gfx::Rect viewport(this->device_viewport_size_);
ResourceFormat texture_format = RGBA_4444;
+ bool nearest_neighbor = false;
RenderPassId id(1, 1);
gfx::Transform transform_to_root;
@@ -1895,7 +2007,8 @@ TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) {
PictureDrawQuad* blue_quad = pass->CreateAndAppendDrawQuad<PictureDrawQuad>();
blue_quad->SetNew(blue_shared_state, viewport, gfx::Rect(), viewport,
gfx::RectF(0.f, 0.f, 1.f, 1.f), viewport.size(),
- texture_format, viewport, 1.f, blue_pile.get());
+ nearest_neighbor, texture_format, viewport, 1.f,
+ blue_pile.get());
RenderPassList pass_list;
pass_list.push_back(pass.Pass());
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/shader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698