[graphite] Expand coverage of AndroidPrecompileTest This handles all the easy Android cases. The remaining cases fall into the categories: VerticesRenderStep cases - which needs reining in Complex path draw cases - which, weirdly, aren't getting good coverage Bug: b/358074434 Change-Id: I03f34ce8fc3b18340b20a9fb6efd7f36126f4237 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/991016 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/tests/graphite/precompile/AndroidPrecompileTest.cpp b/tests/graphite/precompile/AndroidPrecompileTest.cpp index 8e8c7fd1..a0a2db1 100644 --- a/tests/graphite/precompile/AndroidPrecompileTest.cpp +++ b/tests/graphite/precompile/AndroidPrecompileTest.cpp
@@ -14,13 +14,15 @@ #include "src/gpu/graphite/TextureInfoPriv.h" #include "tests/graphite/precompile/PrecompileTestUtils.h" +#include <set> + using namespace skgpu::graphite; using namespace PrecompileTestUtils; namespace { -// These settings cover 19 of the 87 cases in 'kCases'. -// They create 24 Pipelines so only modestly over-generate (5 extra Pipelines). +// These settings cover 41 of the 87 cases in 'kCases'. +// They create 53 Pipelines so only modestly over-generate (12 extra Pipelines - 23%). // // These are sorted into groups based on (first) PaintOptions creation function and // then Render Pass Properties. @@ -46,13 +48,58 @@ // 100% (2/2) handles 10 30 /* 7 */ { TransparentPaintImageSRGBHWOnlySrcover(), kRRectAndNonAARect, kRGBA_1_D_SRGB }, -// 100% (2/2) handles 28 60 -/* 8 */ { SolidSrcover(), kRRectAndNonAARect, kRGBA_1_D }, -// 50% (1/2) handles 77 +// 75% (2/2) handles 28 59 60 +/* 8 */ { SolidSrcSrcover(), kRRectAndNonAARect, kRGBA_1_D }, +// 50% (1/2) handles 77 - due to the w/o msaa load variants not being used /* 9 */ { SolidSrcover(), DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, // 100% (2/2) handles 19 39 /* 10 */ { ImagePremulHWOnlyMatrixCFSrcover(), kRRectAndNonAARect, kRGBA_1_D }, + +// 100% (1/1) handles 12 +/* 11 */ { TransparentPaintImagePremulHWOnlyMatrixCFSrcover(), + DrawTypeFlags::kAnalyticRRect, kRGBA_1_D }, + +// 100% (2/2) handles 14 31 +/* 12 */ { TransparentPaintImagePremulHWOnlyMatrixCFDitherSrcover(), + kRRectAndNonAARect, kRGBA_1_D }, +// 50% (1/2) handles 71 - due to the w/o msaa load variants not being used +/* 13 */ { TransparentPaintImagePremulHWOnlyMatrixCFDitherSrcover(), + DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, + +// 100% (2/2) handles 16 33 +/* 14 */ { ImagePremulHWOnlyMatrixCFDitherSrcover(), kRRectAndNonAARect, kRGBA_1_D }, +// 50% (1/2) handles 72 - due to the w/o msaa load variants not being used +/* 15 */ { ImagePremulHWOnlyMatrixCFDitherSrcover(), DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, + +// 100% (2/2) handles 15 32 +/* 16 */ { TransparentPaintImageSRGBHWOnlyMatrixCFDitherSrcover(), + kRRectAndNonAARect, kRGBA_1_D_SRGB }, + +// 100% (2/2) handles 17 35 +/* 17 */ { ImageSRGBHWOnlyMatrixCFDitherSrcover(), kRRectAndNonAARect, kRGBA_1_D_SRGB }, +// 50% (1/2) handles 80 - due to the w/o msaa load variants not being used +/* 18 */ { ImageSRGBHWOnlyMatrixCFDitherSrcover(), DrawTypeFlags::kAnalyticRRect, kRGBA_4_DS_SRGB }, + +// 100% (2/2) handles 22 42 +/* 19 */ { SolidMatrixCFSrcover(), kRRectAndNonAARect, kRGBA_1_D }, +// 50% (1/2) handles 83 +/* 20 */ { SolidMatrixCFSrcover(), DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, + +// 100% (1/1) handles 37 +/* 21 */ { ImageAlphaPremulHWOnlyMatrixCFSrcover(), DrawTypeFlags::kNonAAFillRect, kRGBA_1_D }, +// 50% (1/2) handles 73 - due to the w/o msaa load variants not being used +/* 22 */ { ImageAlphaPremulHWOnlyMatrixCFSrcover(), DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, + +// 100% (1/1) handles 38 +/* 23 */ { ImageAlphaSRGBHWOnlyMatrixCFSrcover(), DrawTypeFlags::kNonAAFillRect,kRGBA_1_D_SRGB }, + +// 100% (1/1) handles 44 +/* 24 */ { ImagePremulHWOnlySrc(), DrawTypeFlags::kNonAAFillRect, kRGBA_1_D }, +// 100% (1/1) handles 62 +/* 25 */ { ImagePremulHWOnlySrc(), DrawTypeFlags::kPerEdgeAAQuad, kRGBA_1_D }, +// 50% (1/2) handles 74 - due to the w/o msaa load variants not being used +/* 26 */ { ImagePremulHWOnlySrc(), DrawTypeFlags::kNonAAFillRect, kRGBA_4_DS }, }; // @@ -101,22 +148,22 @@ /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "BlendCompose [ RE_LinearEffect_0x188a0000__DISPLAY_P3__false__0x90a0000__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] ColorSpaceTransform ColorSpaceTransform ] AlphaOnlyPaintColor SrcIn ] SrcOver" }, -/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 12 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ BlendCompose [ RE_LinearEffect_0x188a0000__DISPLAY_P3__false__0x90a0000__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] ColorSpaceTransform ColorSpaceTransform ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] SrcOver" }, -/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 14 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] Dither ] SrcOver" }, -/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 15 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] Dither ] SrcOver" }, -/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 16 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] MatrixColorFilter ] Dither ] SrcOver" }, -/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 17 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] MatrixColorFilter ] Dither ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -131,7 +178,7 @@ /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ RE_LinearEffect_BT2020_ITU_PQ__BT2020__false__UNKNOWN__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kEwAAPcAAAAAAAAA) ] ColorSpaceTransform ] ] ColorSpaceTransform ColorSpaceTransform ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 22 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ SolidColor MatrixColorFilter ] SrcOver" }, /* 23 */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -143,7 +190,7 @@ /* 25 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "AnalyticRRectRenderStep + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHoAAO4AAAAAAAAA) ] ColorSpaceTransformPremul ] ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -158,28 +205,28 @@ /* 30 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] AlphaOnlyPaintColor SrcIn ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 31 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 32 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 33 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] MatrixColorFilter ] Dither ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] MatrixColorFilter ] Dither ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 35 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] MatrixColorFilter ] Dither ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] MatrixColorFilter ] Dither ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 37 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ LocalMatrix [ BlendCompose [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransform ] RGBPaintColor DstIn ] ] MatrixColorFilter ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 38 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ LocalMatrix [ BlendCompose [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] RGBPaintColor DstIn ] ] MatrixColorFilter ] SrcOver" }, /* 39 */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -191,13 +238,13 @@ /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ RE_LinearEffect_BT2020_ITU_PQ__BT2020__false__UNKNOWN__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kEwAAPcAAAAAAAAA) ] ColorSpaceTransform ] ] ColorSpaceTransform ColorSpaceTransform ] Dither ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 42 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ SolidColor MatrixColorFilter ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ SolidColor MatrixColorFilter ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 44 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] Src" }, /* 45 */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -212,37 +259,37 @@ /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHIAAPAAAAAAAAAA) ] ColorSpaceTransformPremul ] ] SrcOver" }, -/* 50-*/ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHoAAO4AAAAAAAAA) ] ColorSpaceTransformPremul ] ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHoAAO4AAAAAAAAA) ] ColorSpaceTransformPremul ] ] SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_BlurFilterMixEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_GainmapEffect [ RE_MouriMap_TonemapEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransform ] ] LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ColorSpaceTransformPremul ColorSpaceTransformPremul ] LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransform ] ] ColorSpaceTransformPremul ColorSpaceTransformPremul ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_KawaseBlurDualFilter_HighSampleBlurEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_KawaseBlurDualFilter_LowSampleBlurEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_KawaseBlurDualFilter_LowSampleBlurEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ] SrcOver" }, /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_LinearEffect_BT2020_ITU_PQ__BT2020__false__UNKNOWN__Shader [ SolidColor ColorSpaceTransform ColorSpaceTransform ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "RE_MouriMap_TonemapEffect [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] ColorSpaceTransform ColorSpaceTransform ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 59 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "SolidColor Src" }, /* 60 */ { -1, "RP((RGBA8+D16 x1).rgba) + " @@ -251,10 +298,10 @@ /* X */ { -1, "RP((RGBA8+D16 x1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "SolidColor SrcOver AnalyticClip" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* 62 */ { -1, "RP((RGBA8+D16 x1).rgba) + " "PerEdgeAAQuadRenderStep + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] Src" }, -/* */ { -1, "RP((RGBA8+D16 x1).rgba) + " +/* ? */ { -1, "RP((RGBA8+D16 x1).rgba) + " "VerticesRenderStep[TrisColor] + " "Compose [ BlendCompose [ RGBPaintColor Compose [ PrimitiveColor ColorSpaceTransformPremul ] Modulate ] Compose [ GaussianColorFilter BlendCompose [ SolidColor Passthrough Modulate ] ] ] SrcOver" }, /* 64 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " @@ -269,61 +316,61 @@ /* X */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "AnalyticRRectRenderStep + " "RE_LinearEffect_0x188a0000__DISPLAY_P3__false__0x90a0000__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] ColorSpaceTransform ColorSpaceTransform ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[InverseCover] + " "(empty)" }, /* 69 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] SrcOver" }, -/* 70-*/ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* X */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHIAAPAAAAAAAAAA) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* 71 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ BlendCompose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] AlphaOnlyPaintColor SrcIn ] MatrixColorFilter ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* 72 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] MatrixColorFilter ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* 73 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ LocalMatrix [ BlendCompose [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransform ] RGBPaintColor DstIn ] ] MatrixColorFilter ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* 74 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] Src" }, /* 75 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformPremul ] ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* X */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kHIAAPAAAAAAAAAA) ] ColorSpaceTransformPremul ] ] SrcOver" }, /* 77 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "CoverBoundsRenderStep[NonAAFill] + " "SolidColor SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "MiddleOutFanRenderStep[EvenOdd] + " "(empty)" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba w/ msaa load) + " "TessellateCurvesRenderStep[EvenOdd] + " "(empty)" }, -/* 80-*/ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* 80 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "AnalyticRRectRenderStep + " "Compose [ Compose [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(0) ] ColorSpaceTransformSRGB ] ] MatrixColorFilter ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "CoverBoundsRenderStep[InverseCover] + " "(empty)" }, /* X */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ RE_LinearEffect_BT2020_ITU_PQ__BT2020__false__UNKNOWN__Shader [ LocalMatrix [ Compose [ CoordNormalize [ HardwareImage(3: kEwAAPcAAAAAAAAA) ] ColorSpaceTransform ] ] ColorSpaceTransform ColorSpaceTransform ] Dither ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* 83 */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "CoverBoundsRenderStep[NonAAFill] + " "Compose [ SolidColor MatrixColorFilter ] SrcOver" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "MiddleOutFanRenderStep[EvenOdd] + " "(empty)" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "TessellateCurvesRenderStep[EvenOdd] + " "(empty)" }, -/* */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " +/* ? */ { -1, "RP((RGBA8+D24_S8 x4->1).rgba) + " "VerticesRenderStep[TrisColor] + " "Compose [ BlendCompose [ RGBPaintColor Compose [ PrimitiveColor ColorSpaceTransformPremul ] Modulate ] Compose [ GaussianColorFilter BlendCompose [ SolidColor Passthrough Modulate ] ] ] SrcOver" }, }; @@ -332,6 +379,21 @@ if (strstr(str, "AnalyticClip")) { // we have to think about this a bit more return true; } + if (strstr(str, "HardwareImage(3:")) { + return true; + } + if (strstr(str, "RE_BlurFilterMixEffect")) { + return true; + } + if (strstr(str, "RE_GainmapEffect")) { + return true; + } + if (strstr(str, "RE_KawaseBlurDualFilter_HighSampleBlurEffect")) { + return true; + } + if (strstr(str, "RE_KawaseBlurDualFilter_LowSampleBlurEffect")) { + return true; + } if (strstr(str, "RE_LinearEffect_BT2020_ITU_PQ__BT2020__false__UNKNOWN__Shader")) { return true; } @@ -350,7 +412,9 @@ if (strstr(str, "RE_MouriMap_CrossTalkAndChunk16x16Effect")) { return true; } - + if (strstr(str, "RE_MouriMap_TonemapEffect")) { + return true; + } return false; } @@ -400,6 +464,8 @@ } #endif + std::set<int> MSAALoadOnlyCases = { 2, 6, 9, 13, 15, 22, 26 }; + PipelineLabelInfoCollector collector({ kCases }, skip); static const size_t kChosenCase = -1; // only test this entry in 'kPrecompileCases' @@ -408,6 +474,13 @@ continue; } + if (!caps->loadOpAffectsMSAAPipelines() && + MSAALoadOnlyCases.find(i) != MSAALoadOnlyCases.end()) { + // If "w/ msaa load" strings aren't being generated, cases that only handle Pipeline + // labels with that sub-string will never be matched. + continue; + } + RunTest(precompileContext.get(), reporter, { kPrecompileCases }, i, { kCases }, &collector);
diff --git a/tests/graphite/precompile/ChromePrecompileTest.cpp b/tests/graphite/precompile/ChromePrecompileTest.cpp index 9cfc7f9..fab80d5 100644 --- a/tests/graphite/precompile/ChromePrecompileTest.cpp +++ b/tests/graphite/precompile/ChromePrecompileTest.cpp
@@ -58,7 +58,7 @@ /* 17 */ { LinearGradSmSrcover(), DrawTypeFlags::kNonAAFillRect, kBGRA_1_D }, /* 18 */ { SolidSrcSrcover(), DrawTypeFlags::kSimpleShape, kBGRA_1_D }, /* 19 */ { TransparentPaintImagePremulHWAndClampSrcover(),kQuadAndNonAARect, kBGRA_1_D }, -/* 20 */ { LinearGradSRGBSmMedSrcover(), kRRectAndNonAARect, kBGRA_1_D_Adobe }, +/* 20 */ { LinearGradSRGBSmMedDitherSrcover(), kRRectAndNonAARect, kBGRA_1_D_Adobe }, /* 21 */ { ImageHWOnlySRGBSrcover(), kRRectAndNonAARect, kBGRA_1_D_SRGB }, /* 22 */ { ImageSRGBNoCubicSrc(), kQuadAndNonAARect, kBGRA_1_D_SRGB }, /* 23 */ { YUVImageSRGBNoCubicSrcover(), DrawTypeFlags::kSimpleShape, kBGRA_1_D_SRGB }, @@ -75,7 +75,7 @@ /* 32 */ { SolidSrcover(), DrawTypeFlags::kNonSimpleShape, kBGRA_4_DS }, /* 33 */ { SolidSrcover(), DrawTypeFlags::kAnalyticRRect, kBGRA_4_DS }, /* 34 */ { TransparentPaintImagePremulHWOnlySrcover(), DrawTypeFlags::kPerEdgeAAQuad, kBGRA_4_DS }, -/* 35 */ { LinearGradSRGBSmMedSrcover(), kRRectAndNonAARect, kBGRA_4_DS_Adobe }, +/* 35 */ { LinearGradSRGBSmMedDitherSrcover(), kRRectAndNonAARect, kBGRA_4_DS_Adobe }, /* 36 */ { ImageHWOnlySRGBSrcover(), DrawTypeFlags::kAnalyticRRect, kBGRA_4_DS_SRGB }, /* 37 */ { YUVImageSRGBSrcover2(), DrawTypeFlags::kSimpleShape, kBGRA_4_DS_SRGB }, };
diff --git a/tests/graphite/precompile/PrecompileTestUtils.cpp b/tests/graphite/precompile/PrecompileTestUtils.cpp index 5e073a2..6424fc5 100644 --- a/tests/graphite/precompile/PrecompileTestUtils.cpp +++ b/tests/graphite/precompile/PrecompileTestUtils.cpp
@@ -43,6 +43,15 @@ return paintOptions; } +PaintOptions SolidMatrixCFSrcover() { + PaintOptions paintOptions; + + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + + return paintOptions; +} + PaintOptions LinearGradSmSrcover() { PaintOptions paintOptions; paintOptions.setShaders({ PrecompileShaders::LinearGradient(GradientShaderFlags::kSmall) }); @@ -50,7 +59,7 @@ return paintOptions; } -PaintOptions LinearGradSRGBSmMedSrcover() { +PaintOptions LinearGradSRGBSmMedDitherSrcover() { PaintOptions paintOptions; paintOptions.setShaders({ PrecompileShaders::LinearGradient( GradientShaderFlags::kNoLarge, @@ -77,6 +86,50 @@ return paintOptions; } +PaintOptions TransparentPaintImagePremulHWOnlyMatrixCFSrcover() { + PaintOptions paintOptions; + + SkColorInfo ci { kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr }; + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + paintOptions.setPaintColorIsOpaque(false); + return paintOptions; +} + +PaintOptions TransparentPaintImagePremulHWOnlyMatrixCFDitherSrcover() { + PaintOptions paintOptions; + + SkColorInfo ci { kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr }; + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + paintOptions.setPaintColorIsOpaque(false); + paintOptions.setDither(true); + return paintOptions; +} + +PaintOptions TransparentPaintImageSRGBHWOnlyMatrixCFDitherSrcover() { + SkColorInfo ci { kRGBA_8888_SkColorType, + kPremul_SkAlphaType, + SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kAdobeRGB) }; + + PaintOptions paintOptions; + + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + paintOptions.setPaintColorIsOpaque(false); + paintOptions.setDither(true); + return paintOptions; +} + PaintOptions TransparentPaintImagePremulHWOnlySrcover() { PaintOptions paintOptions; @@ -137,6 +190,17 @@ return paintOptions; } +PaintOptions ImagePremulHWOnlySrc() { + PaintOptions paintOptions; + + SkColorInfo ci { kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr }; + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setBlendModes({ SkBlendMode::kSrc }); + return paintOptions; +} + PaintOptions ImagePremulHWOnlySrcover() { PaintOptions paintOptions; @@ -240,6 +304,36 @@ return paintOptions; } +PaintOptions ImageAlphaPremulHWOnlyMatrixCFSrcover() { + PaintOptions paintOptions; + + SkColorInfo ci { kAlpha_8_SkColorType, kUnpremul_SkAlphaType, nullptr }; + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + return paintOptions; +} + +PaintOptions ImageAlphaSRGBHWOnlyMatrixCFSrcover() { + // Note: this is different from the other SRGB ColorInfos + SkColorInfo ci { kAlpha_8_SkColorType, + kUnpremul_SkAlphaType, + SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kAdobeRGB) }; + + PaintOptions paintOptions; + + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + return paintOptions; +} + PaintOptions ImageAlphaNoCubicSrc() { PaintOptions paintOptions; @@ -279,6 +373,39 @@ return paintOptions; } +PaintOptions ImagePremulHWOnlyMatrixCFDitherSrcover() { + PaintOptions paintOptions; + + SkColorInfo ci { kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr }; + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + paintOptions.setDither(true); + + return paintOptions; +} + +PaintOptions ImageSRGBHWOnlyMatrixCFDitherSrcover() { + SkColorInfo ci { kRGBA_8888_SkColorType, + kPremul_SkAlphaType, + SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kAdobeRGB) }; + + PaintOptions paintOptions; + + paintOptions.setShaders({ PrecompileShaders::Image(ImageShaderFlags::kExcludeCubic, + { &ci, 1 }, + {}) }); + paintOptions.setColorFilters({ PrecompileColorFilters::Matrix() }); + + paintOptions.setBlendModes({ SkBlendMode::kSrcOver }); + paintOptions.setDither(true); + + return paintOptions; +} + PaintOptions ImageHWOnlySRGBSrcover() { PaintOptions paintOptions;
diff --git a/tests/graphite/precompile/PrecompileTestUtils.h b/tests/graphite/precompile/PrecompileTestUtils.h index a849759..6327788 100644 --- a/tests/graphite/precompile/PrecompileTestUtils.h +++ b/tests/graphite/precompile/PrecompileTestUtils.h
@@ -92,15 +92,20 @@ PipelineLabelInfoCollector* collector); skgpu::graphite::PaintOptions SolidSrcover(); +skgpu::graphite::PaintOptions SolidMatrixCFSrcover(); skgpu::graphite::PaintOptions LinearGradSmSrcover(); -skgpu::graphite::PaintOptions LinearGradSRGBSmMedSrcover(); +skgpu::graphite::PaintOptions LinearGradSRGBSmMedDitherSrcover(); skgpu::graphite::PaintOptions TransparentPaintImagePremulHWAndClampSrcover(); +skgpu::graphite::PaintOptions TransparentPaintImagePremulHWOnlyMatrixCFSrcover(); +skgpu::graphite::PaintOptions TransparentPaintImagePremulHWOnlyMatrixCFDitherSrcover(); +skgpu::graphite::PaintOptions TransparentPaintImageSRGBHWOnlyMatrixCFDitherSrcover(); skgpu::graphite::PaintOptions TransparentPaintImagePremulHWOnlySrcover(); skgpu::graphite::PaintOptions TransparentPaintImageSRGBHWOnlySrcover(); skgpu::graphite::PaintOptions TransparentPaintSrcover(); skgpu::graphite::PaintOptions SolidClearSrcSrcover(); skgpu::graphite::PaintOptions SolidSrcSrcover(); skgpu::graphite::PaintOptions ImagePremulNoCubicSrcover(); +skgpu::graphite::PaintOptions ImagePremulHWOnlySrc(); skgpu::graphite::PaintOptions ImagePremulHWOnlySrcover(); skgpu::graphite::PaintOptions ImagePremulClampNoCubicDstin(); skgpu::graphite::PaintOptions ImagePremulHWOnlyDstin(); @@ -110,9 +115,13 @@ skgpu::graphite::PaintOptions ImageSRGBNoCubicSrc(); skgpu::graphite::PaintOptions BlendPorterDuffCFSrcover(); skgpu::graphite::PaintOptions ImageAlphaHWOnlySrcover(); +skgpu::graphite::PaintOptions ImageAlphaPremulHWOnlyMatrixCFSrcover(); +skgpu::graphite::PaintOptions ImageAlphaSRGBHWOnlyMatrixCFSrcover(); skgpu::graphite::PaintOptions ImageAlphaNoCubicSrc(); skgpu::graphite::PaintOptions ImagePremulHWOnlyPorterDuffCFSrcover(); skgpu::graphite::PaintOptions ImagePremulHWOnlyMatrixCFSrcover(); +skgpu::graphite::PaintOptions ImagePremulHWOnlyMatrixCFDitherSrcover(); +skgpu::graphite::PaintOptions ImageSRGBHWOnlyMatrixCFDitherSrcover(); skgpu::graphite::PaintOptions ImageHWOnlySRGBSrcover();