fixed impeller golden content scale (#167308)

fixes https://github.com/flutter/flutter/issues/162036

This fixes the problem my scaling the render texture by the content
scalar. This means locally you'll probably be generating 2048x1536
images. This matches the rendering that is happening in playgrounds. On
CI the content scalar should be one so there is no change there.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
This commit is contained in:
gaaclarke 2025-04-17 14:37:00 -07:00 committed by GitHub
parent 0e4bebffa1
commit a23e4ca194
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 3 deletions

View File

@ -222,10 +222,16 @@ bool GoldenPlaygroundTest::OpenPlaygroundHere(
AiksContext renderer(GetContext(), typographer_context_);
std::unique_ptr<testing::Screenshot> screenshot;
Point content_scale =
pimpl_->screenshotter->GetPlayground().GetContentScale();
ISize physical_window_size(
std::round(pimpl_->window_size.width * content_scale.x),
std::round(pimpl_->window_size.height * content_scale.y));
for (int i = 0; i < 2; ++i) {
auto display_list = callback();
auto texture =
DisplayListToTexture(display_list, pimpl_->window_size, renderer);
DisplayListToTexture(display_list, physical_window_size, renderer);
screenshot = pimpl_->screenshotter->MakeScreenshot(renderer, texture);
}
return SaveScreenshot(std::move(screenshot));
@ -320,9 +326,14 @@ fml::Status GoldenPlaygroundTest::SetCapabilities(
std::unique_ptr<testing::Screenshot> GoldenPlaygroundTest::MakeScreenshot(
const sk_sp<flutter::DisplayList>& list) {
AiksContext renderer(GetContext(), typographer_context_);
Point content_scale =
pimpl_->screenshotter->GetPlayground().GetContentScale();
ISize physical_window_size(
std::round(pimpl_->window_size.width * content_scale.x),
std::round(pimpl_->window_size.height * content_scale.y));
return pimpl_->screenshotter->MakeScreenshot(
renderer, DisplayListToTexture(list, pimpl_->window_size, renderer));
renderer, DisplayListToTexture(list, physical_window_size, renderer));
}
} // namespace impeller

View File

@ -43,7 +43,7 @@ std::unique_ptr<Screenshot> MetalScreenshotter::MakeScreenshot(
imageByApplyingOrientation:kCGImagePropertyOrientationDownMirrored];
CGImageRef cgImage = [cicontext createCGImage:flipped
fromRect:[ciImage extent]];
fromRect:[flipped extent]];
// NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDeleteLeaks)
return std::unique_ptr<MetalScreenshot>(new MetalScreenshot(cgImage));