From 202d6b79946841210feddf4cc09c61a1b1aa0bbf Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 27 Mar 2025 20:19:24 -0700 Subject: [PATCH] [CI] remove check for exact golden files. (#166031) Instead make sure at least 1 png is generated. --------- Co-authored-by: Matan Lurey --- engine/src/flutter/CONTRIBUTING.md | 10 +- .../display_list/aiks_dl_atlas_unittests.cc | 2 +- engine/src/flutter/pubspec.yaml | 1 - .../testing/impeller_golden_tests_output.txt | 1025 ----------------- .../testing/ios_scenario_app/pubspec.yaml | 1 - engine/src/flutter/testing/run_tests.py | 34 +- .../flutter/tools/dir_contents_diff/README.md | 12 - .../bin/dir_contents_diff.dart | 11 - .../lib/dir_contents_diff.dart | 103 -- .../tools/dir_contents_diff/pubspec.yaml | 14 - .../test/dir_contents_diff_test.dart | 78 -- .../test/file_bad_missing.txt | 1 - .../test/file_bad_unexpected.txt | 3 - .../tools/dir_contents_diff/test/file_ok.txt | 2 - .../test/file_ok_eof_newline.txt | 2 - .../dir_contents_diff/test/fixtures/a.txt | 1 - .../dir_contents_diff/test/fixtures/b.txt | 1 - engine/src/flutter/tools/pub_get_offline.py | 1 - 18 files changed, 24 insertions(+), 1278 deletions(-) delete mode 100644 engine/src/flutter/testing/impeller_golden_tests_output.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/README.md delete mode 100644 engine/src/flutter/tools/dir_contents_diff/bin/dir_contents_diff.dart delete mode 100644 engine/src/flutter/tools/dir_contents_diff/lib/dir_contents_diff.dart delete mode 100644 engine/src/flutter/tools/dir_contents_diff/pubspec.yaml delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/dir_contents_diff_test.dart delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/file_bad_missing.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/file_bad_unexpected.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/file_ok.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/file_ok_eof_newline.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/fixtures/a.txt delete mode 100644 engine/src/flutter/tools/dir_contents_diff/test/fixtures/b.txt diff --git a/engine/src/flutter/CONTRIBUTING.md b/engine/src/flutter/CONTRIBUTING.md index 2251fe1237..113842c103 100644 --- a/engine/src/flutter/CONTRIBUTING.md +++ b/engine/src/flutter/CONTRIBUTING.md @@ -59,7 +59,7 @@ performance implications. See [#49801][pr_49801] for an example. #### Linux Embedding -> [!NOTE] +> [!NOTE] > The Linux embedding instead follows idiomatic GObject-based C style. Use of C++ in the [Linux embedding][] is discouraged in that embedding to avoid @@ -215,14 +215,10 @@ in postsubmit. ### Skia Gold -The Flutter engine uses [Skia Gold][skia_gold] for image comparison tests which fail if: - -- The image is different from an accepted baseline. -- An image is not uploaded but is expected to be (see - [`dir_contents_diff`][dir_contents_diff]). +The Flutter engine uses [Skia Gold][skia_gold] for image comparison tests which +fail if the image is different from an accepted baseline image. [skia_gold]: https://flutter-engine-gold.skia.org/ -[dir_contents_diff]: ./tools/dir_contents_diff/ Any untriaged failures will block presubmit and postsubmit tests. diff --git a/engine/src/flutter/impeller/display_list/aiks_dl_atlas_unittests.cc b/engine/src/flutter/impeller/display_list/aiks_dl_atlas_unittests.cc index 4decc11fad..3206db5be6 100644 --- a/engine/src/flutter/impeller/display_list/aiks_dl_atlas_unittests.cc +++ b/engine/src/flutter/impeller/display_list/aiks_dl_atlas_unittests.cc @@ -176,7 +176,7 @@ TEST_P(AiksTest, DrawAtlasPlusWideGamut) { ASSERT_TRUE(OpenPlaygroundHere(builder.Build())); } -TEST_P(AiksTest, DlAtlasGeometryNoBlend) { +TEST_P(AiksTest, DlAtlasGeometryNoBlendRenamed) { auto [texture_coordinates, transforms, atlas] = CreateTestData(this); DlAtlasGeometry geom(atlas->impeller_texture(), transforms.data(), diff --git a/engine/src/flutter/pubspec.yaml b/engine/src/flutter/pubspec.yaml index de7ca12c0c..5b105e8e08 100644 --- a/engine/src/flutter/pubspec.yaml +++ b/engine/src/flutter/pubspec.yaml @@ -97,7 +97,6 @@ workspace: - tools/clangd_check - tools/compare_goldens - tools/const_finder - - tools/dir_contents_diff - tools/engine_tool - tools/header_guard_check - tools/gen_web_locale_keymap diff --git a/engine/src/flutter/testing/impeller_golden_tests_output.txt b/engine/src/flutter/testing/impeller_golden_tests_output.txt deleted file mode 100644 index d0cd95b64e..0000000000 --- a/engine/src/flutter/testing/impeller_golden_tests_output.txt +++ /dev/null @@ -1,1025 +0,0 @@ -digest.json -impeller_GoldenTests_ConicalGradient.png -impeller_Play_AiksTest_AdvancedBlendColorFilterWithDestinationOpacity_Metal.png -impeller_Play_AiksTest_AdvancedBlendColorFilterWithDestinationOpacity_OpenGLES.png -impeller_Play_AiksTest_AdvancedBlendColorFilterWithDestinationOpacity_Vulkan.png -impeller_Play_AiksTest_BackdropFilterOverUnclosedClip_Metal.png -impeller_Play_AiksTest_BackdropFilterOverUnclosedClip_OpenGLES.png -impeller_Play_AiksTest_BackdropFilterOverUnclosedClip_Vulkan.png -impeller_Play_AiksTest_BackdropRestoreUsesCorrectCoverageForFirstRestoredClip_Metal.png -impeller_Play_AiksTest_BackdropRestoreUsesCorrectCoverageForFirstRestoredClip_OpenGLES.png -impeller_Play_AiksTest_BackdropRestoreUsesCorrectCoverageForFirstRestoredClip_Vulkan.png -impeller_Play_AiksTest_BlendModeClear_Metal.png -impeller_Play_AiksTest_BlendModeClear_OpenGLES.png -impeller_Play_AiksTest_BlendModeClear_Vulkan.png -impeller_Play_AiksTest_BlendModeColorBurn_Metal.png -impeller_Play_AiksTest_BlendModeColorBurn_OpenGLES.png -impeller_Play_AiksTest_BlendModeColorBurn_Vulkan.png -impeller_Play_AiksTest_BlendModeColorDodge_Metal.png -impeller_Play_AiksTest_BlendModeColorDodge_OpenGLES.png -impeller_Play_AiksTest_BlendModeColorDodge_Vulkan.png -impeller_Play_AiksTest_BlendModeColor_Metal.png -impeller_Play_AiksTest_BlendModeColor_OpenGLES.png -impeller_Play_AiksTest_BlendModeColor_Vulkan.png -impeller_Play_AiksTest_BlendModeDarken_Metal.png -impeller_Play_AiksTest_BlendModeDarken_OpenGLES.png -impeller_Play_AiksTest_BlendModeDarken_Vulkan.png -impeller_Play_AiksTest_BlendModeDifference_Metal.png -impeller_Play_AiksTest_BlendModeDifference_OpenGLES.png -impeller_Play_AiksTest_BlendModeDifference_Vulkan.png -impeller_Play_AiksTest_BlendModeDstATop_Metal.png -impeller_Play_AiksTest_BlendModeDstATop_OpenGLES.png -impeller_Play_AiksTest_BlendModeDstATop_Vulkan.png -impeller_Play_AiksTest_BlendModeDstIn_Metal.png -impeller_Play_AiksTest_BlendModeDstIn_OpenGLES.png -impeller_Play_AiksTest_BlendModeDstIn_Vulkan.png -impeller_Play_AiksTest_BlendModeDstOut_Metal.png -impeller_Play_AiksTest_BlendModeDstOut_OpenGLES.png -impeller_Play_AiksTest_BlendModeDstOut_Vulkan.png -impeller_Play_AiksTest_BlendModeDstOver_Metal.png -impeller_Play_AiksTest_BlendModeDstOver_OpenGLES.png -impeller_Play_AiksTest_BlendModeDstOver_Vulkan.png -impeller_Play_AiksTest_BlendModeDst_Metal.png -impeller_Play_AiksTest_BlendModeDst_OpenGLES.png -impeller_Play_AiksTest_BlendModeDst_Vulkan.png -impeller_Play_AiksTest_BlendModeExclusion_Metal.png -impeller_Play_AiksTest_BlendModeExclusion_OpenGLES.png -impeller_Play_AiksTest_BlendModeExclusion_Vulkan.png -impeller_Play_AiksTest_BlendModeHardLight_Metal.png -impeller_Play_AiksTest_BlendModeHardLight_OpenGLES.png -impeller_Play_AiksTest_BlendModeHardLight_Vulkan.png -impeller_Play_AiksTest_BlendModeHue_Metal.png -impeller_Play_AiksTest_BlendModeHue_OpenGLES.png -impeller_Play_AiksTest_BlendModeHue_Vulkan.png -impeller_Play_AiksTest_BlendModeLighten_Metal.png -impeller_Play_AiksTest_BlendModeLighten_OpenGLES.png -impeller_Play_AiksTest_BlendModeLighten_Vulkan.png -impeller_Play_AiksTest_BlendModeLuminosity_Metal.png -impeller_Play_AiksTest_BlendModeLuminosity_OpenGLES.png -impeller_Play_AiksTest_BlendModeLuminosity_Vulkan.png -impeller_Play_AiksTest_BlendModeModulate_Metal.png -impeller_Play_AiksTest_BlendModeModulate_OpenGLES.png -impeller_Play_AiksTest_BlendModeModulate_Vulkan.png -impeller_Play_AiksTest_BlendModeMultiply_Metal.png -impeller_Play_AiksTest_BlendModeMultiply_OpenGLES.png -impeller_Play_AiksTest_BlendModeMultiply_Vulkan.png -impeller_Play_AiksTest_BlendModeOverlay_Metal.png -impeller_Play_AiksTest_BlendModeOverlay_OpenGLES.png -impeller_Play_AiksTest_BlendModeOverlay_Vulkan.png -impeller_Play_AiksTest_BlendModePlusAlphaColorFilterWideGamut_Metal.png -impeller_Play_AiksTest_BlendModePlusAlphaWideGamut_Metal.png -impeller_Play_AiksTest_BlendModePlus_Metal.png -impeller_Play_AiksTest_BlendModePlus_OpenGLES.png -impeller_Play_AiksTest_BlendModePlus_Vulkan.png -impeller_Play_AiksTest_BlendModeSaturation_Metal.png -impeller_Play_AiksTest_BlendModeSaturation_OpenGLES.png -impeller_Play_AiksTest_BlendModeSaturation_Vulkan.png -impeller_Play_AiksTest_BlendModeScreen_Metal.png -impeller_Play_AiksTest_BlendModeScreen_OpenGLES.png -impeller_Play_AiksTest_BlendModeScreen_Vulkan.png -impeller_Play_AiksTest_BlendModeShouldCoverWholeScreen_Metal.png -impeller_Play_AiksTest_BlendModeShouldCoverWholeScreen_OpenGLES.png -impeller_Play_AiksTest_BlendModeShouldCoverWholeScreen_Vulkan.png -impeller_Play_AiksTest_BlendModeSoftLight_Metal.png -impeller_Play_AiksTest_BlendModeSoftLight_OpenGLES.png -impeller_Play_AiksTest_BlendModeSoftLight_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcATop_Metal.png -impeller_Play_AiksTest_BlendModeSrcATop_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcATop_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaClear_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaClear_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaClear_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorBurn_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorBurn_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorBurn_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorDodge_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorDodge_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaColorDodge_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaColor_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaColor_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaColor_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDarken_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDarken_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDarken_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDifference_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDifference_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDifference_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstATop_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstATop_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstATop_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstIn_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstIn_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstIn_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOut_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOut_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOut_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOver_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOver_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDstOver_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaDst_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaDst_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaDst_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaExclusion_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaExclusion_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaExclusion_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaHardLight_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaHardLight_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaHardLight_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaHue_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaHue_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaHue_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaLighten_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaLighten_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaLighten_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaLuminosity_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaLuminosity_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaLuminosity_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaModulate_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaModulate_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaModulate_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaMultiply_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaMultiply_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaMultiply_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaOverlay_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaOverlay_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaOverlay_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaPlus_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaPlus_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaPlus_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSaturation_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSaturation_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSaturation_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaScreen_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaScreen_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaScreen_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSoftLight_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSoftLight_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSoftLight_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcATop_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcATop_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcATop_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcIn_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcIn_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcIn_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOut_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOut_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOut_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOver_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOver_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrcOver_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrc_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrc_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaSrc_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcAlphaXor_Metal.png -impeller_Play_AiksTest_BlendModeSrcAlphaXor_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcAlphaXor_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcIn_Metal.png -impeller_Play_AiksTest_BlendModeSrcIn_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcIn_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcOut_Metal.png -impeller_Play_AiksTest_BlendModeSrcOut_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcOut_Vulkan.png -impeller_Play_AiksTest_BlendModeSrcOver_Metal.png -impeller_Play_AiksTest_BlendModeSrcOver_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrcOver_Vulkan.png -impeller_Play_AiksTest_BlendModeSrc_Metal.png -impeller_Play_AiksTest_BlendModeSrc_OpenGLES.png -impeller_Play_AiksTest_BlendModeSrc_Vulkan.png -impeller_Play_AiksTest_BlendModeXor_Metal.png -impeller_Play_AiksTest_BlendModeXor_OpenGLES.png -impeller_Play_AiksTest_BlendModeXor_Vulkan.png -impeller_Play_AiksTest_BlurGradientWithOpacity_Metal.png -impeller_Play_AiksTest_BlurGradientWithOpacity_OpenGLES.png -impeller_Play_AiksTest_BlurGradientWithOpacity_Vulkan.png -impeller_Play_AiksTest_BlurHasNoEdge_Metal.png -impeller_Play_AiksTest_BlurHasNoEdge_OpenGLES.png -impeller_Play_AiksTest_BlurHasNoEdge_Vulkan.png -impeller_Play_AiksTest_BlurredRectangleWithShader_Metal.png -impeller_Play_AiksTest_BlurredRectangleWithShader_OpenGLES.png -impeller_Play_AiksTest_BlurredRectangleWithShader_Vulkan.png -impeller_Play_AiksTest_CanConvertTriangleFanToTriangles_Metal.png -impeller_Play_AiksTest_CanConvertTriangleFanToTriangles_OpenGLES.png -impeller_Play_AiksTest_CanConvertTriangleFanToTriangles_Vulkan.png -impeller_Play_AiksTest_CanDrawAnOpenPathThatIsntARect_Metal.png -impeller_Play_AiksTest_CanDrawAnOpenPathThatIsntARect_OpenGLES.png -impeller_Play_AiksTest_CanDrawAnOpenPathThatIsntARect_Vulkan.png -impeller_Play_AiksTest_CanDrawAnOpenPath_Metal.png -impeller_Play_AiksTest_CanDrawAnOpenPath_OpenGLES.png -impeller_Play_AiksTest_CanDrawAnOpenPath_Vulkan.png -impeller_Play_AiksTest_CanDrawMultiContourConvexPath_Metal.png -impeller_Play_AiksTest_CanDrawMultiContourConvexPath_OpenGLES.png -impeller_Play_AiksTest_CanDrawMultiContourConvexPath_Vulkan.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimesInteractive_Metal.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimesInteractive_OpenGLES.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimesInteractive_Vulkan.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimes_Metal.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimes_OpenGLES.png -impeller_Play_AiksTest_CanDrawPaintMultipleTimes_Vulkan.png -impeller_Play_AiksTest_CanDrawPaintWithAdvancedBlend_Metal.png -impeller_Play_AiksTest_CanDrawPaintWithAdvancedBlend_OpenGLES.png -impeller_Play_AiksTest_CanDrawPaintWithAdvancedBlend_Vulkan.png -impeller_Play_AiksTest_CanDrawPaint_Metal.png -impeller_Play_AiksTest_CanDrawPaint_OpenGLES.png -impeller_Play_AiksTest_CanDrawPaint_Vulkan.png -impeller_Play_AiksTest_CanDrawPerspectiveTransformWithClips_Metal.png -impeller_Play_AiksTest_CanDrawPerspectiveTransformWithClips_OpenGLES.png -impeller_Play_AiksTest_CanDrawPerspectiveTransformWithClips_Vulkan.png -impeller_Play_AiksTest_CanDrawPointsWithTextureMap_Metal.png -impeller_Play_AiksTest_CanDrawPointsWithTextureMap_OpenGLES.png -impeller_Play_AiksTest_CanDrawPointsWithTextureMap_Vulkan.png -impeller_Play_AiksTest_CanDrawPoints_Metal.png -impeller_Play_AiksTest_CanDrawPoints_OpenGLES.png -impeller_Play_AiksTest_CanDrawPoints_Vulkan.png -impeller_Play_AiksTest_CanDrawScaledPointsLargeScaleSmallRadius_Metal.png -impeller_Play_AiksTest_CanDrawScaledPointsLargeScaleSmallRadius_OpenGLES.png -impeller_Play_AiksTest_CanDrawScaledPointsLargeScaleSmallRadius_Vulkan.png -impeller_Play_AiksTest_CanDrawScaledPointsSmallScaleLargeRadius_Metal.png -impeller_Play_AiksTest_CanDrawScaledPointsSmallScaleLargeRadius_OpenGLES.png -impeller_Play_AiksTest_CanDrawScaledPointsSmallScaleLargeRadius_Vulkan.png -impeller_Play_AiksTest_CanEmptyPictureConvertToImage_Metal.png -impeller_Play_AiksTest_CanEmptyPictureConvertToImage_OpenGLES.png -impeller_Play_AiksTest_CanEmptyPictureConvertToImage_Vulkan.png -impeller_Play_AiksTest_CanPerformFullScreenMSAA_Metal.png -impeller_Play_AiksTest_CanPerformFullScreenMSAA_OpenGLES.png -impeller_Play_AiksTest_CanPerformFullScreenMSAA_Vulkan.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBoundsAndLargerIntermediateIsNotAllocated_Metal.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBoundsAndLargerIntermediateIsNotAllocated_OpenGLES.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBoundsAndLargerIntermediateIsNotAllocated_Vulkan.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBounds_Metal.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBounds_OpenGLES.png -impeller_Play_AiksTest_CanPerformSaveLayerWithBounds_Vulkan.png -impeller_Play_AiksTest_CanPerformSkew_Metal.png -impeller_Play_AiksTest_CanPerformSkew_OpenGLES.png -impeller_Play_AiksTest_CanPerformSkew_Vulkan.png -impeller_Play_AiksTest_CanPictureConvertToImage_Metal.png -impeller_Play_AiksTest_CanPictureConvertToImage_OpenGLES.png -impeller_Play_AiksTest_CanPictureConvertToImage_Vulkan.png -impeller_Play_AiksTest_CanRenderAdvancedBlendColorFilterWithSaveLayer_Metal.png -impeller_Play_AiksTest_CanRenderAdvancedBlendColorFilterWithSaveLayer_OpenGLES.png -impeller_Play_AiksTest_CanRenderAdvancedBlendColorFilterWithSaveLayer_Vulkan.png -impeller_Play_AiksTest_CanRenderBackdropBlurHugeSigma_Metal.png -impeller_Play_AiksTest_CanRenderBackdropBlurHugeSigma_OpenGLES.png -impeller_Play_AiksTest_CanRenderBackdropBlurHugeSigma_Vulkan.png -impeller_Play_AiksTest_CanRenderBackdropBlurInteractive_Metal.png -impeller_Play_AiksTest_CanRenderBackdropBlurInteractive_OpenGLES.png -impeller_Play_AiksTest_CanRenderBackdropBlurInteractive_Vulkan.png -impeller_Play_AiksTest_CanRenderBackdropBlurWithSingleBackdropId_Metal.png -impeller_Play_AiksTest_CanRenderBackdropBlurWithSingleBackdropId_OpenGLES.png -impeller_Play_AiksTest_CanRenderBackdropBlurWithSingleBackdropId_Vulkan.png -impeller_Play_AiksTest_CanRenderBackdropBlur_Metal.png -impeller_Play_AiksTest_CanRenderBackdropBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderBackdropBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderClippedBackdropFilter_Metal.png -impeller_Play_AiksTest_CanRenderClippedBackdropFilter_OpenGLES.png -impeller_Play_AiksTest_CanRenderClippedBackdropFilter_Vulkan.png -impeller_Play_AiksTest_CanRenderClippedBlur_Metal.png -impeller_Play_AiksTest_CanRenderClippedBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderClippedBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderClippedLayers_Metal.png -impeller_Play_AiksTest_CanRenderClippedLayers_OpenGLES.png -impeller_Play_AiksTest_CanRenderClippedLayers_Vulkan.png -impeller_Play_AiksTest_CanRenderClippedRuntimeEffects_Metal.png -impeller_Play_AiksTest_CanRenderClippedRuntimeEffects_OpenGLES.png -impeller_Play_AiksTest_CanRenderClips_Metal.png -impeller_Play_AiksTest_CanRenderClips_OpenGLES.png -impeller_Play_AiksTest_CanRenderClips_Vulkan.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColorsDrawPaint_Metal.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColorsDrawPaint_OpenGLES.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColorsDrawPaint_Vulkan.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColors_Metal.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColors_OpenGLES.png -impeller_Play_AiksTest_CanRenderColorFilterWithInvertColors_Vulkan.png -impeller_Play_AiksTest_CanRenderColoredRect_Metal.png -impeller_Play_AiksTest_CanRenderColoredRect_OpenGLES.png -impeller_Play_AiksTest_CanRenderColoredRect_Vulkan.png -impeller_Play_AiksTest_CanRenderConicalGradientWithDitheringEnabled_Metal.png -impeller_Play_AiksTest_CanRenderConicalGradientWithDitheringEnabled_OpenGLES.png -impeller_Play_AiksTest_CanRenderConicalGradientWithDitheringEnabled_Vulkan.png -impeller_Play_AiksTest_CanRenderConicalGradientWithIncompleteStops_Metal.png -impeller_Play_AiksTest_CanRenderConicalGradientWithIncompleteStops_OpenGLES.png -impeller_Play_AiksTest_CanRenderConicalGradientWithIncompleteStops_Vulkan.png -impeller_Play_AiksTest_CanRenderConicalGradient_Metal.png -impeller_Play_AiksTest_CanRenderConicalGradient_OpenGLES.png -impeller_Play_AiksTest_CanRenderConicalGradient_Vulkan.png -impeller_Play_AiksTest_CanRenderCurvedStrokes_Metal.png -impeller_Play_AiksTest_CanRenderCurvedStrokes_OpenGLES.png -impeller_Play_AiksTest_CanRenderCurvedStrokes_Vulkan.png -impeller_Play_AiksTest_CanRenderDestructiveSaveLayer_Metal.png -impeller_Play_AiksTest_CanRenderDestructiveSaveLayer_OpenGLES.png -impeller_Play_AiksTest_CanRenderDestructiveSaveLayer_Vulkan.png -impeller_Play_AiksTest_CanRenderDifferenceClips_Metal.png -impeller_Play_AiksTest_CanRenderDifferenceClips_OpenGLES.png -impeller_Play_AiksTest_CanRenderDifferenceClips_Vulkan.png -impeller_Play_AiksTest_CanRenderDifferencePaths_Metal.png -impeller_Play_AiksTest_CanRenderDifferencePaths_OpenGLES.png -impeller_Play_AiksTest_CanRenderDifferencePaths_Vulkan.png -impeller_Play_AiksTest_CanRenderDifferentShapesWithSameColorSource_Metal.png -impeller_Play_AiksTest_CanRenderDifferentShapesWithSameColorSource_OpenGLES.png -impeller_Play_AiksTest_CanRenderDifferentShapesWithSameColorSource_Vulkan.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithAlpha_Metal.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithAlpha_OpenGLES.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithAlpha_Vulkan.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithBlur_Metal.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderEmojiTextFrameWithBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderEmojiTextFrame_Metal.png -impeller_Play_AiksTest_CanRenderEmojiTextFrame_OpenGLES.png -impeller_Play_AiksTest_CanRenderEmojiTextFrame_Vulkan.png -impeller_Play_AiksTest_CanRenderForegroundAdvancedBlendWithMaskBlur_Metal.png -impeller_Play_AiksTest_CanRenderForegroundAdvancedBlendWithMaskBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderForegroundAdvancedBlendWithMaskBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderForegroundBlendWithMaskBlur_Metal.png -impeller_Play_AiksTest_CanRenderForegroundBlendWithMaskBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderForegroundBlendWithMaskBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderGradientDecalWithBackground_Metal.png -impeller_Play_AiksTest_CanRenderGradientDecalWithBackground_OpenGLES.png -impeller_Play_AiksTest_CanRenderGradientDecalWithBackground_Vulkan.png -impeller_Play_AiksTest_CanRenderGroupOpacityToSavelayer_Metal.png -impeller_Play_AiksTest_CanRenderGroupOpacityToSavelayer_OpenGLES.png -impeller_Play_AiksTest_CanRenderGroupOpacityToSavelayer_Vulkan.png -impeller_Play_AiksTest_CanRenderGroupOpacity_Metal.png -impeller_Play_AiksTest_CanRenderGroupOpacity_OpenGLES.png -impeller_Play_AiksTest_CanRenderGroupOpacity_Vulkan.png -impeller_Play_AiksTest_CanRenderImageRect_Metal.png -impeller_Play_AiksTest_CanRenderImageRect_OpenGLES.png -impeller_Play_AiksTest_CanRenderImageRect_Vulkan.png -impeller_Play_AiksTest_CanRenderImage_Metal.png -impeller_Play_AiksTest_CanRenderImage_OpenGLES.png -impeller_Play_AiksTest_CanRenderImage_Vulkan.png -impeller_Play_AiksTest_CanRenderInvertedImageWithColorFilter_Metal.png -impeller_Play_AiksTest_CanRenderInvertedImageWithColorFilter_OpenGLES.png -impeller_Play_AiksTest_CanRenderInvertedImageWithColorFilter_Vulkan.png -impeller_Play_AiksTest_CanRenderItalicizedText_Metal.png -impeller_Play_AiksTest_CanRenderItalicizedText_OpenGLES.png -impeller_Play_AiksTest_CanRenderItalicizedText_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientClamp_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientDecalWithColorFilter_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientDecalWithColorFilter_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientDecalWithColorFilter_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientDecal_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientDecal_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientDecal_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsClamp_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsDecal_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsDecal_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsDecal_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsMirror_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsMirror_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsMirror_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsRepeat_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsRepeat_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsRepeat_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsUnevenStops_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsUnevenStops_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientManyColorsUnevenStops_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientMaskBlur_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientMaskBlur_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientMaskBlur_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientMirror_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientMirror_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientMirror_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientRepeat_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientRepeat_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientRepeat_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientWayManyColorsClamp_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientWayManyColorsClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientWayManyColorsClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientWithDitheringEnabled_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientWithDitheringEnabled_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientWithDitheringEnabled_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientWithIncompleteStops_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientWithIncompleteStops_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientWithIncompleteStops_Vulkan.png -impeller_Play_AiksTest_CanRenderLinearGradientWithOverlappingStopsClamp_Metal.png -impeller_Play_AiksTest_CanRenderLinearGradientWithOverlappingStopsClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderLinearGradientWithOverlappingStopsClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderMaskBlurHugeSigma_Metal.png -impeller_Play_AiksTest_CanRenderMaskBlurHugeSigma_OpenGLES.png -impeller_Play_AiksTest_CanRenderMaskBlurHugeSigma_Vulkan.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdAndDistinctFilters_Metal.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdAndDistinctFilters_OpenGLES.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdAndDistinctFilters_Vulkan.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdDifferentLayers_Metal.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdDifferentLayers_OpenGLES.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropIdDifferentLayers_Vulkan.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropId_Metal.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropId_OpenGLES.png -impeller_Play_AiksTest_CanRenderMultipleBackdropBlurWithSingleBackdropId_Vulkan.png -impeller_Play_AiksTest_CanRenderNestedClips_Metal.png -impeller_Play_AiksTest_CanRenderNestedClips_OpenGLES.png -impeller_Play_AiksTest_CanRenderNestedClips_Vulkan.png -impeller_Play_AiksTest_CanRenderOverlappingMultiContourPath_Metal.png -impeller_Play_AiksTest_CanRenderOverlappingMultiContourPath_OpenGLES.png -impeller_Play_AiksTest_CanRenderOverlappingMultiContourPath_Vulkan.png -impeller_Play_AiksTest_CanRenderQuadraticStrokeWithInstantTurn_Metal.png -impeller_Play_AiksTest_CanRenderQuadraticStrokeWithInstantTurn_OpenGLES.png -impeller_Play_AiksTest_CanRenderQuadraticStrokeWithInstantTurn_Vulkan.png -impeller_Play_AiksTest_CanRenderRadialGradientManyColors_Metal.png -impeller_Play_AiksTest_CanRenderRadialGradientManyColors_OpenGLES.png -impeller_Play_AiksTest_CanRenderRadialGradientManyColors_Vulkan.png -impeller_Play_AiksTest_CanRenderRadialGradientWithDitheringEnabled_Metal.png -impeller_Play_AiksTest_CanRenderRadialGradientWithDitheringEnabled_OpenGLES.png -impeller_Play_AiksTest_CanRenderRadialGradientWithDitheringEnabled_Vulkan.png -impeller_Play_AiksTest_CanRenderRadialGradientWithIncompleteStops_Metal.png -impeller_Play_AiksTest_CanRenderRadialGradientWithIncompleteStops_OpenGLES.png -impeller_Play_AiksTest_CanRenderRadialGradientWithIncompleteStops_Vulkan.png -impeller_Play_AiksTest_CanRenderRadialGradient_Metal.png -impeller_Play_AiksTest_CanRenderRadialGradient_OpenGLES.png -impeller_Play_AiksTest_CanRenderRadialGradient_Vulkan.png -impeller_Play_AiksTest_CanRenderRoundedRectWithNonUniformRadii_Metal.png -impeller_Play_AiksTest_CanRenderRoundedRectWithNonUniformRadii_OpenGLES.png -impeller_Play_AiksTest_CanRenderRoundedRectWithNonUniformRadii_Vulkan.png -impeller_Play_AiksTest_CanRenderRuntimeEffectFilter_Metal.png -impeller_Play_AiksTest_CanRenderRuntimeEffectFilter_OpenGLES.png -impeller_Play_AiksTest_CanRenderRuntimeEffectFilter_Vulkan.png -impeller_Play_AiksTest_CanRenderSimpleClips_Metal.png -impeller_Play_AiksTest_CanRenderSimpleClips_OpenGLES.png -impeller_Play_AiksTest_CanRenderSimpleClips_Vulkan.png -impeller_Play_AiksTest_CanRenderStrokePathThatEndsAtSharpTurn_Metal.png -impeller_Play_AiksTest_CanRenderStrokePathThatEndsAtSharpTurn_OpenGLES.png -impeller_Play_AiksTest_CanRenderStrokePathThatEndsAtSharpTurn_Vulkan.png -impeller_Play_AiksTest_CanRenderStrokePathWithCubicLine_Metal.png -impeller_Play_AiksTest_CanRenderStrokePathWithCubicLine_OpenGLES.png -impeller_Play_AiksTest_CanRenderStrokePathWithCubicLine_Vulkan.png -impeller_Play_AiksTest_CanRenderStrokedTextFrame_Metal.png -impeller_Play_AiksTest_CanRenderStrokedTextFrame_OpenGLES.png -impeller_Play_AiksTest_CanRenderStrokedTextFrame_Vulkan.png -impeller_Play_AiksTest_CanRenderStrokes_Metal.png -impeller_Play_AiksTest_CanRenderStrokes_OpenGLES.png -impeller_Play_AiksTest_CanRenderStrokes_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientClamp_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientDecal_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientDecal_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientDecal_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsClamp_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsDecal_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsDecal_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsDecal_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsMirror_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsMirror_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsMirror_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsRepeat_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsRepeat_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientManyColorsRepeat_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientMirror_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientMirror_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientMirror_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientRepeat_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientRepeat_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientRepeat_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientWithDitheringEnabled_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientWithDitheringEnabled_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientWithDitheringEnabled_Vulkan.png -impeller_Play_AiksTest_CanRenderSweepGradientWithIncompleteStops_Metal.png -impeller_Play_AiksTest_CanRenderSweepGradientWithIncompleteStops_OpenGLES.png -impeller_Play_AiksTest_CanRenderSweepGradientWithIncompleteStops_Vulkan.png -impeller_Play_AiksTest_CanRenderTextFrameWithFractionScaling_Metal.png -impeller_Play_AiksTest_CanRenderTextFrameWithFractionScaling_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextFrameWithFractionScaling_Vulkan.png -impeller_Play_AiksTest_CanRenderTextFrameWithHalfScaling_Metal.png -impeller_Play_AiksTest_CanRenderTextFrameWithHalfScaling_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextFrameWithHalfScaling_Vulkan.png -impeller_Play_AiksTest_CanRenderTextFrameWithInvertedTransform_Metal.png -impeller_Play_AiksTest_CanRenderTextFrameWithInvertedTransform_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextFrameWithInvertedTransform_Vulkan.png -impeller_Play_AiksTest_CanRenderTextFrameWithScalingOverflow_Metal.png -impeller_Play_AiksTest_CanRenderTextFrameWithScalingOverflow_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextFrameWithScalingOverflow_Vulkan.png -impeller_Play_AiksTest_CanRenderTextFrame_Metal.png -impeller_Play_AiksTest_CanRenderTextFrame_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextFrame_Vulkan.png -impeller_Play_AiksTest_CanRenderTextInSaveLayer_Metal.png -impeller_Play_AiksTest_CanRenderTextInSaveLayer_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextInSaveLayer_Vulkan.png -impeller_Play_AiksTest_CanRenderTextOutsideBoundaries_Metal.png -impeller_Play_AiksTest_CanRenderTextOutsideBoundaries_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextOutsideBoundaries_Vulkan.png -impeller_Play_AiksTest_CanRenderTextStrokeWidth_Metal.png -impeller_Play_AiksTest_CanRenderTextStrokeWidth_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextStrokeWidth_Vulkan.png -impeller_Play_AiksTest_CanRenderTextWithLargePerspectiveTransform_Metal.png -impeller_Play_AiksTest_CanRenderTextWithLargePerspectiveTransform_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextWithLargePerspectiveTransform_Vulkan.png -impeller_Play_AiksTest_CanRenderTextWithPerspectiveTransformInSublist_Metal.png -impeller_Play_AiksTest_CanRenderTextWithPerspectiveTransformInSublist_OpenGLES.png -impeller_Play_AiksTest_CanRenderTextWithPerspectiveTransformInSublist_Vulkan.png -impeller_Play_AiksTest_CanRenderThickCurvedStrokes_Metal.png -impeller_Play_AiksTest_CanRenderThickCurvedStrokes_OpenGLES.png -impeller_Play_AiksTest_CanRenderThickCurvedStrokes_Vulkan.png -impeller_Play_AiksTest_CanRenderThinCurvedStrokes_Metal.png -impeller_Play_AiksTest_CanRenderThinCurvedStrokes_OpenGLES.png -impeller_Play_AiksTest_CanRenderThinCurvedStrokes_Vulkan.png -impeller_Play_AiksTest_CanRenderTiledTextureClampWithTranslate_Metal.png -impeller_Play_AiksTest_CanRenderTiledTextureClampWithTranslate_OpenGLES.png -impeller_Play_AiksTest_CanRenderTiledTextureClampWithTranslate_Vulkan.png -impeller_Play_AiksTest_CanRenderTiledTextureClamp_Metal.png -impeller_Play_AiksTest_CanRenderTiledTextureClamp_OpenGLES.png -impeller_Play_AiksTest_CanRenderTiledTextureClamp_Vulkan.png -impeller_Play_AiksTest_CanRenderTiledTextureDecal_Metal.png -impeller_Play_AiksTest_CanRenderTiledTextureDecal_OpenGLES.png -impeller_Play_AiksTest_CanRenderTiledTextureDecal_Vulkan.png -impeller_Play_AiksTest_CanRenderTiledTextureMirror_Metal.png -impeller_Play_AiksTest_CanRenderTiledTextureMirror_OpenGLES.png -impeller_Play_AiksTest_CanRenderTiledTextureMirror_Vulkan.png -impeller_Play_AiksTest_CanRenderTiledTextureRepeat_Metal.png -impeller_Play_AiksTest_CanRenderTiledTextureRepeat_OpenGLES.png -impeller_Play_AiksTest_CanRenderTiledTextureRepeat_Vulkan.png -impeller_Play_AiksTest_CanRenderTinyOverlappingSubpasses_Metal.png -impeller_Play_AiksTest_CanRenderTinyOverlappingSubpasses_OpenGLES.png -impeller_Play_AiksTest_CanRenderTinyOverlappingSubpasses_Vulkan.png -impeller_Play_AiksTest_CanRenderWithContiguousClipRestores_Metal.png -impeller_Play_AiksTest_CanRenderWithContiguousClipRestores_OpenGLES.png -impeller_Play_AiksTest_CanRenderWithContiguousClipRestores_Vulkan.png -impeller_Play_AiksTest_CanSaveLayerStandalone_Metal.png -impeller_Play_AiksTest_CanSaveLayerStandalone_OpenGLES.png -impeller_Play_AiksTest_CanSaveLayerStandalone_Vulkan.png -impeller_Play_AiksTest_ClearBlendWithBlur_Metal.png -impeller_Play_AiksTest_ClearBlendWithBlur_OpenGLES.png -impeller_Play_AiksTest_ClearBlendWithBlur_Vulkan.png -impeller_Play_AiksTest_ClearBlend_Metal.png -impeller_Play_AiksTest_ClearBlend_OpenGLES.png -impeller_Play_AiksTest_ClearBlend_Vulkan.png -impeller_Play_AiksTest_ClearColorOptimizationWhenSubpassIsBiggerThanParentPass_Metal.png -impeller_Play_AiksTest_ClearColorOptimizationWhenSubpassIsBiggerThanParentPass_OpenGLES.png -impeller_Play_AiksTest_ClearColorOptimizationWhenSubpassIsBiggerThanParentPass_Vulkan.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectlyInteractive_Metal.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectlyInteractive_OpenGLES.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectlyInteractive_Vulkan.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectly_Metal.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectly_OpenGLES.png -impeller_Play_AiksTest_ClippedBlurFilterRendersCorrectly_Vulkan.png -impeller_Play_AiksTest_ClipsUseCurrentTransform_Metal.png -impeller_Play_AiksTest_ClipsUseCurrentTransform_OpenGLES.png -impeller_Play_AiksTest_ClipsUseCurrentTransform_Vulkan.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpassBackdropFilter_Metal.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpassBackdropFilter_OpenGLES.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpassBackdropFilter_Vulkan.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpass_Metal.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpass_OpenGLES.png -impeller_Play_AiksTest_CollapsedDrawPaintInSubpass_Vulkan.png -impeller_Play_AiksTest_ColorFilterAdvancedBlendNoFbFetch_Metal.png -impeller_Play_AiksTest_ColorFilterAdvancedBlend_Metal.png -impeller_Play_AiksTest_ColorFilterAdvancedBlend_OpenGLES.png -impeller_Play_AiksTest_ColorFilterAdvancedBlend_Vulkan.png -impeller_Play_AiksTest_ColorFilterBlend_Metal.png -impeller_Play_AiksTest_ColorFilterBlend_OpenGLES.png -impeller_Play_AiksTest_ColorFilterBlend_Vulkan.png -impeller_Play_AiksTest_ColorMatrixFilterSubpassCollapseOptimization_Metal.png -impeller_Play_AiksTest_ColorMatrixFilterSubpassCollapseOptimization_OpenGLES.png -impeller_Play_AiksTest_ColorMatrixFilterSubpassCollapseOptimization_Vulkan.png -impeller_Play_AiksTest_ColorWheel_Metal.png -impeller_Play_AiksTest_ColorWheel_OpenGLES.png -impeller_Play_AiksTest_ColorWheel_Vulkan.png -impeller_Play_AiksTest_CoordinateConversionsAreCorrect_Metal.png -impeller_Play_AiksTest_CoordinateConversionsAreCorrect_OpenGLES.png -impeller_Play_AiksTest_CoordinateConversionsAreCorrect_Vulkan.png -impeller_Play_AiksTest_CoverageOriginShouldBeAccountedForInSubpasses_Metal.png -impeller_Play_AiksTest_CoverageOriginShouldBeAccountedForInSubpasses_OpenGLES.png -impeller_Play_AiksTest_CoverageOriginShouldBeAccountedForInSubpasses_Vulkan.png -impeller_Play_AiksTest_DepthValuesForLineMode_Metal.png -impeller_Play_AiksTest_DepthValuesForLineMode_OpenGLES.png -impeller_Play_AiksTest_DepthValuesForLineMode_Vulkan.png -impeller_Play_AiksTest_DepthValuesForPolygonMode_Metal.png -impeller_Play_AiksTest_DepthValuesForPolygonMode_OpenGLES.png -impeller_Play_AiksTest_DepthValuesForPolygonMode_Vulkan.png -impeller_Play_AiksTest_DestructiveBlendColorFilterFloodsClip_Metal.png -impeller_Play_AiksTest_DestructiveBlendColorFilterFloodsClip_OpenGLES.png -impeller_Play_AiksTest_DestructiveBlendColorFilterFloodsClip_Vulkan.png -impeller_Play_AiksTest_DifferenceClipsMustRenderIdenticallyAcrossBackends_Metal.png -impeller_Play_AiksTest_DifferenceClipsMustRenderIdenticallyAcrossBackends_OpenGLES.png -impeller_Play_AiksTest_DifferenceClipsMustRenderIdenticallyAcrossBackends_Vulkan.png -impeller_Play_AiksTest_DispatcherDoesNotCullPerspectiveTransformedChildDisplayLists_Metal.png -impeller_Play_AiksTest_DispatcherDoesNotCullPerspectiveTransformedChildDisplayLists_OpenGLES.png -impeller_Play_AiksTest_DispatcherDoesNotCullPerspectiveTransformedChildDisplayLists_Vulkan.png -impeller_Play_AiksTest_DrawAdvancedBlendPartlyOffscreen_Metal.png -impeller_Play_AiksTest_DrawAdvancedBlendPartlyOffscreen_OpenGLES.png -impeller_Play_AiksTest_DrawAdvancedBlendPartlyOffscreen_Vulkan.png -impeller_Play_AiksTest_DrawAtlasAdvancedAndTransform_Metal.png -impeller_Play_AiksTest_DrawAtlasAdvancedAndTransform_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasAdvancedAndTransform_Vulkan.png -impeller_Play_AiksTest_DrawAtlasNoColorFullSize_Metal.png -impeller_Play_AiksTest_DrawAtlasNoColorFullSize_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasNoColorFullSize_Vulkan.png -impeller_Play_AiksTest_DrawAtlasNoColor_Metal.png -impeller_Play_AiksTest_DrawAtlasNoColor_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasNoColor_Vulkan.png -impeller_Play_AiksTest_DrawAtlasPlusWideGamut_Metal.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvancedAndTransform_Metal.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvancedAndTransform_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvancedAndTransform_Vulkan.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvanced_Metal.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvanced_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasWithColorAdvanced_Vulkan.png -impeller_Play_AiksTest_DrawAtlasWithColorSimple_Metal.png -impeller_Play_AiksTest_DrawAtlasWithColorSimple_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasWithColorSimple_Vulkan.png -impeller_Play_AiksTest_DrawAtlasWithOpacity_Metal.png -impeller_Play_AiksTest_DrawAtlasWithOpacity_OpenGLES.png -impeller_Play_AiksTest_DrawAtlasWithOpacity_Vulkan.png -impeller_Play_AiksTest_DrawImageRectSrcOutsideBounds_Metal.png -impeller_Play_AiksTest_DrawImageRectSrcOutsideBounds_OpenGLES.png -impeller_Play_AiksTest_DrawImageRectSrcOutsideBounds_Vulkan.png -impeller_Play_AiksTest_DrawLinesRenderCorrectly_Metal.png -impeller_Play_AiksTest_DrawLinesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_DrawLinesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_DrawOpacityPeephole_Metal.png -impeller_Play_AiksTest_DrawOpacityPeephole_OpenGLES.png -impeller_Play_AiksTest_DrawOpacityPeephole_Vulkan.png -impeller_Play_AiksTest_DrawPaintTransformsBounds_Metal.png -impeller_Play_AiksTest_DrawPaintTransformsBounds_OpenGLES.png -impeller_Play_AiksTest_DrawPaintTransformsBounds_Vulkan.png -impeller_Play_AiksTest_DrawPaintWithAdvancedBlendOverFilter_Metal.png -impeller_Play_AiksTest_DrawPaintWithAdvancedBlendOverFilter_OpenGLES.png -impeller_Play_AiksTest_DrawPaintWithAdvancedBlendOverFilter_Vulkan.png -impeller_Play_AiksTest_DrawRectStrokesRenderCorrectly_Metal.png -impeller_Play_AiksTest_DrawRectStrokesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_DrawRectStrokesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_DrawRectStrokesWithBevelJoinRenderCorrectly_Metal.png -impeller_Play_AiksTest_DrawRectStrokesWithBevelJoinRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_DrawRectStrokesWithBevelJoinRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveNoSaveLayer_Metal.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveNoSaveLayer_OpenGLES.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveNoSaveLayer_Vulkan.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveSaveLayer_Metal.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveSaveLayer_OpenGLES.png -impeller_Play_AiksTest_DrawScaledTextWithPerspectiveSaveLayer_Vulkan.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinatesAndColorBlending_Metal.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinatesAndColorBlending_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinatesAndColorBlending_Vulkan.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinates_Metal.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinates_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesImageSourceWithTextureCoordinates_Vulkan.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithTextureCoordinates_Metal.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithTextureCoordinates_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithTextureCoordinates_Vulkan.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithoutIndices_Metal.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithoutIndices_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesLinearGradientWithoutIndices_Vulkan.png -impeller_Play_AiksTest_DrawVerticesPremultipliesColors_Metal.png -impeller_Play_AiksTest_DrawVerticesPremultipliesColors_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesPremultipliesColors_Vulkan.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithIndices_Metal.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithIndices_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithIndices_Vulkan.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithoutIndices_Metal.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithoutIndices_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesSolidColorTrianglesWithoutIndices_Vulkan.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShaderNonZeroOrigin_Metal.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShaderNonZeroOrigin_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShaderNonZeroOrigin_Vulkan.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_Metal.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_OpenGLES.png -impeller_Play_AiksTest_DrawVerticesTextureCoordinatesWithFragmentShader_Vulkan.png -impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_Metal.png -impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_OpenGLES.png -impeller_Play_AiksTest_EmptySaveLayerIgnoresPaint_Vulkan.png -impeller_Play_AiksTest_EmptySaveLayerRendersWithClear_Metal.png -impeller_Play_AiksTest_EmptySaveLayerRendersWithClear_OpenGLES.png -impeller_Play_AiksTest_EmptySaveLayerRendersWithClear_Vulkan.png -impeller_Play_AiksTest_FastEllipticalRRectMaskBlursRenderCorrectly_Metal.png -impeller_Play_AiksTest_FastEllipticalRRectMaskBlursRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_FastEllipticalRRectMaskBlursRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_FastGradientTestHorizontalReversed_Metal.png -impeller_Play_AiksTest_FastGradientTestHorizontalReversed_OpenGLES.png -impeller_Play_AiksTest_FastGradientTestHorizontalReversed_Vulkan.png -impeller_Play_AiksTest_FastGradientTestHorizontal_Metal.png -impeller_Play_AiksTest_FastGradientTestHorizontal_OpenGLES.png -impeller_Play_AiksTest_FastGradientTestHorizontal_Vulkan.png -impeller_Play_AiksTest_FastGradientTestVerticalReversed_Metal.png -impeller_Play_AiksTest_FastGradientTestVerticalReversed_OpenGLES.png -impeller_Play_AiksTest_FastGradientTestVerticalReversed_Vulkan.png -impeller_Play_AiksTest_FastGradientTestVertical_Metal.png -impeller_Play_AiksTest_FastGradientTestVertical_OpenGLES.png -impeller_Play_AiksTest_FastGradientTestVertical_Vulkan.png -impeller_Play_AiksTest_FatStrokeArc_Metal.png -impeller_Play_AiksTest_FatStrokeArc_OpenGLES.png -impeller_Play_AiksTest_FatStrokeArc_Vulkan.png -impeller_Play_AiksTest_FilledCirclesRenderCorrectly_Metal.png -impeller_Play_AiksTest_FilledCirclesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_FilledCirclesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_FilledEllipsesRenderCorrectly_Metal.png -impeller_Play_AiksTest_FilledEllipsesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_FilledEllipsesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_FilledRoundRectPathsRenderCorrectly_Metal.png -impeller_Play_AiksTest_FilledRoundRectPathsRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_FilledRoundRectPathsRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_FilledRoundRectsRenderCorrectly_Metal.png -impeller_Play_AiksTest_FilledRoundRectsRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_FilledRoundRectsRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_ForegroundAdvancedBlendAppliesTransformCorrectly_Metal.png -impeller_Play_AiksTest_ForegroundAdvancedBlendAppliesTransformCorrectly_OpenGLES.png -impeller_Play_AiksTest_ForegroundAdvancedBlendAppliesTransformCorrectly_Vulkan.png -impeller_Play_AiksTest_ForegroundBlendSubpassCollapseOptimization_Metal.png -impeller_Play_AiksTest_ForegroundBlendSubpassCollapseOptimization_OpenGLES.png -impeller_Play_AiksTest_ForegroundBlendSubpassCollapseOptimization_Vulkan.png -impeller_Play_AiksTest_ForegroundPipelineBlendAppliesTransformCorrectly_Metal.png -impeller_Play_AiksTest_ForegroundPipelineBlendAppliesTransformCorrectly_OpenGLES.png -impeller_Play_AiksTest_ForegroundPipelineBlendAppliesTransformCorrectly_Vulkan.png -impeller_Play_AiksTest_FramebufferAdvancedBlendCoverage_Metal.png -impeller_Play_AiksTest_FramebufferAdvancedBlendCoverage_OpenGLES.png -impeller_Play_AiksTest_FramebufferAdvancedBlendCoverage_Vulkan.png -impeller_Play_AiksTest_FramebufferBlendsRespectClips_Metal.png -impeller_Play_AiksTest_FramebufferBlendsRespectClips_OpenGLES.png -impeller_Play_AiksTest_FramebufferBlendsRespectClips_Vulkan.png -impeller_Play_AiksTest_GaussianBlurAnimatedBackdrop_Metal.png -impeller_Play_AiksTest_GaussianBlurAnimatedBackdrop_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurAnimatedBackdrop_Vulkan.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryHorizontal_Metal.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryHorizontal_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryHorizontal_Vulkan.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryVertical_Metal.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryVertical_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurAtPeripheryVertical_Vulkan.png -impeller_Play_AiksTest_GaussianBlurOneDimension_Metal.png -impeller_Play_AiksTest_GaussianBlurOneDimension_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurOneDimension_Vulkan.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClippedInteractive_Metal.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClippedInteractive_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClippedInteractive_Vulkan.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClipped_Metal.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClipped_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurRotatedAndClipped_Vulkan.png -impeller_Play_AiksTest_GaussianBlurRotatedNonUniform_Metal.png -impeller_Play_AiksTest_GaussianBlurRotatedNonUniform_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurRotatedNonUniform_Vulkan.png -impeller_Play_AiksTest_GaussianBlurScaledAndClipped_Metal.png -impeller_Play_AiksTest_GaussianBlurScaledAndClipped_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurScaledAndClipped_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleInnerGradient_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleInnerGradient_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleInnerGradient_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleInner_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleInner_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleInner_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleOuterGradient_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleOuterGradient_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleOuterGradient_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleOuter_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleOuter_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleOuter_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleSolidGradient_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleSolidGradient_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleSolidGradient_Vulkan.png -impeller_Play_AiksTest_GaussianBlurStyleSolid_Metal.png -impeller_Play_AiksTest_GaussianBlurStyleSolid_OpenGLES.png -impeller_Play_AiksTest_GaussianBlurStyleSolid_Vulkan.png -impeller_Play_AiksTest_GaussianBlurWithoutDecalSupport_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurInner_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurInner_OpenGLES.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurInner_Vulkan.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurOuter_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurOuter_OpenGLES.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurOuter_Vulkan.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSigmaZero_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSigmaZero_OpenGLES.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSigmaZero_Vulkan.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSolid_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSolid_OpenGLES.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlurSolid_Vulkan.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlur_Metal.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlur_OpenGLES.png -impeller_Play_AiksTest_GradientOvalStrokeMaskBlur_Vulkan.png -impeller_Play_AiksTest_GradientStrokesRenderCorrectly_Metal.png -impeller_Play_AiksTest_GradientStrokesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_GradientStrokesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_ImageColorSourceEffectTransform_Metal.png -impeller_Play_AiksTest_ImageColorSourceEffectTransform_OpenGLES.png -impeller_Play_AiksTest_ImageColorSourceEffectTransform_Vulkan.png -impeller_Play_AiksTest_ImageFilteredSaveLayerWithUnboundedContents_Metal.png -impeller_Play_AiksTest_ImageFilteredSaveLayerWithUnboundedContents_OpenGLES.png -impeller_Play_AiksTest_ImageFilteredSaveLayerWithUnboundedContents_Vulkan.png -impeller_Play_AiksTest_ImageFilteredUnboundedSaveLayerWithUnboundedContents_Metal.png -impeller_Play_AiksTest_ImageFilteredUnboundedSaveLayerWithUnboundedContents_OpenGLES.png -impeller_Play_AiksTest_ImageFilteredUnboundedSaveLayerWithUnboundedContents_Vulkan.png -impeller_Play_AiksTest_LinearToSrgbFilterSubpassCollapseOptimization_Metal.png -impeller_Play_AiksTest_LinearToSrgbFilterSubpassCollapseOptimization_OpenGLES.png -impeller_Play_AiksTest_LinearToSrgbFilterSubpassCollapseOptimization_Vulkan.png -impeller_Play_AiksTest_MaskBlurDoesntStretchContents_Metal.png -impeller_Play_AiksTest_MaskBlurDoesntStretchContents_OpenGLES.png -impeller_Play_AiksTest_MaskBlurDoesntStretchContents_Vulkan.png -impeller_Play_AiksTest_MaskBlurOnZeroDimensionIsSkippedWideGamut_Metal.png -impeller_Play_AiksTest_MaskBlurTexture_Metal.png -impeller_Play_AiksTest_MaskBlurTexture_OpenGLES.png -impeller_Play_AiksTest_MaskBlurTexture_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucentWithBlurImageFilter_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucentWithBlurImageFilter_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucentWithBlurImageFilter_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucent_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucent_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestInnerTranslucent_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucentZeroSigma_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucentZeroSigma_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucentZeroSigma_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucent_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucent_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestNormalTranslucent_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterOpaqueWithBlurImageFilter_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterOpaqueWithBlurImageFilter_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterOpaqueWithBlurImageFilter_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterTranslucent_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterTranslucent_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestOuterTranslucent_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidOpaque_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidOpaque_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidOpaque_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentExclusionBlend_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentExclusionBlend_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentExclusionBlend_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentWithFilters_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentWithFilters_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucentWithFilters_Vulkan.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucent_Metal.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucent_OpenGLES.png -impeller_Play_AiksTest_MaskBlurVariantTestSolidTranslucent_Vulkan.png -impeller_Play_AiksTest_MaskBlurWithZeroSigmaIsSkipped_Metal.png -impeller_Play_AiksTest_MaskBlurWithZeroSigmaIsSkipped_OpenGLES.png -impeller_Play_AiksTest_MaskBlurWithZeroSigmaIsSkipped_Vulkan.png -impeller_Play_AiksTest_MassiveScalingMatrixImageFilter_Metal.png -impeller_Play_AiksTest_MassiveScalingMatrixImageFilter_OpenGLES.png -impeller_Play_AiksTest_MatrixBackdropFilter_Metal.png -impeller_Play_AiksTest_MatrixBackdropFilter_OpenGLES.png -impeller_Play_AiksTest_MatrixBackdropFilter_Vulkan.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenScaledAndTranslatedFromOffscreen_Metal.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenScaledAndTranslatedFromOffscreen_OpenGLES.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenScaledAndTranslatedFromOffscreen_Vulkan.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenTranslatedFromOffscreen_Metal.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenTranslatedFromOffscreen_OpenGLES.png -impeller_Play_AiksTest_MatrixImageFilterDoesntCullWhenTranslatedFromOffscreen_Vulkan.png -impeller_Play_AiksTest_MatrixImageFilterMagnify_Metal.png -impeller_Play_AiksTest_MatrixImageFilterMagnify_OpenGLES.png -impeller_Play_AiksTest_MatrixImageFilterMagnify_Vulkan.png -impeller_Play_AiksTest_MatrixSaveLayerFilter_Metal.png -impeller_Play_AiksTest_MatrixSaveLayerFilter_OpenGLES.png -impeller_Play_AiksTest_MatrixSaveLayerFilter_Vulkan.png -impeller_Play_AiksTest_MipmapGenerationWorksCorrectly_Metal.png -impeller_Play_AiksTest_MipmapGenerationWorksCorrectly_OpenGLES.png -impeller_Play_AiksTest_MipmapGenerationWorksCorrectly_Vulkan.png -impeller_Play_AiksTest_NoDimplesInRRectPath_Metal.png -impeller_Play_AiksTest_NoDimplesInRRectPath_OpenGLES.png -impeller_Play_AiksTest_NoDimplesInRRectPath_Vulkan.png -impeller_Play_AiksTest_PaintBlendModeIsRespected_Metal.png -impeller_Play_AiksTest_PaintBlendModeIsRespected_OpenGLES.png -impeller_Play_AiksTest_PaintBlendModeIsRespected_Vulkan.png -impeller_Play_AiksTest_PipelineBlendSingleParameter_Metal.png -impeller_Play_AiksTest_PipelineBlendSingleParameter_OpenGLES.png -impeller_Play_AiksTest_PipelineBlendSingleParameter_Vulkan.png -impeller_Play_AiksTest_ReleasesTextureOnTeardown_Metal.png -impeller_Play_AiksTest_ReleasesTextureOnTeardown_OpenGLES.png -impeller_Play_AiksTest_ReleasesTextureOnTeardown_Vulkan.png -impeller_Play_AiksTest_RotateColorFilteredPath_Metal.png -impeller_Play_AiksTest_RotateColorFilteredPath_OpenGLES.png -impeller_Play_AiksTest_RotateColorFilteredPath_Vulkan.png -impeller_Play_AiksTest_RuntimeEffectWithInvalidSamplerDoesNotCrash_Metal.png -impeller_Play_AiksTest_RuntimeEffectWithInvalidSamplerDoesNotCrash_OpenGLES.png -impeller_Play_AiksTest_RuntimeEffectWithInvalidSamplerDoesNotCrash_Vulkan.png -impeller_Play_AiksTest_SaveLayerDrawsBehindSubsequentEntities_Metal.png -impeller_Play_AiksTest_SaveLayerDrawsBehindSubsequentEntities_OpenGLES.png -impeller_Play_AiksTest_SaveLayerDrawsBehindSubsequentEntities_Vulkan.png -impeller_Play_AiksTest_SaveLayerFiltersScaleWithTransform_Metal.png -impeller_Play_AiksTest_SaveLayerFiltersScaleWithTransform_OpenGLES.png -impeller_Play_AiksTest_SaveLayerFiltersScaleWithTransform_Vulkan.png -impeller_Play_AiksTest_ScaleExperimentAntialiasLines_Metal.png -impeller_Play_AiksTest_ScaledK_Metal.png -impeller_Play_AiksTest_ScaledK_OpenGLES.png -impeller_Play_AiksTest_ScaledK_Vulkan.png -impeller_Play_AiksTest_SetContentsWithRegion_Metal.png -impeller_Play_AiksTest_SetContentsWithRegion_OpenGLES.png -impeller_Play_AiksTest_SetContentsWithRegion_Vulkan.png -impeller_Play_AiksTest_SiblingSaveLayerBoundsAreRespected_Metal.png -impeller_Play_AiksTest_SiblingSaveLayerBoundsAreRespected_OpenGLES.png -impeller_Play_AiksTest_SiblingSaveLayerBoundsAreRespected_Vulkan.png -impeller_Play_AiksTest_SimpleExperimentAntialiasLines_Metal.png -impeller_Play_AiksTest_SolidColorCircleMaskBlurTinySigma_Metal.png -impeller_Play_AiksTest_SolidColorCircleMaskBlurTinySigma_OpenGLES.png -impeller_Play_AiksTest_SolidColorCircleMaskBlurTinySigma_Vulkan.png -impeller_Play_AiksTest_SolidColorCirclesOvalsRRectsMaskBlurCorrectly_Metal.png -impeller_Play_AiksTest_SolidColorCirclesOvalsRRectsMaskBlurCorrectly_OpenGLES.png -impeller_Play_AiksTest_SolidColorCirclesOvalsRRectsMaskBlurCorrectly_Vulkan.png -impeller_Play_AiksTest_SolidColorOvalsMaskBlurTinySigma_Metal.png -impeller_Play_AiksTest_SolidColorOvalsMaskBlurTinySigma_OpenGLES.png -impeller_Play_AiksTest_SolidColorOvalsMaskBlurTinySigma_Vulkan.png -impeller_Play_AiksTest_SolidStrokesRenderCorrectly_Metal.png -impeller_Play_AiksTest_SolidStrokesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_SolidStrokesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_SrgbToLinearFilterSubpassCollapseOptimization_Metal.png -impeller_Play_AiksTest_SrgbToLinearFilterSubpassCollapseOptimization_OpenGLES.png -impeller_Play_AiksTest_SrgbToLinearFilterSubpassCollapseOptimization_Vulkan.png -impeller_Play_AiksTest_StrokedCirclesRenderCorrectly_Metal.png -impeller_Play_AiksTest_StrokedCirclesRenderCorrectly_OpenGLES.png -impeller_Play_AiksTest_StrokedCirclesRenderCorrectly_Vulkan.png -impeller_Play_AiksTest_StrokedPathWithMoveToThenCloseDrawnCorrectly_Metal.png -impeller_Play_AiksTest_StrokedPathWithMoveToThenCloseDrawnCorrectly_OpenGLES.png -impeller_Play_AiksTest_StrokedPathWithMoveToThenCloseDrawnCorrectly_Vulkan.png -impeller_Play_AiksTest_SubpassWithClearColorOptimization_Metal.png -impeller_Play_AiksTest_SubpassWithClearColorOptimization_OpenGLES.png -impeller_Play_AiksTest_SubpassWithClearColorOptimization_Vulkan.png -impeller_Play_AiksTest_TextForegroundShaderWithTransform_Metal.png -impeller_Play_AiksTest_TextForegroundShaderWithTransform_OpenGLES.png -impeller_Play_AiksTest_TextForegroundShaderWithTransform_Vulkan.png -impeller_Play_AiksTest_TextFrameSubpixelAlignment_Metal.png -impeller_Play_AiksTest_TextFrameSubpixelAlignment_OpenGLES.png -impeller_Play_AiksTest_TextFrameSubpixelAlignment_Vulkan.png -impeller_Play_AiksTest_TextRotated180Degrees_Metal.png -impeller_Play_AiksTest_TextRotated180Degrees_OpenGLES.png -impeller_Play_AiksTest_TextRotated180Degrees_Vulkan.png -impeller_Play_AiksTest_ToImageFromImage_Metal.png -impeller_Play_AiksTest_ToImageFromImage_OpenGLES.png -impeller_Play_AiksTest_ToImageFromImage_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerImageDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerImageDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerImageDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithAdvancedBlendModeDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithAdvancedBlendModeDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithAdvancedBlendModeDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendColorFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendColorFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendColorFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendImageFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendImageFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithBlendImageFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorAndImageFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorAndImageFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorAndImageFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorFilterAndImageFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorFilterAndImageFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorFilterAndImageFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixColorFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixColorFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixColorFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixImageFilterDrawsCorrectly_Metal.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixImageFilterDrawsCorrectly_OpenGLES.png -impeller_Play_AiksTest_TranslucentSaveLayerWithColorMatrixImageFilterDrawsCorrectly_Vulkan.png -impeller_Play_AiksTest_TransparentShadowProducesCorrectColor_Metal.png -impeller_Play_AiksTest_TransparentShadowProducesCorrectColor_OpenGLES.png -impeller_Play_AiksTest_TransparentShadowProducesCorrectColor_Vulkan.png -impeller_Play_AiksTest_TwoContourPathWithSinglePointContour_Metal.png -impeller_Play_AiksTest_TwoContourPathWithSinglePointContour_OpenGLES.png -impeller_Play_AiksTest_TwoContourPathWithSinglePointContour_Vulkan.png -impeller_Play_AiksTest_VerifyNonOptimizedGradient_Metal.png -impeller_Play_AiksTest_VerifyNonOptimizedGradient_OpenGLES.png -impeller_Play_AiksTest_VerifyNonOptimizedGradient_Vulkan.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionDataAdvancedBlend_Metal.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionDataAdvancedBlend_OpenGLES.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionDataAdvancedBlend_Vulkan.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionData_Metal.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionData_OpenGLES.png -impeller_Play_AiksTest_VerticesGeometryColorUVPositionData_Vulkan.png -impeller_Play_AiksTest_VerticesGeometryUVPositionDataWithTranslate_Metal.png -impeller_Play_AiksTest_VerticesGeometryUVPositionDataWithTranslate_OpenGLES.png -impeller_Play_AiksTest_VerticesGeometryUVPositionDataWithTranslate_Vulkan.png -impeller_Play_AiksTest_VerticesGeometryUVPositionData_Metal.png -impeller_Play_AiksTest_VerticesGeometryUVPositionData_OpenGLES.png -impeller_Play_AiksTest_VerticesGeometryUVPositionData_Vulkan.png -impeller_Play_BlitPassTest_CanResizeTexturesPlayground_Metal.png -impeller_Play_BlitPassTest_CanResizeTexturesPlayground_OpenGLES.png -impeller_Play_BlitPassTest_CanResizeTexturesPlayground_Vulkan.png -impeller_Play_DlGoldenTest_Bug147807_Metal.png -impeller_Play_DlGoldenTest_Bug147807_OpenGLES.png -impeller_Play_DlGoldenTest_Bug147807_Vulkan.png -impeller_Play_DlGoldenTest_CanDrawPaint_Metal.png -impeller_Play_DlGoldenTest_CanDrawPaint_OpenGLES.png -impeller_Play_DlGoldenTest_CanDrawPaint_Vulkan.png -impeller_Play_DlGoldenTest_CanRenderImage_Metal.png -impeller_Play_DlGoldenTest_CanRenderImage_OpenGLES.png -impeller_Play_DlGoldenTest_CanRenderImage_Vulkan.png -impeller_Play_DlGoldenTest_DashedLinesTest_Metal.png -impeller_Play_DlGoldenTest_DashedLinesTest_OpenGLES.png -impeller_Play_DlGoldenTest_DashedLinesTest_Vulkan.png -impeller_Play_DlGoldenTest_FastVsGeneralGaussianMaskBlur_Metal.png -impeller_Play_DlGoldenTest_FastVsGeneralGaussianMaskBlur_OpenGLES.png -impeller_Play_DlGoldenTest_FastVsGeneralGaussianMaskBlur_Vulkan.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaledRotated_Metal.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaledRotated_OpenGLES.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaledRotated_Vulkan.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaled_Metal.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaled_OpenGLES.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlurScaled_Vulkan.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlur_Metal.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlur_OpenGLES.png -impeller_Play_DlGoldenTest_GaussianVsRRectBlur_Vulkan.png -impeller_Play_DlGoldenTest_LargeDownscaleRrect_Metal.png -impeller_Play_DlGoldenTest_LargeDownscaleRrect_OpenGLES.png -impeller_Play_DlGoldenTest_LargeDownscaleRrect_Vulkan.png -impeller_Play_DlGoldenTest_SaveLayerAtFractionalValue_Metal.png -impeller_Play_DlGoldenTest_SaveLayerAtFractionalValue_OpenGLES.png -impeller_Play_DlGoldenTest_SaveLayerAtFractionalValue_Vulkan.png -impeller_Play_DlGoldenTest_StrokedRRectFastBlur_Metal.png -impeller_Play_DlGoldenTest_StrokedRRectFastBlur_OpenGLES.png -impeller_Play_DlGoldenTest_StrokedRRectFastBlur_Vulkan.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterDisrespectCTM_Metal.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterDisrespectCTM_OpenGLES.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterDisrespectCTM_Vulkan.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterRespectCTM_Metal.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterRespectCTM_OpenGLES.png -impeller_Play_DlGoldenTest_TextBlurMaskFilterRespectCTM_Vulkan.png diff --git a/engine/src/flutter/testing/ios_scenario_app/pubspec.yaml b/engine/src/flutter/testing/ios_scenario_app/pubspec.yaml index fb655502b3..ca3122c672 100644 --- a/engine/src/flutter/testing/ios_scenario_app/pubspec.yaml +++ b/engine/src/flutter/testing/ios_scenario_app/pubspec.yaml @@ -14,7 +14,6 @@ resolution: workspace dependencies: args: any - dir_contents_diff: any engine_repo_tools: any meta: any path: any diff --git a/engine/src/flutter/testing/run_tests.py b/engine/src/flutter/testing/run_tests.py index a51e063eb8..4aec1c9494 100755 --- a/engine/src/flutter/testing/run_tests.py +++ b/engine/src/flutter/testing/run_tests.py @@ -968,7 +968,6 @@ def build_dart_host_test_list(): os.path.join('flutter', 'tools', 'build_bucket_golden_scraper'), os.path.join('flutter', 'tools', 'clang_tidy'), os.path.join('flutter', 'tools', 'const_finder'), - os.path.join('flutter', 'tools', 'dir_contents_diff'), os.path.join('flutter', 'tools', 'engine_tool'), os.path.join('flutter', 'tools', 'githooks'), os.path.join('flutter', 'tools', 'header_guard_check'), @@ -1061,6 +1060,23 @@ class DirectoryChange(): os.chdir(self.old_cwd) +def contains_png_recursive(directory): + """ + Recursively checks if a directory contains at least one .png file. + + Args: + directory: The path to the directory to check. + + Returns: + True if a .png file is found, False otherwise. + """ + for _, _, files in os.walk(directory): + for filename in files: + if filename.lower().endswith('.png'): + return True + return False + + def run_impeller_golden_tests(build_dir: str, require_skia_gold: bool = False): """ Executes the impeller golden image tests from in the `variant` build. @@ -1079,19 +1095,9 @@ def run_impeller_golden_tests(build_dir: str, require_skia_gold: bool = False): extra_env.update(vulkan_validation_env(build_dir)) run_cmd([tests_path, f'--working_dir={temp_dir}'], cwd=build_dir, env=extra_env) dart_bin = os.path.join(build_dir, 'dart-sdk', 'bin', 'dart') - golden_path = os.path.join('testing', 'impeller_golden_tests_output.txt') - script_path = os.path.join('tools', 'dir_contents_diff', 'bin', 'dir_contents_diff.dart') - diff_result = subprocess.run( - f'{dart_bin} {script_path} {golden_path} {temp_dir}', - check=False, - shell=True, - stdout=subprocess.PIPE, - cwd=os.path.join(BUILDROOT_DIR, 'flutter') - ) - if diff_result.returncode != 0: - print_divider('<') - print(diff_result.stdout.decode()) - raise RuntimeError('impeller_golden_tests diff failure') + + if not contains_png_recursive(temp_dir): + raise RuntimeError('impeller_golden_tests diff failure - no PNGs found!') if not require_skia_gold: print_divider('<') diff --git a/engine/src/flutter/tools/dir_contents_diff/README.md b/engine/src/flutter/tools/dir_contents_diff/README.md deleted file mode 100644 index 2eddf23a43..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# dir_contents_diff - -This tool will compare the contents of a directory to a file that lists the -contents of the directory, printing out a patch to apply if they differ. - -The exit code is 0 if there is no difference. - -## Usage - -```sh -dart run ./bin/dir_contents_diff.dart -``` diff --git a/engine/src/flutter/tools/dir_contents_diff/bin/dir_contents_diff.dart b/engine/src/flutter/tools/dir_contents_diff/bin/dir_contents_diff.dart deleted file mode 100644 index 22273291b3..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/bin/dir_contents_diff.dart +++ /dev/null @@ -1,11 +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. - -import 'dart:io' show exitCode; - -import 'package:dir_contents_diff/dir_contents_diff.dart'; - -void main(List args) { - exitCode = run(args); -} diff --git a/engine/src/flutter/tools/dir_contents_diff/lib/dir_contents_diff.dart b/engine/src/flutter/tools/dir_contents_diff/lib/dir_contents_diff.dart deleted file mode 100644 index f1cd3177d4..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/lib/dir_contents_diff.dart +++ /dev/null @@ -1,103 +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. - -import 'dart:convert' show utf8; -import 'dart:io'; - -String _basename(String path) { - return path.split(Platform.pathSeparator).last; -} - -String _generateDirListing(String dirPath) { - final Directory dir = Directory(dirPath); - final List entities = dir.listSync(); - entities.sort((FileSystemEntity a, FileSystemEntity b) => a.path.compareTo(b.path)); - return entities.map((FileSystemEntity entity) => _basename(entity.path)).join('\n'); -} - -String _strReplaceRange(String inputStr, int start, int end, String replacement) { - return inputStr.substring(0, start) + replacement + inputStr.substring(end); -} - -String _redirectPatch(String patch) { - final RegExp inputPathExp = RegExp(r'^--- a(.*)', multiLine: true); - final RegExp outputPathExp = RegExp(r'^\+\+\+ b(.*)', multiLine: true); - - final Match? inputPathMatch = inputPathExp.firstMatch(patch); - final Match? outputPathMatch = outputPathExp.firstMatch(patch); - - assert(inputPathMatch != null); - assert(outputPathMatch != null); - - if (inputPathMatch != null && outputPathMatch != null) { - return _strReplaceRange( - patch, - outputPathMatch.start + 5, // +5 to account for '+++ b' - outputPathMatch.end, - inputPathMatch.group(1)!, - ); - } - throw Exception('Unable to find input and output paths'); -} - -File _makeTempFile(String prefix) { - final Directory systemTempDir = Directory.systemTemp; - final String filename = '$prefix-${DateTime.now().millisecondsSinceEpoch}'; - final String path = '${systemTempDir.path}${Platform.pathSeparator}$filename'; - final File result = File(path); - result.createSync(); - return result; -} - -/// Run the diff of the contents of a directory at [dirPath] and the contents of -/// a file at [goldenPath]. Returns 0 if there is no diff. Be aware that the -/// CWD should be inside of the git repository for the patch to be correct. -int dirContentsDiff(String goldenPath, String dirPath) { - if (!File(goldenPath).existsSync()) { - throw Exception('unable to find `$goldenPath`'); - } - if (!Directory(dirPath).existsSync()) { - throw Exception('unable to find `$dirPath`'); - } - int result = 0; - final File tempFile = _makeTempFile('dir_contents_diff'); - try { - final String dirListing = _generateDirListing(dirPath); - tempFile.writeAsStringSync(dirListing); - final ProcessResult diffResult = Process.runSync( - 'git', - [ - 'diff', - // If you manually edit the golden file, many text editors will add - // trailing whitespace. This flag ignores that because honestly it's - // not a significant part of this test. - '--ignore-space-at-eol', - '-p', - goldenPath, - tempFile.path, - ], - runInShell: true, - stdoutEncoding: utf8, - ); - if (diffResult.exitCode != 0) { - print('Unexpected diff in $goldenPath, use `git apply` with the following patch.\n'); - print(_redirectPatch(diffResult.stdout as String)); - result = 1; - } - } finally { - tempFile.deleteSync(); - } - - return result; -} - -/// The main entrypoint for the program, returns `exitCode`. -int run(List args) { - if (args.length != 2) { - throw Exception('usage: '); - } - final String goldenPath = args[0]; - final String dirPath = args[1]; - return dirContentsDiff(goldenPath, dirPath); -} diff --git a/engine/src/flutter/tools/dir_contents_diff/pubspec.yaml b/engine/src/flutter/tools/dir_contents_diff/pubspec.yaml deleted file mode 100644 index a1b32abe95..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/pubspec.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: dir_contents_diff -publish_to: none - -# Required for workspace support. -environment: - sdk: ^3.7.0-0 - -# This package is managed as part of the engine workspace. -resolution: workspace - -dev_dependencies: - engine_repo_tools: any - path: any - test: any diff --git a/engine/src/flutter/tools/dir_contents_diff/test/dir_contents_diff_test.dart b/engine/src/flutter/tools/dir_contents_diff/test/dir_contents_diff_test.dart deleted file mode 100644 index bf3e873203..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/dir_contents_diff_test.dart +++ /dev/null @@ -1,78 +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. - -import 'dart:io' as io; - -import 'package:engine_repo_tools/engine_repo_tools.dart'; -import 'package:path/path.dart' as p; -import 'package:test/test.dart'; - -void main() { - // Find a path to `dir_contents_diff.dart` from the working directory. - final String pkgPath = p.join(Engine.findWithin().flutterDir.path, 'tools', 'dir_contents_diff'); - final String binPath = p.join(pkgPath, 'bin', 'dir_contents_diff.dart'); - - // As a sanity check, ensure that the file exists. - if (!io.File(binPath).existsSync()) { - io.stderr.writeln('Unable to find $binPath'); - io.exitCode = 1; - return; - } - - // Runs `../bin/dir_contents_diff.dart` with the given arguments. - (int, String) runSync(String goldenPath, String dirPath) { - final io.ProcessResult result = io.Process.runSync(io.Platform.resolvedExecutable, [ - binPath, - goldenPath, - dirPath, - ]); - return (result.exitCode, result.stdout ?? result.stderr); - } - - test('lists files and diffs successfully', () { - final String goldenPath = p.join(pkgPath, 'test', 'file_ok.txt'); - final String dirPath = p.join(pkgPath, 'test', 'fixtures'); - final (int exitCode, String output) = runSync(goldenPath, dirPath); - if (exitCode != 0) { - io.stderr.writeln('Expected exit code 0, got $exitCode'); - io.stderr.writeln(output); - } - expect(exitCode, 0); - }); - - test('lists files and diffs successfully, even with an EOF newline', () { - final String goldenPath = p.join(pkgPath, 'test', 'file_ok_eof_newline.txt'); - final String dirPath = p.join(pkgPath, 'test', 'fixtures'); - final (int exitCode, String output) = runSync(goldenPath, dirPath); - if (exitCode != 0) { - io.stderr.writeln('Expected exit code 0, got $exitCode'); - io.stderr.writeln(output); - } - expect(exitCode, 0); - }); - - test('diff fails when an expected file is missing', () { - final String goldenPath = p.join(pkgPath, 'test', 'file_bad_missing.txt'); - final String dirPath = p.join(pkgPath, 'test', 'fixtures'); - final (int exitCode, String output) = runSync(goldenPath, dirPath); - if (exitCode == 0) { - io.stderr.writeln('Expected non-zero exit code, got $exitCode'); - io.stderr.writeln(output); - } - expect(exitCode, 1); - expect(output, contains('+a.txt')); - }); - - test('diff fails when an unexpected file is present', () { - final String goldenPath = p.join(pkgPath, 'test', 'file_bad_unexpected.txt'); - final String dirPath = p.join(pkgPath, 'test', 'fixtures'); - final (int exitCode, String output) = runSync(goldenPath, dirPath); - if (exitCode == 0) { - io.stderr.writeln('Expected non-zero exit code, got $exitCode'); - io.stderr.writeln(output); - } - expect(exitCode, 1); - expect(output, contains('-c.txt')); - }); -} diff --git a/engine/src/flutter/tools/dir_contents_diff/test/file_bad_missing.txt b/engine/src/flutter/tools/dir_contents_diff/test/file_bad_missing.txt deleted file mode 100644 index 1f482482ef..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/file_bad_missing.txt +++ /dev/null @@ -1 +0,0 @@ -b.txt diff --git a/engine/src/flutter/tools/dir_contents_diff/test/file_bad_unexpected.txt b/engine/src/flutter/tools/dir_contents_diff/test/file_bad_unexpected.txt deleted file mode 100644 index 5be9c6d18f..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/file_bad_unexpected.txt +++ /dev/null @@ -1,3 +0,0 @@ -a.txt -b.txt -c.txt diff --git a/engine/src/flutter/tools/dir_contents_diff/test/file_ok.txt b/engine/src/flutter/tools/dir_contents_diff/test/file_ok.txt deleted file mode 100644 index 87122ecd89..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/file_ok.txt +++ /dev/null @@ -1,2 +0,0 @@ -a.txt -b.txt diff --git a/engine/src/flutter/tools/dir_contents_diff/test/file_ok_eof_newline.txt b/engine/src/flutter/tools/dir_contents_diff/test/file_ok_eof_newline.txt deleted file mode 100644 index 87122ecd89..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/file_ok_eof_newline.txt +++ /dev/null @@ -1,2 +0,0 @@ -a.txt -b.txt diff --git a/engine/src/flutter/tools/dir_contents_diff/test/fixtures/a.txt b/engine/src/flutter/tools/dir_contents_diff/test/fixtures/a.txt deleted file mode 100644 index 0d4f7dd514..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/fixtures/a.txt +++ /dev/null @@ -1 +0,0 @@ -Will be referenced by a test. diff --git a/engine/src/flutter/tools/dir_contents_diff/test/fixtures/b.txt b/engine/src/flutter/tools/dir_contents_diff/test/fixtures/b.txt deleted file mode 100644 index 0d4f7dd514..0000000000 --- a/engine/src/flutter/tools/dir_contents_diff/test/fixtures/b.txt +++ /dev/null @@ -1 +0,0 @@ -Will be referenced by a test. diff --git a/engine/src/flutter/tools/pub_get_offline.py b/engine/src/flutter/tools/pub_get_offline.py index 76d590b1bf..a01f55da93 100644 --- a/engine/src/flutter/tools/pub_get_offline.py +++ b/engine/src/flutter/tools/pub_get_offline.py @@ -40,7 +40,6 @@ ALL_PACKAGES = [ os.path.join(ENGINE_DIR, 'tools', 'clangd_check'), os.path.join(ENGINE_DIR, 'tools', 'compare_goldens'), os.path.join(ENGINE_DIR, 'tools', 'const_finder'), - os.path.join(ENGINE_DIR, 'tools', 'dir_contents_diff'), os.path.join(ENGINE_DIR, 'tools', 'engine_tool'), os.path.join(ENGINE_DIR, 'tools', 'gen_web_locale_keymap'), os.path.join(ENGINE_DIR, 'tools', 'githooks'),