diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter index 1f2f795bef59c..ba18f9549f817 100644 --- a/ci/licenses_golden/licenses_flutter +++ b/ci/licenses_golden/licenses_flutter @@ -42629,8 +42629,6 @@ ORIGIN: ../../../flutter/impeller/aiks/color_source.cc + ../../../flutter/LICENS ORIGIN: ../../../flutter/impeller/aiks/color_source.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/aiks/experimental_canvas.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/aiks/experimental_canvas.h + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/aiks/image.cc + ../../../flutter/LICENSE -ORIGIN: ../../../flutter/impeller/aiks/image.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/aiks/image_filter.cc + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/aiks/image_filter.h + ../../../flutter/LICENSE ORIGIN: ../../../flutter/impeller/aiks/paint.cc + ../../../flutter/LICENSE @@ -45518,8 +45516,6 @@ FILE: ../../../flutter/impeller/aiks/color_source.cc FILE: ../../../flutter/impeller/aiks/color_source.h FILE: ../../../flutter/impeller/aiks/experimental_canvas.cc FILE: ../../../flutter/impeller/aiks/experimental_canvas.h -FILE: ../../../flutter/impeller/aiks/image.cc -FILE: ../../../flutter/impeller/aiks/image.h FILE: ../../../flutter/impeller/aiks/image_filter.cc FILE: ../../../flutter/impeller/aiks/image_filter.h FILE: ../../../flutter/impeller/aiks/paint.cc diff --git a/display_list/testing/dl_test_surface_metal.cc b/display_list/testing/dl_test_surface_metal.cc index 5894c64a5475e..c80dab3a90f60 100644 --- a/display_list/testing/dl_test_surface_metal.cc +++ b/display_list/testing/dl_test_surface_metal.cc @@ -118,9 +118,8 @@ sk_sp DlMetalSurfaceProvider::MakeImpellerImage( flutter::DlBlendMode::kSrc); list->Dispatch(dispatcher); auto picture = dispatcher.EndRecordingAsPicture(); - std::shared_ptr image = + std::shared_ptr texture = picture.ToImage(*aiks_context_, {width, height}); - std::shared_ptr texture = image->GetTexture(); return impeller::DlImageImpeller::Make(texture); #endif // EXPERIMENTAL_CANVAS diff --git a/impeller/aiks/BUILD.gn b/impeller/aiks/BUILD.gn index 4cef0a771b730..bd7a2ad8199ab 100644 --- a/impeller/aiks/BUILD.gn +++ b/impeller/aiks/BUILD.gn @@ -16,8 +16,6 @@ impeller_component("aiks") { "color_source.h", "experimental_canvas.cc", "experimental_canvas.h", - "image.cc", - "image.h", "image_filter.cc", "image_filter.h", "paint.cc", diff --git a/impeller/aiks/aiks_blend_unittests.cc b/impeller/aiks/aiks_blend_unittests.cc index d731c642edd19..ccd5bf3ee73ba 100644 --- a/impeller/aiks/aiks_blend_unittests.cc +++ b/impeller/aiks/aiks_blend_unittests.cc @@ -84,7 +84,7 @@ TEST_P(AiksTest, ColorWheel) { } }; - std::shared_ptr color_wheel_image; + std::shared_ptr color_wheel_image; Matrix color_wheel_transform; auto callback = [&](AiksContext& renderer) -> std::optional { @@ -131,7 +131,7 @@ TEST_P(AiksTest, ColorWheel) { if (!snapshot.has_value() || !snapshot->texture) { return std::nullopt; } - color_wheel_image = std::make_shared(snapshot->texture); + color_wheel_image = snapshot->texture; color_wheel_transform = snapshot->transform; } diff --git a/impeller/aiks/aiks_unittests.cc b/impeller/aiks/aiks_unittests.cc index eb1941e99fbe5..283aef4df5727 100644 --- a/impeller/aiks/aiks_unittests.cc +++ b/impeller/aiks/aiks_unittests.cc @@ -16,7 +16,6 @@ #include "gtest/gtest.h" #include "impeller/aiks/canvas.h" #include "impeller/aiks/color_filter.h" -#include "impeller/aiks/image.h" #include "impeller/aiks/image_filter.h" #include "impeller/aiks/testing/context_spy.h" #include "impeller/core/device_buffer.h" @@ -126,7 +125,7 @@ TEST_P(AiksTest, DrawPaintAbsorbsClears) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; @@ -150,7 +149,7 @@ TEST_P(AiksTest, std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), GetBackend() == PlaygroundBackend::kOpenGLES ? 4llu : 3llu); @@ -171,7 +170,7 @@ TEST_P(AiksTest, DrawRectAbsorbsClears) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; @@ -191,7 +190,7 @@ TEST_P(AiksTest, DrawRectAbsorbsClearsNegativeRRect) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; @@ -211,7 +210,7 @@ TEST_P(AiksTest, DrawRectAbsorbsClearsNegativeRotation) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; @@ -231,7 +230,7 @@ TEST_P(AiksTest, DrawRectAbsorbsClearsNegative) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {301, 301}); + std::shared_ptr image = picture.ToImage(renderer, {301, 301}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; @@ -255,7 +254,7 @@ TEST_P(AiksTest, ClipRectElidesNoOpClips) { std::shared_ptr real_context = GetContext(); std::shared_ptr mock_context = spy->MakeContext(real_context); AiksContext renderer(mock_context, nullptr); - std::shared_ptr image = picture.ToImage(renderer, {300, 300}); + std::shared_ptr image = picture.ToImage(renderer, {300, 300}); ASSERT_EQ(spy->render_passes_.size(), 1llu); std::shared_ptr render_pass = spy->render_passes_[0]; diff --git a/impeller/aiks/canvas.cc b/impeller/aiks/canvas.cc index 38ae859a8c0f3..8332ee97f9b02 100644 --- a/impeller/aiks/canvas.cc +++ b/impeller/aiks/canvas.cc @@ -719,7 +719,7 @@ void Canvas::DrawPoints(std::vector points, AddRenderEntityToCurrentPass(std::move(entity)); } -void Canvas::DrawImage(const std::shared_ptr& image, +void Canvas::DrawImage(const std::shared_ptr& image, Point offset, const Paint& paint, SamplerDescriptor sampler) { @@ -733,7 +733,7 @@ void Canvas::DrawImage(const std::shared_ptr& image, DrawImageRect(image, source, dest, paint, std::move(sampler)); } -void Canvas::DrawImageRect(const std::shared_ptr& image, +void Canvas::DrawImageRect(const std::shared_ptr& image, Rect source, Rect dest, const Paint& paint, @@ -750,7 +750,7 @@ void Canvas::DrawImageRect(const std::shared_ptr& image, } auto texture_contents = TextureContents::MakeRect(dest); - texture_contents->SetTexture(image->GetTexture()); + texture_contents->SetTexture(image); texture_contents->SetSourceRect(source); texture_contents->SetStrictSourceRect(src_rect_constraint == SourceRectConstraint::kStrict); @@ -991,7 +991,7 @@ void Canvas::DrawVertices(const std::shared_ptr& vertices, AddRenderEntityToCurrentPass(std::move(entity)); } -void Canvas::DrawAtlas(const std::shared_ptr& atlas, +void Canvas::DrawAtlas(const std::shared_ptr& atlas, std::vector transforms, std::vector texture_coordinates, std::vector colors, @@ -1007,7 +1007,7 @@ void Canvas::DrawAtlas(const std::shared_ptr& atlas, contents->SetColors(std::move(colors)); contents->SetTransforms(std::move(transforms)); contents->SetTextureCoordinates(std::move(texture_coordinates)); - contents->SetTexture(atlas->GetTexture()); + contents->SetTexture(atlas); contents->SetSamplerDescriptor(std::move(sampler)); contents->SetBlendMode(blend_mode); contents->SetCullRect(cull_rect); diff --git a/impeller/aiks/canvas.h b/impeller/aiks/canvas.h index 834b3d118e1e2..ff10379c8ca21 100644 --- a/impeller/aiks/canvas.h +++ b/impeller/aiks/canvas.h @@ -11,7 +11,6 @@ #include #include -#include "impeller/aiks/image.h" #include "impeller/aiks/image_filter.h" #include "impeller/aiks/paint.h" #include "impeller/aiks/picture.h" @@ -129,13 +128,13 @@ class Canvas { const Paint& paint, PointStyle point_style); - void DrawImage(const std::shared_ptr& image, + void DrawImage(const std::shared_ptr& image, Point offset, const Paint& paint, SamplerDescriptor sampler = {}); void DrawImageRect( - const std::shared_ptr& image, + const std::shared_ptr& image, Rect source, Rect dest, const Paint& paint, @@ -167,7 +166,7 @@ class Canvas { BlendMode blend_mode, const Paint& paint); - void DrawAtlas(const std::shared_ptr& atlas, + void DrawAtlas(const std::shared_ptr& atlas, std::vector transforms, std::vector texture_coordinates, std::vector colors, diff --git a/impeller/aiks/image.cc b/impeller/aiks/image.cc deleted file mode 100644 index 342c4eee6a47d..0000000000000 --- a/impeller/aiks/image.cc +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "impeller/aiks/image.h" - -namespace impeller { - -Image::Image(std::shared_ptr texture) : texture_(std::move(texture)) {} - -Image::~Image() = default; - -ISize Image::GetSize() const { - return texture_ ? texture_->GetSize() : ISize{}; -} - -std::shared_ptr Image::GetTexture() const { - return texture_; -} - -} // namespace impeller diff --git a/impeller/aiks/image.h b/impeller/aiks/image.h deleted file mode 100644 index c764524a8cfda..0000000000000 --- a/impeller/aiks/image.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_IMPELLER_AIKS_IMAGE_H_ -#define FLUTTER_IMPELLER_AIKS_IMAGE_H_ - -#include - -#include "impeller/core/texture.h" - -namespace impeller { - -class Image { - public: - explicit Image(std::shared_ptr texture); - - ~Image(); - - ISize GetSize() const; - - std::shared_ptr GetTexture() const; - - private: - const std::shared_ptr texture_; - - Image(const Image&) = delete; - - Image& operator=(const Image&) = delete; -}; - -} // namespace impeller - -#endif // FLUTTER_IMPELLER_AIKS_IMAGE_H_ diff --git a/impeller/aiks/picture.cc b/impeller/aiks/picture.cc index 64ea0c19aea7a..fc8ad2ed3639d 100644 --- a/impeller/aiks/picture.cc +++ b/impeller/aiks/picture.cc @@ -28,13 +28,12 @@ std::optional Picture::Snapshot(AiksContext& context) { .transform = Matrix::MakeTranslation(coverage->GetOrigin())}; } -std::shared_ptr Picture::ToImage(AiksContext& context, - ISize size) const { +std::shared_ptr Picture::ToImage(AiksContext& context, + ISize size) const { if (size.IsEmpty()) { return nullptr; } - auto texture = RenderToTexture(context, size); - return texture ? std::make_shared(texture) : nullptr; + return RenderToTexture(context, size); } std::shared_ptr Picture::RenderToTexture( diff --git a/impeller/aiks/picture.h b/impeller/aiks/picture.h index 622a92b2fc4a4..f461c7ff3f15c 100644 --- a/impeller/aiks/picture.h +++ b/impeller/aiks/picture.h @@ -9,7 +9,6 @@ #include #include "impeller/aiks/aiks_context.h" -#include "impeller/aiks/image.h" #include "impeller/entity/entity_pass.h" namespace impeller { @@ -19,7 +18,7 @@ struct Picture { std::optional Snapshot(AiksContext& context); - std::shared_ptr ToImage(AiksContext& context, ISize size) const; + std::shared_ptr ToImage(AiksContext& context, ISize size) const; private: std::shared_ptr RenderToTexture( diff --git a/impeller/display_list/dl_dispatcher.cc b/impeller/display_list/dl_dispatcher.cc index 7b0a57c7f48a3..888f46bd393f0 100644 --- a/impeller/display_list/dl_dispatcher.cc +++ b/impeller/display_list/dl_dispatcher.cc @@ -1017,12 +1017,11 @@ void DlDispatcherBase::drawImageRect( flutter::DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint = SrcRectConstraint::kFast) { - GetCanvas().DrawImageRect( - std::make_shared(image->impeller_texture()), // image - skia_conversions::ToRect(src), // source rect - skia_conversions::ToRect(dst), // destination rect - render_with_attributes ? paint_ : Paint(), // paint - ToSamplerDescriptor(sampling) // sampling + GetCanvas().DrawImageRect(image->impeller_texture(), // image + skia_conversions::ToRect(src), // source rect + skia_conversions::ToRect(dst), // destination rect + render_with_attributes ? paint_ : Paint(), // paint + ToSamplerDescriptor(sampling) // sampling ); } @@ -1034,7 +1033,7 @@ void DlDispatcherBase::drawImageNine(const sk_sp image, bool render_with_attributes) { NinePatchConverter converter = {}; converter.DrawNinePatch( - std::make_shared(image->impeller_texture()), + image->impeller_texture(), Rect::MakeLTRB(center.fLeft, center.fTop, center.fRight, center.fBottom), skia_conversions::ToRect(dst), ToSamplerDescriptor(filter), &GetCanvas(), &paint_); @@ -1050,12 +1049,11 @@ void DlDispatcherBase::drawAtlas(const sk_sp atlas, flutter::DlImageSampling sampling, const SkRect* cull_rect, bool render_with_attributes) { - GetCanvas().DrawAtlas(std::make_shared(atlas->impeller_texture()), - skia_conversions::ToRSXForms(xform, count), - skia_conversions::ToRects(tex, count), - ToColors(colors, count), ToBlendMode(mode), - ToSamplerDescriptor(sampling), - skia_conversions::ToRect(cull_rect), paint_); + GetCanvas().DrawAtlas( + atlas->impeller_texture(), skia_conversions::ToRSXForms(xform, count), + skia_conversions::ToRects(tex, count), ToColors(colors, count), + ToBlendMode(mode), ToSamplerDescriptor(sampling), + skia_conversions::ToRect(cull_rect), paint_); } // |flutter::DlOpReceiver| diff --git a/impeller/display_list/nine_patch_converter.cc b/impeller/display_list/nine_patch_converter.cc index 3b71cd9fecb48..f1c1ad04fbf0b 100644 --- a/impeller/display_list/nine_patch_converter.cc +++ b/impeller/display_list/nine_patch_converter.cc @@ -57,7 +57,7 @@ std::vector NinePatchConverter::InitSlices(double img0, // clang-format on } -void NinePatchConverter::DrawNinePatch(const std::shared_ptr& image, +void NinePatchConverter::DrawNinePatch(const std::shared_ptr& image, Rect center, Rect dst, const SamplerDescriptor& sampler, diff --git a/impeller/display_list/nine_patch_converter.h b/impeller/display_list/nine_patch_converter.h index 71bb4f5df386a..75688c2c84098 100644 --- a/impeller/display_list/nine_patch_converter.h +++ b/impeller/display_list/nine_patch_converter.h @@ -8,7 +8,6 @@ #include #include "impeller/aiks/canvas.h" -#include "impeller/aiks/image.h" #include "impeller/aiks/paint.h" #include "impeller/core/sampler_descriptor.h" @@ -21,7 +20,7 @@ class NinePatchConverter { ~NinePatchConverter(); - void DrawNinePatch(const std::shared_ptr& image, + void DrawNinePatch(const std::shared_ptr& image, Rect center, Rect dst, const SamplerDescriptor& sampler, diff --git a/impeller/golden_tests/metal_screenshotter.mm b/impeller/golden_tests/metal_screenshotter.mm index 71058c86512ad..e836e45a8d3c2 100644 --- a/impeller/golden_tests/metal_screenshotter.mm +++ b/impeller/golden_tests/metal_screenshotter.mm @@ -27,11 +27,10 @@ bool scale_content) { Vector2 content_scale = scale_content ? playground_->GetContentScale() : Vector2{1, 1}; - std::shared_ptr image = picture.ToImage( + std::shared_ptr image = picture.ToImage( aiks_context, ISize(size.width * content_scale.x, size.height * content_scale.y)); - std::shared_ptr texture = image->GetTexture(); - return MakeScreenshot(aiks_context, texture); + return MakeScreenshot(aiks_context, image); } std::unique_ptr MetalScreenshotter::MakeScreenshot( diff --git a/impeller/golden_tests/vulkan_screenshotter.mm b/impeller/golden_tests/vulkan_screenshotter.mm index 2b04a497cbe7e..843db4b5d76fe 100644 --- a/impeller/golden_tests/vulkan_screenshotter.mm +++ b/impeller/golden_tests/vulkan_screenshotter.mm @@ -112,11 +112,10 @@ CGImagePtr flipped_image(CGBitmapContextCreateImage(flipped_context.get()), bool scale_content) { Vector2 content_scale = scale_content ? playground_->GetContentScale() : Vector2{1, 1}; - std::shared_ptr image = picture.ToImage( + std::shared_ptr image = picture.ToImage( aiks_context, ISize(size.width * content_scale.x, size.height * content_scale.y)); - std::shared_ptr texture = image->GetTexture(); - return ReadTexture(aiks_context.GetContext(), texture); + return ReadTexture(aiks_context.GetContext(), image); } std::unique_ptr VulkanScreenshotter::MakeScreenshot( diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 1a1623d285dd9..20d07b88f48f4 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -935,10 +935,9 @@ ScreenshotLayerTreeAsImageImpeller( impeller::DlDispatcher dispatcher; builder.Build()->Dispatch(dispatcher); const auto& picture = dispatcher.EndRecordingAsPicture(); - const auto& image = picture.ToImage( + texture = picture.ToImage( *aiks_context, impeller::ISize(tree->frame_size().fWidth, tree->frame_size().fHeight)); - texture = image->GetTexture(); #endif // EXPERIMENTAL_CANVAS impeller::DeviceBufferDescriptor buffer_desc; diff --git a/shell/common/snapshot_controller_impeller.cc b/shell/common/snapshot_controller_impeller.cc index 8aea6ecb85a70..1dfbd3ff55ba9 100644 --- a/shell/common/snapshot_controller_impeller.cc +++ b/shell/common/snapshot_controller_impeller.cc @@ -92,10 +92,10 @@ sk_sp DoMakeRasterSnapshot( display_list->Dispatch(dispatcher); impeller::Picture picture = dispatcher.EndRecordingAsPicture(); - std::shared_ptr image = + std::shared_ptr image = picture.ToImage(*context, render_target_size); if (image) { - return impeller::DlImageImpeller::Make(image->GetTexture(), + return impeller::DlImageImpeller::Make(image, DlImage::OwningContext::kRaster); } #endif // EXPERIMENTAL_CANVAS