[graphite] Add system to support client caching of images
Bug: b/238756324
Change-Id: Idea51ba727b5f30fa9073690d25a754b933b0688
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/564196
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/gn/graphite.gni b/gn/graphite.gni
index 0284105..876dab4 100644
--- a/gn/graphite.gni
+++ b/gn/graphite.gni
@@ -13,6 +13,7 @@
"$_include/Context.h",
"$_include/ContextOptions.h",
"$_include/GraphiteTypes.h",
+ "$_include/ImageProvider.h",
"$_include/Recorder.h",
"$_include/Recording.h",
"$_include/SkStuff.h",
@@ -72,6 +73,8 @@
"$_src/GraphicsPipelineDesc.h",
"$_src/GraphiteResourceKey.cpp",
"$_src/GraphiteResourceKey.h",
+ "$_src/ImageUtils.cpp",
+ "$_src/ImageUtils.h",
"$_src/Image_Graphite.cpp",
"$_src/Image_Graphite.h",
"$_src/Log.h",
diff --git a/include/gpu/graphite/Context.h b/include/gpu/graphite/Context.h
index 793d865..6a4caa0 100644
--- a/include/gpu/graphite/Context.h
+++ b/include/gpu/graphite/Context.h
@@ -12,6 +12,7 @@
#include "include/core/SkShader.h"
#include "include/gpu/graphite/ContextOptions.h"
#include "include/gpu/graphite/GraphiteTypes.h"
+#include "include/gpu/graphite/Recorder.h"
#include "include/private/SingleOwner.h"
#include <memory>
@@ -29,12 +30,11 @@
class Gpu;
struct MtlBackendContext;
class QueueManager;
-class Recorder;
class Recording;
class ResourceProvider;
class TextureInfo;
-class Context final {
+class SK_API Context final {
public:
Context(const Context&) = delete;
Context(Context&&) = delete;
@@ -49,7 +49,7 @@
BackendApi backend() const { return fBackend; }
- std::unique_ptr<Recorder> makeRecorder();
+ std::unique_ptr<Recorder> makeRecorder(const RecorderOptions& = {});
void insertRecording(const InsertRecordingInfo&);
void submit(SyncToCpu = SyncToCpu::kNo);
diff --git a/include/gpu/graphite/GraphiteTypes.h b/include/gpu/graphite/GraphiteTypes.h
index e0b7a6f..2bec5e2 100644
--- a/include/gpu/graphite/GraphiteTypes.h
+++ b/include/gpu/graphite/GraphiteTypes.h
@@ -53,7 +53,7 @@
/**
* Is the texture mipmapped or not
*/
-enum class Mipmapped: bool {
+enum class Mipmapped : bool {
kNo = false,
kYes = true,
};
diff --git a/include/gpu/graphite/ImageProvider.h b/include/gpu/graphite/ImageProvider.h
new file mode 100644
index 0000000..a679ff2
--- /dev/null
+++ b/include/gpu/graphite/ImageProvider.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef skgpu_graphite_ImageProvider_DEFINED
+#define skgpu_graphite_ImageProvider_DEFINED
+
+#include "include/core/SkRefCnt.h"
+
+class SkImage;
+
+namespace skgpu::graphite {
+
+enum class Mipmapped : bool;
+class Recorder;
+
+/*
+ * This class provides a centralized location for clients to perform any caching of images
+ * they desire. Whenever Graphite encounters an SkImage which is not Graphite-backed
+ * it will call ImageProvider::findOrCreate. The client's derived version of this class should
+ * return a Graphite-backed version of the provided SkImage that meets the mipmapping
+ * requirements. If the mipmapping requirements are not met by the returned image, Graphite
+ * will draw opaque red.
+ *
+ * Note: by default, Graphite will not perform any caching of images
+ *
+ * Threading concerns:
+ * If the same ImageProvider is given to multiple Recorders it is up to the
+ * client to handle any required thread synchronization. This is not limited to just
+ * restricting access to whatever map a derived class may have but extends to ensuring
+ * that an image created on one Recorder has had its creation work submitted before it
+ * is used by any work submitted by another Recorder. Please note, this requirement
+ * (re the submission of creation work and image usage on different threads) is common to all
+ * graphite SkImages and isn't unique to SkImages returned by the ImageProvider.
+ *
+ * TODO(b/240996632): add documentation re shutdown order.
+ * TODO(b/240997067): add unit tests
+ */
+class SK_API ImageProvider : public SkRefCnt {
+public:
+ // If the client's derived class already has a Graphite-backed image that has the same
+ // contents as 'image' and meets the 'mipmapped' requirements, then it can be returned.
+ // makeTextureImage can always be called to create an acceptable Graphite-backed image
+ // which could then be cached.
+ virtual sk_sp<SkImage> findOrCreate(Recorder* recorder,
+ const SkImage* image,
+ Mipmapped mipmapped) = 0;
+};
+
+} // namespace skgpu::graphite
+
+#endif // skgpu_graphite_ImageProvider_DEFINED
diff --git a/include/gpu/graphite/Recorder.h b/include/gpu/graphite/Recorder.h
index af1f79b..0378684 100644
--- a/include/gpu/graphite/Recorder.h
+++ b/include/gpu/graphite/Recorder.h
@@ -34,6 +34,7 @@
class DrawBufferManager;
class GlobalCache;
class Gpu;
+class ImageProvider;
class RecorderPriv;
class Recording;
class ResourceProvider;
@@ -45,7 +46,14 @@
using UniformDataCache = PipelineDataCache<SkUniformDataBlockPassThrough, SkUniformDataBlock>;
using TextureDataCache = PipelineDataCache<std::unique_ptr<SkTextureDataBlock>, SkTextureDataBlock>;
-class Recorder final {
+struct SK_API RecorderOptions final {
+ RecorderOptions() = default;
+ ~RecorderOptions();
+
+ sk_sp<ImageProvider> fImageProvider;
+};
+
+class SK_API Recorder final {
public:
Recorder(const Recorder&) = delete;
Recorder(Recorder&&) = delete;
@@ -56,6 +64,10 @@
std::unique_ptr<Recording> snap();
+ ImageProvider* clientImageProvider() const {
+ return fClientImageProvider.get();
+ }
+
// Provides access to functions that aren't part of the public API.
RecorderPriv priv();
const RecorderPriv priv() const; // NOLINT(readability-const-return-type)
@@ -69,7 +81,7 @@
friend class Device; // For registering and deregistering Devices;
friend class RecorderPriv; // for ctor and hidden methods
- Recorder(sk_sp<Gpu>, sk_sp<GlobalCache>);
+ Recorder(sk_sp<Gpu>, sk_sp<GlobalCache>, const RecorderOptions&);
SingleOwner* singleOwner() const { return &fSingleOwner; }
@@ -108,6 +120,7 @@
std::unique_ptr<TokenTracker> fTokenTracker;
std::unique_ptr<sktext::gpu::StrikeCache> fStrikeCache;
std::unique_ptr<sktext::gpu::TextBlobRedrawCoordinator> fTextBlobCache;
+ sk_sp<ImageProvider> fClientImageProvider;
// In debug builds we guard against improper thread handling
// This guard is passed to the ResourceCache.
diff --git a/infra/bots/gen_tasks_logic/dm_flags.go b/infra/bots/gen_tasks_logic/dm_flags.go
index 429018f..ae64e8f 100644
--- a/infra/bots/gen_tasks_logic/dm_flags.go
+++ b/infra/bots/gen_tasks_logic/dm_flags.go
@@ -323,6 +323,8 @@
skip(ALL, "gm", ALL, "localmatriximageshader")
skip(ALL, "gm", ALL, "savelayer_f16")
skip(ALL, "gm", ALL, "anisomips")
+ skip(ALL, "gm", ALL, "path_huge_aa")
+ skip(ALL, "gm", ALL, "hugebitmapshader")
// TODO: re-enable - currently fail bc surface to image conversion isn't implemented
skip(ALL, "gm", ALL, "xfermodes3")
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index d0911de..f7f6239 100755
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -50852,7 +50852,7 @@
"skia/infra/bots/run_recipe.py",
"${ISOLATED_OUTDIR}",
"test",
- "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
+ "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"RadeonHD8870M\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacBookPro11.5\\\",\\\"os\\\",\\\"Mac10.15.7\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"path_huge_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixScalarNoOpFolding_GPU\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac10.15.7-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Debug-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
"skia"
],
"dependencies": [
@@ -51784,7 +51784,7 @@
"skia/infra/bots/run_recipe.py",
"${ISOLATED_OUTDIR}",
"test",
- "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ASAN_Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ASAN_Graphite\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"yuv420_odd_dim\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-alpha-jpeg\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"jpg-color-cube\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkPDF_JpegIdentification\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ASAN_Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
+ "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ASAN_Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"ASAN_Graphite\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"path_huge_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"yuv420_odd_dim\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode-alpha-jpeg\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"encode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"jpg-color-cube\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"SkPDF_JpegIdentification\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Debug-All-ASAN_Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"false\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
"skia"
],
"dependencies": [
@@ -51990,7 +51990,7 @@
"skia/infra/bots/run_recipe.py",
"${ISOLATED_OUTDIR}",
"test",
- "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
+ "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"AppleM1\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacMini9.1\\\",\\\"os\\\",\\\"Mac11\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"path_huge_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"TransferPixelsFromTextureTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"--match\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac11-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
"skia"
],
"dependencies": [
@@ -52406,7 +52406,7 @@
"skia/infra/bots/run_recipe.py",
"${ISOLATED_OUTDIR}",
"test",
- "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
+ "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"IntelIrisPlus\\\",\\\"extra_config\\\",\\\"Graphite\\\",\\\"model\\\",\\\"MacBookPro16.2\\\",\\\"os\\\",\\\"Mac12\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--nogpu\\\",\\\"--config\\\",\\\"grmtl\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"skp\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"image_subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"blurrect_compare\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice_alpha\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximageshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"savelayer_f16\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"anisomips\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"path_huge_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"hugebitmapshader\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"xfermodes3\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"clipped_thinrect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"textblobgeometrychange\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surface_underdraw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_savelayer\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"simple_snap_image\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"copy_on_write_retain\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"surfacenew\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"srcmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lit_shader_linear_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"linear_gradient_rt\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_bw\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"persp_shaders_aa\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"ninepatch-stretch\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"localmatriximagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lcdblendmodes\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice2\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"lattice\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"fast_slow_blurimagefilter\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurrepeatmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imageblurclampmode\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"imagealphathreshold_surface\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"dstreadshuffle\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-imagerect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect-subset\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"drawbitmaprect\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"custommesh_cs\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"complexclip_blur_tiled\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"bleed_downscale\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_no_bleed\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_text_up\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_dog_down\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"async_rescale_and_read_rose\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgba32abf.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24prof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rgb24lprof.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"8bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"4bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"32bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"24bpp-pixeldata-cropped.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"frame_larger_than_image.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc2.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc3.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc4.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc5.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc6.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc7.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc8.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc9.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc10.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc11.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc12.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc13.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc14.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.png\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"incInterlaced.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc1.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"inc0.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"butterfly.gif\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"testimgari.jpg\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle8-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"rle4-height-negative.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced1.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced2.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\"interlaced3.png\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".arw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".cr2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".dng\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".nrw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".orf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".raf\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".rw2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".pef\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".srw\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ARW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".CR2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".DNG\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".NRW\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".ORF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RAF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".RW2\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".PEF\\\",\\\"_\\\",\\\"image\\\",\\\"_\\\",\\\".SRW\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdy_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicDFdx_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLIntrinsicFwidth_GPU\\\",\\\"--match\\\",\\\"~^GrMeshTest$\\\",\\\"~async_rescale_and_read\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Mac12-Clang-MacBookPro16.2-GPU-IntelIrisPlus-x86_64-Debug-All-Graphite\\\",\\\"gitHash\\\":\\\"<(REVISION)\\\",\\\"issue\\\":\\\"<(ISSUE)\\\",\\\"patch_storage\\\":\\\"<(PATCH_STORAGE)\\\",\\\"patchset\\\":\\\"<(PATCHSET)\\\",\\\"swarming_bot_id\\\":\\\"${SWARMING_BOT_ID}\\\",\\\"swarming_task_id\\\":\\\"${SWARMING_TASK_ID}\\\",\\\"task_id\\\":\\\"<(TASK_ID)\\\"}\",\"do_upload\":\"true\",\"gold_hashes_url\":\"https://gold.skia.org/json/v1/hashes\",\"gs_bucket\":\"skia-infra-gm\",\"images\":\"true\",\"patch_issue\":\"<(ISSUE_INT)\",\"patch_ref\":\"<(PATCH_REF)\",\"patch_repo\":\"<(PATCH_REPO)\",\"patch_set\":\"<(PATCHSET_INT)\",\"patch_storage\":\"<(PATCH_STORAGE)\",\"repository\":\"<(REPO)\",\"resources\":\"true\",\"revision\":\"<(REVISION)\",\"skps\":\"true\",\"svgs\":\"true\",\"swarm_out_dir\":\"test\",\"task_id\":\"<(TASK_ID)\"}",
"skia"
],
"dependencies": [
diff --git a/public.bzl b/public.bzl
index 71faa0a..ecfe5f9 100644
--- a/public.bzl
+++ b/public.bzl
@@ -186,6 +186,7 @@
"include/gpu/graphite/BackendTexture.h",
"include/gpu/graphite/Context.h",
"include/gpu/graphite/GraphiteTypes.h",
+ "include/gpu/graphite/ImageProvider.h",
"include/gpu/graphite/mtl/MtlBackendContext.h",
"include/gpu/graphite/mtl/MtlTypes.h",
"include/gpu/graphite/Recorder.h",
diff --git a/src/core/SkKeyHelpers.cpp b/src/core/SkKeyHelpers.cpp
index d4c6d86..10ce86a 100644
--- a/src/core/SkKeyHelpers.cpp
+++ b/src/core/SkKeyHelpers.cpp
@@ -410,8 +410,6 @@
if (builder->backend() == SkBackend::kGraphite) {
// TODO: allow through lazy proxies
if (gatherer && !imgData.fTextureProxy) {
- // We're dropping the ImageShader here. This could be an instance of trying to draw
- // a raster-backed image w/ a Graphite-backed canvas.
// TODO: At some point the pre-compile path should also be creating a texture
// proxy (i.e., we can remove the 'pipelineData' in the above test).
SolidColorShaderBlock::BeginBlock(keyContext, builder, gatherer, kErrorColor);
diff --git a/src/gpu/graphite/Context.cpp b/src/gpu/graphite/Context.cpp
index 33282e3..1c4d477 100644
--- a/src/gpu/graphite/Context.cpp
+++ b/src/gpu/graphite/Context.cpp
@@ -75,10 +75,10 @@
}
#endif
-std::unique_ptr<Recorder> Context::makeRecorder() {
+std::unique_ptr<Recorder> Context::makeRecorder(const RecorderOptions& options) {
ASSERT_SINGLE_OWNER
- return std::unique_ptr<Recorder>(new Recorder(fGpu, fGlobalCache));
+ return std::unique_ptr<Recorder>(new Recorder(fGpu, fGlobalCache, options));
}
void Context::insertRecording(const InsertRecordingInfo& info) {
diff --git a/src/gpu/graphite/Device.cpp b/src/gpu/graphite/Device.cpp
index c176b2d..11c59ea 100644
--- a/src/gpu/graphite/Device.cpp
+++ b/src/gpu/graphite/Device.cpp
@@ -18,6 +18,7 @@
#include "src/gpu/graphite/DrawList.h"
#include "src/gpu/graphite/DrawParams.h"
#include "src/gpu/graphite/Gpu.h"
+#include "src/gpu/graphite/ImageUtils.h"
#include "src/gpu/graphite/Log.h"
#include "src/gpu/graphite/RecorderPriv.h"
#include "src/gpu/graphite/Renderer.h"
@@ -545,10 +546,17 @@
}
}
+ auto [ imageToDraw, newSampling ] = skgpu::graphite::GetGraphiteBacked(this->recorder(),
+ image, sampling);
+ if (!imageToDraw) {
+ SKGPU_LOG_W("Device::drawImageRect: Creation of Graphite-backed image failed");
+ return;
+ }
+
// construct a shader, so we can call drawRect with the dst
- auto s = make_img_shader_for_paint(paint, sk_ref_sp(image), tmpSrc,
+ auto s = make_img_shader_for_paint(paint, std::move(imageToDraw), tmpSrc,
SkTileMode::kClamp, SkTileMode::kClamp,
- sampling, &matrix);
+ newSampling, &matrix);
if (!s) {
return;
}
diff --git a/src/gpu/graphite/ImageUtils.cpp b/src/gpu/graphite/ImageUtils.cpp
new file mode 100644
index 0000000..b9953d3
--- /dev/null
+++ b/src/gpu/graphite/ImageUtils.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "src/gpu/graphite/ImageUtils.h"
+
+#include "include/gpu/graphite/ImageProvider.h"
+#include "include/gpu/graphite/Recorder.h"
+#include "src/image/SkImage_Base.h"
+
+namespace {
+
+// We require that the user returns a Graphite-backed image that preserves the dimensions, channels
+// and alpha type of the original image. Additionally, it must satisfy the mipmap requirements.
+// The bit depth of the individual channels can change (e.g., 4444 -> 8888 is allowed).
+bool valid_client_provided_image(const SkImage* clientProvided,
+ const SkImage* original,
+ skgpu::graphite::Mipmapped mipmapped) {
+ if (!clientProvided ||
+ !as_IB(clientProvided)->isGraphiteBacked() ||
+ original->dimensions() != clientProvided->dimensions() ||
+ original->alphaType() != clientProvided->alphaType()) {
+ return false;
+ }
+
+ uint32_t origChannels = SkColorTypeChannelFlags(original->colorType());
+ uint32_t clientChannels = SkColorTypeChannelFlags(clientProvided->colorType());
+ if (origChannels != clientChannels) {
+ return false;
+ }
+
+ return mipmapped == skgpu::graphite::Mipmapped::kNo || clientProvided->hasMipmaps();
+}
+
+} // anonymous namespace
+
+namespace skgpu::graphite {
+
+std::pair<sk_sp<SkImage>, SkSamplingOptions> GetGraphiteBacked(Recorder* recorder,
+ const SkImage* imageIn,
+ SkSamplingOptions sampling) {
+ skgpu::graphite::Mipmapped mipmapped = (sampling.mipmap != SkMipmapMode::kNone)
+ ? skgpu::graphite::Mipmapped::kYes
+ : skgpu::graphite::Mipmapped::kNo;
+
+ sk_sp<SkImage> result;
+ if (as_IB(imageIn)->isGraphiteBacked()) {
+ result = sk_ref_sp(imageIn);
+
+ // If the preexisting Graphite-backed image doesn't have the required mipmaps we will drop
+ // down the sampling
+ if (mipmapped == skgpu::graphite::Mipmapped::kYes && !result->hasMipmaps()) {
+ mipmapped = skgpu::graphite::Mipmapped::kNo;
+ sampling = SkSamplingOptions(SkFilterMode::kLinear, SkMipmapMode::kNone);
+ }
+ } else {
+ auto clientImageProvider = recorder->clientImageProvider();
+ result = clientImageProvider->findOrCreate(recorder, imageIn, mipmapped);
+
+ if (!valid_client_provided_image(result.get(), imageIn, mipmapped)) {
+ // The client did not fulfill the ImageProvider contract so drop the image.
+ result = nullptr;
+ }
+ }
+
+ return { result, sampling };
+}
+
+} // namespace skgpu::graphite
diff --git a/src/gpu/graphite/ImageUtils.h b/src/gpu/graphite/ImageUtils.h
new file mode 100644
index 0000000..ffaeb1c
--- /dev/null
+++ b/src/gpu/graphite/ImageUtils.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef skgpu_graphite_ImageUtils_DEFINED
+#define skgpu_graphite_ImageUtils_DEFINED
+
+#include "include/core/SkRefCnt.h"
+
+class SkImage;
+struct SkSamplingOptions;
+
+namespace skgpu::graphite {
+
+class Recorder;
+
+std::pair<sk_sp<SkImage>, SkSamplingOptions> GetGraphiteBacked(Recorder*,
+ const SkImage*,
+ SkSamplingOptions);
+
+} // namespace skgpu::graphite
+
+#endif // skgpu_graphite_ImageUtils_DEFINED
diff --git a/src/gpu/graphite/Recorder.cpp b/src/gpu/graphite/Recorder.cpp
index 470c267..d915446 100644
--- a/src/gpu/graphite/Recorder.cpp
+++ b/src/gpu/graphite/Recorder.cpp
@@ -8,6 +8,8 @@
#include "include/gpu/graphite/Recorder.h"
#include "include/effects/SkRuntimeEffect.h"
+#include "include/gpu/graphite/GraphiteTypes.h"
+#include "include/gpu/graphite/ImageProvider.h"
#include "include/gpu/graphite/Recording.h"
#include "src/core/SkPipelineData.h"
#include "src/gpu/AtlasTypes.h"
@@ -23,6 +25,7 @@
#include "src/gpu/graphite/TaskGraph.h"
#include "src/gpu/graphite/UploadBufferManager.h"
#include "src/gpu/graphite/text/AtlasManager.h"
+#include "src/image/SkImage_Base.h"
#include "src/text/gpu/StrikeCache.h"
#include "src/text/gpu/TextBlobRedrawCoordinator.h"
@@ -30,6 +33,32 @@
#define ASSERT_SINGLE_OWNER SKGPU_ASSERT_SINGLE_OWNER(this->singleOwner())
+/*
+ * The default image provider doesn't perform any conversion so, by default, Graphite won't
+ * draw any non-Graphite-backed images.
+ */
+class DefaultImageProvider final : public ImageProvider {
+public:
+ static sk_sp<DefaultImageProvider> Make() {
+ return sk_ref_sp(new DefaultImageProvider);
+ }
+
+ sk_sp<SkImage> findOrCreate(Recorder* recorder,
+ const SkImage* image,
+ Mipmapped mipmapped) override {
+ SkASSERT(!as_IB(image)->isGraphiteBacked());
+
+ return nullptr;
+ }
+
+private:
+ DefaultImageProvider() {}
+};
+
+/**************************************************************************************************/
+RecorderOptions::~RecorderOptions() = default;
+
+/**************************************************************************************************/
static int32_t next_id() {
static std::atomic<int32_t> nextID{1};
int32_t id;
@@ -39,7 +68,9 @@
return id;
}
-Recorder::Recorder(sk_sp<Gpu> gpu, sk_sp<GlobalCache> globalCache)
+Recorder::Recorder(sk_sp<Gpu> gpu,
+ sk_sp<GlobalCache> globalCache,
+ const RecorderOptions& options)
: fGpu(std::move(gpu))
, fGraph(new TaskGraph)
, fUniformDataCache(new UniformDataCache)
@@ -50,6 +81,11 @@
, fStrikeCache(std::make_unique<sktext::gpu::StrikeCache>())
, fTextBlobCache(std::make_unique<sktext::gpu::TextBlobRedrawCoordinator>(fRecorderID)) {
+ fClientImageProvider = options.fImageProvider;
+ if (!fClientImageProvider) {
+ fClientImageProvider = DefaultImageProvider::Make();
+ }
+
fResourceProvider = fGpu->makeResourceProvider(std::move(globalCache), this->singleOwner());
fDrawBufferManager.reset(new DrawBufferManager(fResourceProvider.get(),
fGpu->caps()->requiredUniformBufferAlignment()));
diff --git a/src/gpu/graphite/TextureUtils.cpp b/src/gpu/graphite/TextureUtils.cpp
index 222da08..21dcd2b 100644
--- a/src/gpu/graphite/TextureUtils.cpp
+++ b/src/gpu/graphite/TextureUtils.cpp
@@ -65,13 +65,14 @@
}
// setup MipLevels
+ sk_sp<SkMipmap> mipmaps;
std::vector<MipLevel> texels;
if (mipLevelCount == 1) {
texels.resize(mipLevelCount);
texels[0].fPixels = bmpToUpload.getPixels();
texels[0].fRowBytes = bmpToUpload.rowBytes();
} else {
- sk_sp<SkMipmap> mipmaps(SkMipmap::Build(bmpToUpload.pixmap(), nullptr));
+ mipmaps.reset(SkMipmap::Build(bmpToUpload.pixmap(), nullptr));
if (!mipmaps) {
return {};
}
diff --git a/src/gpu/graphite/UploadTask.cpp b/src/gpu/graphite/UploadTask.cpp
index 280db7a..700575f 100644
--- a/src/gpu/graphite/UploadTask.cpp
+++ b/src/gpu/graphite/UploadTask.cpp
@@ -45,7 +45,6 @@
size_t trimmedSize = levelDimensions.area() * bytesPerPixel;
combinedBufferSize = SkAlignTo(combinedBufferSize, minTransferBufferAlignment);
- SkASSERT((0 == combinedBufferSize % 4) && (0 == combinedBufferSize % bytesPerPixel));
individualMipOffsets->push_back(combinedBufferSize);
combinedBufferSize += trimmedSize;
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp
index 2c94098..e83b529 100755
--- a/src/shaders/SkImageShader.cpp
+++ b/src/shaders/SkImageShader.cpp
@@ -26,7 +26,7 @@
#ifdef SK_ENABLE_SKSL
#ifdef SK_GRAPHITE_ENABLED
-#include "src/gpu/graphite/Image_Graphite.h"
+#include "src/gpu/graphite/ImageUtils.h"
#endif
#include "src/core/SkKeyContext.h"
@@ -386,12 +386,17 @@
this->getLocalMatrix());
#ifdef SK_GRAPHITE_ENABLED
- if (as_IB(fImage)->isGraphiteBacked()) {
- skgpu::graphite::Image* grImage = static_cast<skgpu::graphite::Image*>(fImage.get());
+ auto [ imageToDraw, newSampling ] = skgpu::graphite::GetGraphiteBacked(keyContext.recorder(),
+ fImage.get(),
+ fSampling);
- auto mipmapped = (fSampling.mipmap != SkMipmapMode::kNone) ?
- skgpu::graphite::Mipmapped::kYes : skgpu::graphite::Mipmapped::kNo;
- auto[view, ct] = grImage->asView(keyContext.recorder(), mipmapped);
+ if (imageToDraw) {
+ imgData.fSampling = newSampling;
+ skgpu::graphite::Mipmapped mipmapped = (newSampling.mipmap != SkMipmapMode::kNone)
+ ? skgpu::graphite::Mipmapped::kYes
+ : skgpu::graphite::Mipmapped::kNo;
+
+ auto [view, _] = as_IB(imageToDraw)->asView(keyContext.recorder(), mipmapped);
imgData.fTextureProxy = view.refProxy();
}
#endif