Skip to content

[Impeller] Image cropped when drawn with translate and MatrixImageFilter #135777

@gaaclarke

Description

@gaaclarke

I found this bug when looking into #126583, it may be a more simple case, but seems to manifest differently.

cc @bdero

version

7b989a28514edbfa3191a91031c1ebc5d86e0e89

test

TEST_P(AiksTest, MatrixImageFilterMagnify) {
  Canvas canvas;
  canvas.Scale(GetContentScale());
  auto image = std::make_shared<Image>(CreateTextureForFixture("airplane.jpg"));
  canvas.DrawImage(image, {100, 100}, {});
  canvas.Translate({600, -200});
  canvas.SaveLayer({
      .image_filter = std::make_shared<MatrixImageFilter>(
          Matrix{
              2, 0, 0, 0,  //
              0, 2, 0, 0,  //
              0, 0, 2, 0,  //
              0, 0, 0, 1   //
          },
          SamplerDescriptor{}),
  });
  canvas.DrawImage(image, {0, 0}, Paint{.color = Color(1.0, 1.0, 1.0, 0.5)});
  canvas.Restore();

  ASSERT_TRUE(OpenPlaygroundHere(canvas.EndRecordingAsPicture()));
}

screenshot

Screenshot 2023-09-29 at 3 40 11 PM

Metadata

Metadata

Assignees

No one assigned

    Labels

    e: impellerImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions