| Index: cc/output/renderer_pixeltest.cc
|
| diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
|
| index b2be4e6ea91b9de9697cf27caf5e46025af28c14..a0ce8232d189004bebdc36c2a828e6d862d4e37e 100644
|
| --- a/cc/output/renderer_pixeltest.cc
|
| +++ b/cc/output/renderer_pixeltest.cc
|
| @@ -1764,6 +1764,162 @@ TYPED_TEST(RendererPixelTest, PictureDrawQuadNonIdentityScale) {
|
| ExactPixelComparator(true)));
|
| }
|
|
|
| +typedef RendererPixelTest<GLRendererWithFlippedSurface>
|
| + GLRendererPixelTestWithFlippedOutputSurface;
|
| +
|
| +TEST_F(GLRendererPixelTestWithFlippedOutputSurface, ExplicitFlipTest) {
|
| + // This draws a blue rect above a yellow rect with an inverted output surface.
|
| + gfx::Rect viewport_rect(this->device_viewport_size_);
|
| +
|
| + RenderPassId root_pass_id(1, 1);
|
| + scoped_ptr<RenderPass> root_pass =
|
| + CreateTestRootRenderPass(root_pass_id, viewport_rect);
|
| +
|
| + RenderPassId child_pass_id(2, 2);
|
| + gfx::Rect pass_rect(this->device_viewport_size_);
|
| + gfx::Transform transform_to_root;
|
| + scoped_ptr<RenderPass> child_pass =
|
| + CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
|
| +
|
| + gfx::Transform content_to_target_transform;
|
| + SharedQuadState* shared_state = CreateTestSharedQuadState(
|
| + content_to_target_transform, viewport_rect, child_pass.get());
|
| +
|
| + gfx::Rect blue_rect(0,
|
| + 0,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2);
|
| + SolidColorDrawQuad* blue =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + blue->SetNew(shared_state, blue_rect, blue_rect, SK_ColorBLUE, false);
|
| + gfx::Rect yellow_rect(0,
|
| + this->device_viewport_size_.height() / 2,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2);
|
| + SolidColorDrawQuad* yellow =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + yellow->SetNew(shared_state, yellow_rect, yellow_rect, SK_ColorYELLOW, false);
|
| +
|
| + SharedQuadState* pass_shared_state =
|
| + CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
|
| + CreateTestRenderPassDrawQuad(
|
| + pass_shared_state, pass_rect, child_pass_id, root_pass.get());
|
| +
|
| + RenderPassList pass_list;
|
| + pass_list.push_back(child_pass.Pass());
|
| + pass_list.push_back(root_pass.Pass());
|
| +
|
| + EXPECT_TRUE(this->RunPixelTest(
|
| + &pass_list,
|
| + base::FilePath(FILE_PATH_LITERAL("blue_yellow_flipped.png")),
|
| + ExactPixelComparator(true)));
|
| +}
|
| +
|
| +TEST_F(GLRendererPixelTestWithFlippedOutputSurface, CheckChildPassUnflipped) {
|
| + // This draws a blue rect above a yellow rect with an inverted output surface.
|
| + gfx::Rect viewport_rect(this->device_viewport_size_);
|
| +
|
| + RenderPassId root_pass_id(1, 1);
|
| + scoped_ptr<RenderPass> root_pass =
|
| + CreateTestRootRenderPass(root_pass_id, viewport_rect);
|
| +
|
| + RenderPassId child_pass_id(2, 2);
|
| + gfx::Rect pass_rect(this->device_viewport_size_);
|
| + gfx::Transform transform_to_root;
|
| + scoped_ptr<RenderPass> child_pass =
|
| + CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
|
| +
|
| + gfx::Transform content_to_target_transform;
|
| + SharedQuadState* shared_state = CreateTestSharedQuadState(
|
| + content_to_target_transform, viewport_rect, child_pass.get());
|
| +
|
| + gfx::Rect blue_rect(0,
|
| + 0,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2);
|
| + SolidColorDrawQuad* blue =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + blue->SetNew(shared_state, blue_rect, blue_rect, SK_ColorBLUE, false);
|
| + gfx::Rect yellow_rect(0,
|
| + this->device_viewport_size_.height() / 2,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2);
|
| + SolidColorDrawQuad* yellow =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + yellow->SetNew(shared_state, yellow_rect, yellow_rect, SK_ColorYELLOW, false);
|
| +
|
| + SharedQuadState* pass_shared_state =
|
| + CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
|
| + CreateTestRenderPassDrawQuad(
|
| + pass_shared_state, pass_rect, child_pass_id, root_pass.get());
|
| +
|
| + RenderPassList pass_list;
|
| + pass_list.push_back(child_pass.Pass());
|
| + pass_list.push_back(root_pass.Pass());
|
| +
|
| + // Check that the child pass remains unflipped.
|
| + EXPECT_TRUE(this->RunPixelTestWithReadbackTarget(
|
| + &pass_list,
|
| + pass_list.front(),
|
| + base::FilePath(FILE_PATH_LITERAL("blue_yellow.png")),
|
| + ExactPixelComparator(true)));
|
| +}
|
| +
|
| +TEST_F(GLRendererPixelTest, CheckReadbackSubset) {
|
| + gfx::Rect viewport_rect(this->device_viewport_size_);
|
| +
|
| + RenderPassId root_pass_id(1, 1);
|
| + scoped_ptr<RenderPass> root_pass =
|
| + CreateTestRootRenderPass(root_pass_id, viewport_rect);
|
| +
|
| + RenderPassId child_pass_id(2, 2);
|
| + gfx::Rect pass_rect(this->device_viewport_size_);
|
| + gfx::Transform transform_to_root;
|
| + scoped_ptr<RenderPass> child_pass =
|
| + CreateTestRenderPass(child_pass_id, pass_rect, transform_to_root);
|
| +
|
| + gfx::Transform content_to_target_transform;
|
| + SharedQuadState* shared_state = CreateTestSharedQuadState(
|
| + content_to_target_transform, viewport_rect, child_pass.get());
|
| +
|
| + // Draw a green quad full-size with a blue quad in the lower-right corner.
|
| + gfx::Rect blue_rect(this->device_viewport_size_.width() * 3 / 4,
|
| + this->device_viewport_size_.height() * 3 / 4,
|
| + this->device_viewport_size_.width() * 3 / 4,
|
| + this->device_viewport_size_.height() * 3 / 4);
|
| + SolidColorDrawQuad* blue =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + blue->SetNew(shared_state, blue_rect, blue_rect, SK_ColorBLUE, false);
|
| + gfx::Rect green_rect(0,
|
| + 0,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height());
|
| + SolidColorDrawQuad* green =
|
| + child_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + green->SetNew(shared_state, green_rect, green_rect, SK_ColorGREEN, false);
|
| +
|
| + SharedQuadState* pass_shared_state =
|
| + CreateTestSharedQuadState(gfx::Transform(), pass_rect, root_pass.get());
|
| + CreateTestRenderPassDrawQuad(
|
| + pass_shared_state, pass_rect, child_pass_id, root_pass.get());
|
| +
|
| + RenderPassList pass_list;
|
| + pass_list.push_back(child_pass.Pass());
|
| + pass_list.push_back(root_pass.Pass());
|
| +
|
| + // Check that the child pass remains unflipped.
|
| + gfx::Rect capture_rect(this->device_viewport_size_.width() / 2,
|
| + this->device_viewport_size_.height() / 2,
|
| + this->device_viewport_size_.width() / 2,
|
| + this->device_viewport_size_.height() / 2);
|
| + EXPECT_TRUE(this->RunPixelTestWithReadbackTargetAndArea(
|
| + &pass_list,
|
| + pass_list.front(),
|
| + base::FilePath(FILE_PATH_LITERAL("green_small_with_blue_corner.png")),
|
| + ExactPixelComparator(true),
|
| + &capture_rect));
|
| +}
|
| +
|
| TEST_F(GLRendererPixelTest, PictureDrawQuadTexture4444) {
|
| gfx::Size pile_tile_size(1000, 1000);
|
| gfx::Rect viewport(this->device_viewport_size_);
|
|
|