| Index: cc/output/renderer_pixeltest.cc
|
| diff --git a/cc/output/renderer_pixeltest.cc b/cc/output/renderer_pixeltest.cc
|
| index e321fab69c30469b7dc98e5a09a777240652c6a8..45615c0baa54d3bbd0cf3647b894d64c63a73ae7 100644
|
| --- a/cc/output/renderer_pixeltest.cc
|
| +++ b/cc/output/renderer_pixeltest.cc
|
| @@ -651,6 +651,165 @@ TYPED_TEST(RendererPixelTest, FastPassColorFilterAlpha) {
|
| FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
|
| }
|
|
|
| +TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) {
|
| + gfx::Rect viewport_rect(this->device_viewport_size_);
|
| +
|
| + RenderPass::Id root_pass_id(1, 1);
|
| + scoped_ptr<RenderPass> root_pass =
|
| + CreateTestRootRenderPass(root_pass_id, viewport_rect);
|
| +
|
| + RenderPass::Id 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;
|
| + scoped_ptr<SharedQuadState> shared_state =
|
| + CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
|
| + shared_state->opacity = 0.5f;
|
| +
|
| + scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
|
| + blue->SetNew(shared_state.get(),
|
| + gfx::Rect(0,
|
| + 0,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2),
|
| + SK_ColorBLUE,
|
| + false);
|
| + scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
|
| + yellow->SetNew(shared_state.get(),
|
| + gfx::Rect(0,
|
| + this->device_viewport_size_.height() / 2,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2),
|
| + SK_ColorYELLOW,
|
| + false);
|
| +
|
| + scoped_ptr<SharedQuadState> blank_state =
|
| + CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
|
| +
|
| + scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
|
| + white->SetNew(blank_state.get(),
|
| + viewport_rect,
|
| + SK_ColorWHITE,
|
| + false);
|
| +
|
| + child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
|
| + child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
|
| + child_pass->quad_list.push_back(white.PassAs<DrawQuad>());
|
| +
|
| + scoped_ptr<SharedQuadState> pass_shared_state =
|
| + CreateTestSharedQuadState(gfx::Transform(), pass_rect);
|
| +
|
| + FilterOperations filters;
|
| + filters.Append(FilterOperation::CreateSaturateFilter(0.5f));
|
| +
|
| + scoped_ptr<RenderPassDrawQuad> render_pass_quad =
|
| + RenderPassDrawQuad::Create();
|
| + render_pass_quad->SetNew(pass_shared_state.get(),
|
| + pass_rect,
|
| + child_pass_id,
|
| + false,
|
| + 0,
|
| + pass_rect,
|
| + gfx::RectF(),
|
| + filters,
|
| + FilterOperations());
|
| +
|
| + root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>());
|
| +
|
| + RenderPassList pass_list;
|
| + pass_list.push_back(child_pass.Pass());
|
| + pass_list.push_back(root_pass.Pass());
|
| +
|
| + EXPECT_TRUE(this->RunPixelTest(
|
| + &pass_list,
|
| + PixelTest::NoOffscreenContext,
|
| + base::FilePath(FILE_PATH_LITERAL("blue_yellow_alpha.png")),
|
| + ExactPixelComparator(true)));
|
| +}
|
| +
|
| +TYPED_TEST(RendererPixelTest, FastPassFilterChain) {
|
| + gfx::Rect viewport_rect(this->device_viewport_size_);
|
| +
|
| + RenderPass::Id root_pass_id(1, 1);
|
| + scoped_ptr<RenderPass> root_pass =
|
| + CreateTestRootRenderPass(root_pass_id, viewport_rect);
|
| +
|
| + RenderPass::Id 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;
|
| + scoped_ptr<SharedQuadState> shared_state =
|
| + CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
|
| + shared_state->opacity = 0.5f;
|
| +
|
| + scoped_ptr<SolidColorDrawQuad> blue = SolidColorDrawQuad::Create();
|
| + blue->SetNew(shared_state.get(),
|
| + gfx::Rect(0,
|
| + 0,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2),
|
| + SK_ColorBLUE,
|
| + false);
|
| + scoped_ptr<SolidColorDrawQuad> yellow = SolidColorDrawQuad::Create();
|
| + yellow->SetNew(shared_state.get(),
|
| + gfx::Rect(0,
|
| + this->device_viewport_size_.height() / 2,
|
| + this->device_viewport_size_.width(),
|
| + this->device_viewport_size_.height() / 2),
|
| + SK_ColorYELLOW,
|
| + false);
|
| +
|
| + scoped_ptr<SharedQuadState> blank_state =
|
| + CreateTestSharedQuadState(content_to_target_transform, viewport_rect);
|
| +
|
| + scoped_ptr<SolidColorDrawQuad> white = SolidColorDrawQuad::Create();
|
| + white->SetNew(blank_state.get(),
|
| + viewport_rect,
|
| + SK_ColorWHITE,
|
| + false);
|
| +
|
| + child_pass->quad_list.push_back(blue.PassAs<DrawQuad>());
|
| + child_pass->quad_list.push_back(yellow.PassAs<DrawQuad>());
|
| + child_pass->quad_list.push_back(white.PassAs<DrawQuad>());
|
| +
|
| + scoped_ptr<SharedQuadState> pass_shared_state =
|
| + CreateTestSharedQuadState(gfx::Transform(), pass_rect);
|
| +
|
| + FilterOperations filters;
|
| + filters.Append(FilterOperation::CreateGrayscaleFilter(1.f));
|
| + filters.Append(FilterOperation::CreateBrightnessFilter(0.5f));
|
| +
|
| + scoped_ptr<RenderPassDrawQuad> render_pass_quad =
|
| + RenderPassDrawQuad::Create();
|
| + render_pass_quad->SetNew(pass_shared_state.get(),
|
| + pass_rect,
|
| + child_pass_id,
|
| + false,
|
| + 0,
|
| + pass_rect,
|
| + gfx::RectF(),
|
| + filters,
|
| + FilterOperations());
|
| +
|
| + root_pass->quad_list.push_back(render_pass_quad.PassAs<DrawQuad>());
|
| +
|
| + RenderPassList pass_list;
|
| + pass_list.push_back(child_pass.Pass());
|
| + pass_list.push_back(root_pass.Pass());
|
| +
|
| + EXPECT_TRUE(this->RunPixelTest(
|
| + &pass_list,
|
| + PixelTest::NoOffscreenContext,
|
| + base::FilePath(FILE_PATH_LITERAL("blue_yellow_filter_chain.png")),
|
| + ExactPixelComparator(true)));
|
| +}
|
| +
|
| TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) {
|
| gfx::Rect viewport_rect(this->device_viewport_size_);
|
|
|
|
|