diff --git a/cobalt/renderer/rasterizer/skia/skia/skia_sources.gni b/cobalt/renderer/rasterizer/skia/skia/skia_sources.gni index e7c36c65adf0..6c5bfaab729f 100644 --- a/cobalt/renderer/rasterizer/skia/skia/skia_sources.gni +++ b/cobalt/renderer/rasterizer/skia/skia/skia_sources.gni @@ -116,6 +116,7 @@ sksl_sources = [ "//third_party/skia/include/sksl/DSLSymbols.h", "//third_party/skia/include/sksl/DSLType.h", "//third_party/skia/include/sksl/DSLVar.h", + "//third_party/skia/include/sksl/SkSLDebugTrace.h", "//third_party/skia/src/sksl/SkSLAnalysis.cpp", "//third_party/skia/src/sksl/SkSLAnalysis.h", "//third_party/skia/src/sksl/SkSLBuiltinTypes.cpp", @@ -146,6 +147,8 @@ sksl_sources = [ "//third_party/skia/src/sksl/SkSLRehydrator.cpp", "//third_party/skia/src/sksl/SkSLRehydrator.h", "//third_party/skia/src/sksl/SkSLSampleUsage.cpp", + "//third_party/skia/src/sksl/SkSLSharedCompiler.cpp", + "//third_party/skia/src/sksl/SkSLSharedCompiler.h", "//third_party/skia/src/sksl/SkSLString.cpp", "//third_party/skia/src/sksl/SkSLThreadContext.cpp", "//third_party/skia/src/sksl/SkSLThreadContext.h", @@ -170,6 +173,8 @@ sksl_sources = [ "//third_party/skia/src/sksl/codegen/SkSLSPIRVtoHLSL.h", "//third_party/skia/src/sksl/codegen/SkSLVMCodeGenerator.cpp", "//third_party/skia/src/sksl/codegen/SkSLVMCodeGenerator.h", + "//third_party/skia/src/sksl/codegen/SkVMDebugTrace.cpp", + "//third_party/skia/src/sksl/codegen/SkVMDebugTrace.h", "//third_party/skia/src/sksl/dsl/DSLBlock.cpp", "//third_party/skia/src/sksl/dsl/DSLCase.cpp", "//third_party/skia/src/sksl/dsl/DSLCore.cpp", @@ -212,6 +217,7 @@ sksl_sources = [ "//third_party/skia/src/sksl/ir/SkSLConstructorStruct.h", "//third_party/skia/src/sksl/ir/SkSLDoStatement.cpp", "//third_party/skia/src/sksl/ir/SkSLDoStatement.h", + "//third_party/skia/src/sksl/ir/SkSLExpression.cpp", "//third_party/skia/src/sksl/ir/SkSLExpressionStatement.cpp", "//third_party/skia/src/sksl/ir/SkSLExpressionStatement.h", "//third_party/skia/src/sksl/ir/SkSLFieldAccess.cpp", diff --git a/third_party/skia/.bazelrc b/third_party/skia/.bazelrc index d8c8d93dd896..5c0525132077 100644 --- a/third_party/skia/.bazelrc +++ b/third_party/skia/.bazelrc @@ -1,6 +1,23 @@ build:clang --crosstool_top=//toolchain:clang_suite build:clang --compiler=clang -# Use the default Bazel C++ toolchain to build the tools used during the -# build. -build:clang --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ No newline at end of file +# Use the default Bazel C++ toolchain to build the tools used during the build. +build:clang --host_crosstool_top=@bazel_tools//tools/cpp:toolchain + +# ============================================================================= +# Alias to build configurations below. This makes configuring things from +# the command line easier. +build --flag_alias=fontmgr_factory=//bazel/common_config_settings:fontmgr_factory +build --flag_alias=gpu_backend=//bazel/common_config_settings:gpu_backend +build --flag_alias=include_decoder=//bazel/common_config_settings:include_decoder +build --flag_alias=include_encoder=//bazel/common_config_settings:include_encoder +build --flag_alias=include_fontmgr=//bazel/common_config_settings:include_fontmgr +build --flag_alias=shaper_backend=//bazel/common_config_settings:shaper_backend +build --flag_alias=with_gl_standard=//bazel/common_config_settings:with_gl_standard + +build --flag_alias=with_icu=//bazel/common_config_settings:use_icu +build --flag_alias=with_no_icu=no//bazel/common_config_settings:use_icu + +# CanvasKit flags +build --flag_alias=ck_enable_fonts=//modules/canvaskit:enable_fonts +build --flag_alias=ck_disable_fonts=no//modules/canvaskit:enable_fonts \ No newline at end of file diff --git a/third_party/skia/.bazelversion b/third_party/skia/.bazelversion new file mode 100644 index 000000000000..5dd683793257 --- /dev/null +++ b/third_party/skia/.bazelversion @@ -0,0 +1 @@ +6.0.0-pre.20211025.1 \ No newline at end of file diff --git a/third_party/skia/AUTHORS b/third_party/skia/AUTHORS index ff8ac810a358..1511502e97d7 100755 --- a/third_party/skia/AUTHORS +++ b/third_party/skia/AUTHORS @@ -38,6 +38,7 @@ Marcin Kazmierczak Matthew Leibowitz Microsoft <*@microsoft.com> MIPS <*@imgtec.com> +Nils André-Chang Ning Liu Noah Lavine NVIDIA <*@nvidia.com> @@ -45,6 +46,7 @@ Opera Software ASA <*@opera.com> Pavel Krajcevski Petar Kirov Raul Tambre +Safa Sofuoglu Samsung <*@samsung.com> Samsung Open Source Group <*@osg.samsung.com> Sergey Melnikov diff --git a/third_party/skia/BUILD.bazel b/third_party/skia/BUILD.bazel index 6f9158d08cd4..0a71c1d3e6bf 100644 --- a/third_party/skia/BUILD.bazel +++ b/third_party/skia/BUILD.bazel @@ -1,3 +1,10 @@ +# https://github.com/bazelbuild/bazel-skylib +load("@bazel_skylib//lib:selects.bzl", "selects") +load("//bazel:macros.bzl", "select_multi") +load("@bazel_gazelle//:def.bzl", "gazelle") + +package(default_visibility = ["//:__subpackages__"]) + cc_test( name = "bazel_test", size = "small", @@ -12,3 +19,133 @@ cc_test( "//third_party:musl_compat", ], ) + +selects.config_setting_group( + name = "needs_jpeg", + match_any = [ + "//bazel/common_config_settings:raw_decode_codec", + "//bazel/common_config_settings:jpeg_decode_codec", + "//bazel/common_config_settings:jpeg_encode_codec", + ], +) + +selects.config_setting_group( + name = "needs_png", + match_any = [ + "//bazel/common_config_settings:png_decode_codec", + "//bazel/common_config_settings:png_encode_codec", + ], +) + +selects.config_setting_group( + name = "needs_webp", + match_any = [ + "//bazel/common_config_settings:webp_decode_codec", + "//bazel/common_config_settings:webp_encode_codec", + ], +) + +selects.config_setting_group( + name = "any_freetype_fontmgr", + match_any = [ + "//bazel/common_config_settings:custom_directory_fontmgr", + "//bazel/common_config_settings:custom_embedded_fontmgr", + "//bazel/common_config_settings:custom_empty_fontmgr", + ], +) + +CORE_DEPS = [ + "//src/android:srcs", + "//src/codec:srcs", + "//src/core:srcs", + "//src/image:srcs", + "//src/images:srcs", + "//src/effects:srcs", + "//src/opts:srcs", + "//src/pathops:srcs", + "//src/ports:srcs", + "//src/sfnt:srcs", + "//src/shaders:srcs", + "//src/utils:srcs", + "//third_party:skcms", +] + selects.with_or({ + # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or + ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [ + "//src/gpu:srcs", + "//src/sksl:srcs", + # TODO(kjlubick) should mock be test only? + "//src/gpu:mock_srcs", + ], + "//conditions:default": [], +}) + select_multi( + { + "//bazel/common_config_settings:gif_decode_codec": ["//third_party:wuffs"], + ":needs_png": ["//third_party:libpng"], + "//bazel/common_config_settings:raw_decode_codec": [ + "//third_party:piex", + "//third_party:dng_sdk", + ], + ":needs_webp": ["//third_party:libwebp"], + ":needs_jpeg": ["//third_party:libjpeg-turbo"], + }, + default = [], +) + select({ + ":any_freetype_fontmgr": [ + "//third_party:freetype2", + ], + "//conditions:default": [], +}) + +cc_library( + name = "skia_core", + textual_hdrs = ["//src/sksl:txts"], + deps = CORE_DEPS, +) + +cc_library( + name = "hash_and_encode", + testonly = True, + srcs = [ + "//tools:cmdline", + "//tools:hash_and_encode", + ], + deps = [ + ":skia-core", + "//third_party:libpng", + ], +) + +cc_library( + name = "gms", + testonly = True, + srcs = [ + "//gm:gms", + "//gm:srcs", + "//tools:srcs", + ], + hdrs = [ + "//gm:hdrs", + ], + textual_hdrs = ["//tools:txts"], + deps = [":skia-core"], +) + +cc_library( + name = "tests", + testonly = True, + srcs = [ + "//tests:srcs", + "//tools:srcs", + ], + hdrs = [ + "//tests:hdrs", + ], + local_defines = [ + "GR_TEST_UTILS", + ], + textual_hdrs = ["//tools:txts"], + deps = [":skia-core"], +) + +# gazelle:prefix go.skia.org/skia +gazelle(name = "gazelle") diff --git a/third_party/skia/BUILD.gn b/third_party/skia/BUILD.gn index 3f4bb12f26a7..22f94f022728 100644 --- a/third_party/skia/BUILD.gn +++ b/third_party/skia/BUILD.gn @@ -14,7 +14,7 @@ if (is_fuchsia) { } if (skia_use_dawn) { - import("third_party/externals/dawn/scripts/dawn_features.gni") + import("//third_party/externals/dawn/scripts/dawn_features.gni") } if (defined(skia_settings)) { @@ -57,9 +57,6 @@ config("skia_public") { "SK_USE_WEBGL", ] } - if (skia_enable_skgpu_v2) { - defines += [ "SK_GPU_V2=1" ] - } if (!skia_enable_skgpu_v1) { defines += [ "SK_GPU_V1=0" ] } @@ -630,9 +627,11 @@ if (skia_compile_sksl_tests) { defines = [ "SKSL_STANDALONE", "SK_DISABLE_TRACING", + "SK_ENABLE_SPIRV_CROSS", "SK_ENABLE_SPIRV_VALIDATION", ] sources = [ + "src/core/SkArenaAlloc.cpp", "src/core/SkBlockAllocator.cpp", "src/core/SkCpu.cpp", "src/core/SkData.cpp", @@ -653,6 +652,9 @@ if (skia_compile_sksl_tests) { "src/ports/SkMemory_malloc.cpp", "src/ports/SkOSFile_stdio.cpp", "src/sksl/SkSLMain.cpp", + "src/utils/SkJSON.cpp", + "src/utils/SkJSONWriter.cpp", + "src/utils/SkParse.cpp", "src/utils/SkUTF.cpp", ] if (is_win) { @@ -667,6 +669,7 @@ if (skia_compile_sksl_tests) { ":run_sksllex", "//third_party/externals/spirv-tools:spvtools", "//third_party/externals/spirv-tools:spvtools_val", + "//third_party/spirv-cross:spirv_cross", ] } @@ -853,9 +856,6 @@ optional("gpu") { public_deps = [] sources = skia_gpu_sources + skia_sksl_gpu_sources - if (skia_enable_skgpu_v2) { - sources += skia_skgpu_v2_sources - } if (!skia_enable_skgpu_v1) { sources -= skia_skgpu_v1_sources } @@ -936,8 +936,11 @@ optional("gpu") { deps += [ "//third_party/externals/dawn/src/dawn:dawn_proc", "//third_party/externals/dawn/src/dawn:dawncpp", - "//third_party/externals/dawn/src/dawn_native", ] + if (dawn_enable_d3d12 || dawn_enable_desktop_gl || dawn_enable_metal || + dawn_enable_opengles || dawn_enable_vulkan) { + deps += [ "//third_party/externals/dawn/src/dawn_native" ] + } if (dawn_enable_d3d12) { libs += [ "d3d12.lib", @@ -950,7 +953,10 @@ optional("gpu") { } if (skia_use_direct3d) { - public_defines += [ "SK_DIRECT3D" ] + public_defines += [ + "SK_DIRECT3D", + "SK_ENABLE_SPIRV_CROSS", + ] deps += [ "//third_party/d3d12allocator", "//third_party/spirv-cross:spirv_cross", @@ -1010,6 +1016,12 @@ optional("heif") { enabled = skia_use_libheif public_defines = [ "SK_HAS_HEIF_LIBRARY" ] + # This HEIF decoding functionality is a part of the Android Framework. + # https://android.googlesource.com/platform/frameworks/av/+/master/media/libheif/include/HeifDecoderAPI.h + # There isn't a way to compile that library outside of it, so we just link against + # the library. This feature is not supported on other platforms (and we haven't + # yet tried something like https://github.com/strukturag/libheif/tree/master/libheif). + # The dependency for Android is set in gn_to_bp.py. deps = [] sources = [ "src/codec/SkHeifCodec.cpp" ] @@ -1637,6 +1649,7 @@ if (skia_enable_tools) { } skia_source_set(target_name) { forward_variables_from(invoker, "*", []) + check_includes = false public_configs = [ ":" + target_name + "_config", ":skia_private", @@ -2032,6 +2045,9 @@ if (skia_enable_tools) { } if (skia_enable_graphite) { sources += graphite_tests_sources + if (skia_use_metal) { + sources += graphite_metal_tests_sources + } } if (!skia_enable_skgpu_v1) { sources -= skgpu_v1_tests_sources diff --git a/third_party/skia/DEPS b/third_party/skia/DEPS index 9bd56d5f866a..cf65f240c176 100644 --- a/third_party/skia/DEPS +++ b/third_party/skia/DEPS @@ -6,28 +6,28 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling different # dependencies without interference from each other. - 'sk_tool_revision': 'git_revision:8cba87bd19247084af412ca52dec7ab7ab33c923', + 'sk_tool_revision': 'git_revision:47e2b5077062ef0ae7a32239ca7cea1abf8cc1a2', } deps = { - "buildtools" : "https://chromium.googlesource.com/chromium/buildtools.git@505de88083136eefd056e5ee4ca0f01fe9b33de8", - "third_party/externals/angle2" : "https://chromium.googlesource.com/angle/angle.git@8c9b8f03e0f3bfb58f2023231337db6d03b6fc84", + "buildtools" : "https://chromium.googlesource.com/chromium/src/buildtools.git@b138e6ce86ae843c42a1a08f37903207bebcca75", + "third_party/externals/angle2" : "https://chromium.googlesource.com/angle/angle.git@0e291f60ccbfd1deddad6f98159417c7d7f524b3", "third_party/externals/brotli" : "https://skia.googlesource.com/external/github.com/google/brotli.git@e61745a6b7add50d380cfd7d3883dd6c62fc2c71", "third_party/externals/d3d12allocator" : "https://skia.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator.git@169895d529dfce00390a20e69c2f516066fe7a3b", # Dawn requires jinja2 and markupsafe for the code generator, tint for SPIRV compilation, and abseil for string formatting. # When the Dawn revision is updated these should be updated from the Dawn DEPS as well. - "third_party/externals/dawn" : "https://dawn.googlesource.com/dawn.git@26db646d8ff86cd75977688bb0e21c67f9e89680", + "third_party/externals/dawn" : "https://dawn.googlesource.com/dawn.git@264f239259c558ff30e2992a6875a7b7c154bf48", "third_party/externals/jinja2" : "https://chromium.googlesource.com/chromium/src/third_party/jinja2@ee69aa00ee8536f61db6a451f3858745cf587de6", "third_party/externals/markupsafe" : "https://chromium.googlesource.com/chromium/src/third_party/markupsafe@0944e71f4b2cb9a871bcbe353f95e889b64a611a", - "third_party/externals/tint" : "https://dawn.googlesource.com/tint@e0e45a4d473a256aadc8e8765ce71a536c22b634", + "third_party/externals/tint" : "https://dawn.googlesource.com/tint@a8c202b8e779b7ddc7edf8bf2fac9534d521fa64", "third_party/externals/abseil-cpp" : "https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp@789af048b388657987c59d4da406859034fe310f", "third_party/externals/dng_sdk" : "https://android.googlesource.com/platform/external/dng_sdk.git@c8d0c9b1d16bfda56f15165d39e0ffa360a11123", "third_party/externals/egl-registry" : "https://skia.googlesource.com/external/github.com/KhronosGroup/EGL-Registry@a0bca08de07c7d7651047bedc0b653cfaaa4f2ae", "third_party/externals/expat" : "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git@a28238bdeebc087071777001245df1876a11f5ee", - "third_party/externals/freetype" : "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@e6e6cbf1648d4a776da0857921872f2fbc853205", - "third_party/externals/harfbuzz" : "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git@a52c6df38a38c4e36ff991dfb4b7d92e48a44553", + "third_party/externals/freetype" : "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@cff026d41599945498044d2f4dcc0e610ffb6929", + "third_party/externals/harfbuzz" : "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git@3160789701463bcd822c26010da4de33c92c85d9", "third_party/externals/icu" : "https://chromium.googlesource.com/chromium/deps/icu.git@a0718d4f121727e30b8d52c7a189ebf5ab52421f", - "third_party/externals/imgui" : "https://skia.googlesource.com/external/github.com/ocornut/imgui.git@9418dcb69355558f70de260483424412c5ca2fce", + "third_party/externals/imgui" : "https://skia.googlesource.com/external/github.com/ocornut/imgui.git@55d35d8387c15bf0cfd71861df67af8cfbda7456", "third_party/externals/libgifcodec" : "https://skia.googlesource.com/libgifcodec@fd59fa92a0c86788dcdd84d091e1ce81eda06a77", "third_party/externals/libjpeg-turbo" : "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@24e310554f07c0fdb8ee52e3e708e4f3e9eb6e20", "third_party/externals/libpng" : "https://skia.googlesource.com/third_party/libpng.git@386707c6d19b974ca2e3db7f5c61873813c6fe44", @@ -38,15 +38,15 @@ deps = { "third_party/externals/piex" : "https://android.googlesource.com/platform/external/piex.git@bb217acdca1cc0c16b704669dd6f91a1b509c406", "third_party/externals/sfntly" : "https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git@b55ff303ea2f9e26702b514cf6a3196a2e3e2974", "third_party/externals/spirv-cross" : "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross@0e2880ab990e79ce6cc8c79c219feda42d98b1e8", - "third_party/externals/spirv-headers" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git@cf653e4ca4858583802b0d1656bc934edff6bd7f", - "third_party/externals/spirv-tools" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@11cd875ed88484f93943071083b4821b4c3d2193", - "third_party/externals/swiftshader" : "https://swiftshader.googlesource.com/SwiftShader@e733a26e2ba04c8eb37aece51a81600a99e01612", + "third_party/externals/spirv-headers" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers.git@814e728b30ddd0f4509233099a3ad96fd4318c07", + "third_party/externals/spirv-tools" : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@4b092d2ab81854e61632bdd1e658907f0071c37e", + "third_party/externals/swiftshader" : "https://swiftshader.googlesource.com/SwiftShader@a4232c15e287a38b93d2a55bd1d7894cb4effac3", #"third_party/externals/v8" : "https://chromium.googlesource.com/v8/v8.git@5f1ae66d5634e43563b2d25ea652dfb94c31a3b4", "third_party/externals/wuffs" : "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git@600cd96cf47788ee3a74b40a6028b035c9fd6a61", "third_party/externals/zlib" : "https://chromium.googlesource.com/chromium/src/third_party/zlib@c876c8f87101c5a75f6014b0f832499afeb65b73", "../src": { - "url": "https://chromium.googlesource.com/chromium/src.git@f69977b0a3604f0fde84d1b6e957c1882837bfcf", + "url": "https://chromium.googlesource.com/chromium/src.git@4fa82a541d87a2da48b74c2e33f5d97b0a8c1783", "condition": "checkout_chromium", }, diff --git a/third_party/skia/PRESUBMIT.py b/third_party/skia/PRESUBMIT.py index a227f8d7ec56..b6a53c1f8f40 100644 --- a/third_party/skia/PRESUBMIT.py +++ b/third_party/skia/PRESUBMIT.py @@ -193,10 +193,7 @@ def _CheckGitConflictMarkers(input_api, output_api): def _CheckIncludesFormatted(input_api, output_api): """Make sure #includes in files we're changing have been formatted.""" - # NOTE: os.getcwd() != input_api.change.RepositoryRoot(), so the file path - # of AffectedFiles() needs to be converted. - files = [os.path.relpath(f.AbsoluteLocalPath()) - for f in input_api.AffectedFiles() if f.Action() != 'D'] + files = [str(f) for f in input_api.AffectedFiles() if f.Action() != 'D'] cmd = ['python', 'tools/rewrite_includes.py', '--dry-run'] + files diff --git a/third_party/skia/RELEASE_NOTES.txt b/third_party/skia/RELEASE_NOTES.txt index 149e88433949..b463afc653bc 100644 --- a/third_party/skia/RELEASE_NOTES.txt +++ b/third_party/skia/RELEASE_NOTES.txt @@ -2,6 +2,38 @@ Skia Graphics Release Notes This file includes a list of high level updates for each milestone release. +Milestone 98 +------------ + * The following functions and methods are not defined in SkSurface when SK_SUPPORT_GPU is 0: + MakeFromBackendTexture, MakeFromBackendRenderTarget, MakeRenderTarget, + getBackendTexture, getBackendRenderTarget, replaceBackendTexture. flush() with parameters + was removed as well. These were all no-ops anyway when just the CPU backend was compiled in + (noting that flush() and flushAndSubmit() are still no-ops on the CPU backend). + * GrBackendSemaphore only includes methods that match the GPU backend that Skia was compiled for. + For example, initVulkan and vkSemaphore are not defined unless the Vulkan backend is compiled + into Skia. + * Surfaces and images are now limited to just under 2GB of total size. Previously, larger images + could be created, but the CPU backend would fail to index them correctly. + * SkCanvas::drawVertices and SkCanvas::drawPatch variants that did not take SkBlendMode are + removed. + * SkImageFilters::RuntimeShader is a new public API that enables adding RuntimeShaderEffects into + image filter graph. + * SkImage::makeRawShader is a new public API that creates "raw" image shaders. makeRawShader + functions like SkImage::makeShader, but for images that contain non-color data. This includes + images encoding things like normals, material properties (eg roughness), heightmaps, or any + other purely mathematical data that happens to be stored in an image. These types of images are + useful with some programmable shaders (ie SkRuntimeEffect). + Raw image shaders work like regular image shaders (including filtering and tiling), with a few + major differences: + - No color space transformation is ever applied (the color space of the image is ignored). + - Images with an alpha type of kUnpremul are not automatically premultiplied. + - Bicubic filtering is not supported. If SkSamplingOptions::useCubic is true, these factories + will return nullptr. + * Removed SkCanvas::markCTM and SkCanvas::findMarkedCTM. These were created to be used with other + features that have since been deleted, so they served no purpose. + +* * * + Milestone 97 ------------ * Added basic support for vulkan DRM modifiers. All of these are treated as read only textures diff --git a/third_party/skia/WORKSPACE.bazel b/third_party/skia/WORKSPACE.bazel index a25979d84f2b..054c487a4925 100644 --- a/third_party/skia/WORKSPACE.bazel +++ b/third_party/skia/WORKSPACE.bazel @@ -1,7 +1,25 @@ workspace(name = "skia") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("//toolchain:build_toolchain.bzl", "build_cpp_toolchain") +# See https://github.com/emscripten-core/emsdk/tree/85d27a4a2a60d591613a305b14ae438c2bb3ce11/bazel#setup-instructions +http_archive( + name = "emsdk", + sha256 = "457fa96d4d60867743df7f7e241c9852a3eb7fdbf3091eac7a5712ddc0a5221d", + strip_prefix = "emsdk-2.0.32/bazel", + url = "https://github.com/emscripten-core/emsdk/archive/refs/tags/2.0.32.tar.gz", +) + +load("@emsdk//:deps.bzl", emsdk_deps = "deps") + +emsdk_deps() + +load("@emsdk//:emscripten_deps.bzl", emsdk_emscripten_deps = "emscripten_deps") + +# Use older version to work around https://github.com/emscripten-core/emscripten/issues/15528 +emsdk_emscripten_deps(emscripten_version = "2.0.13") + build_cpp_toolchain( # Meant to run on amd64 linux and compile for amd64 linux using musl as the c library. name = "clang_linux_amd64_musl", @@ -13,3 +31,56 @@ build_cpp_toolchain( musl_dev_sha256 = "b017792ad6ba3650b4889238c73cd19c1d6b0e39ca8319cdd3ad9e16374e614e", musl_dev_url = "http://ftp.debian.org/debian/pool/main/m/musl/musl-dev_1.2.2-1_amd64.deb", ) + +http_archive( + name = "bazel_skylib", + sha256 = "c6966ec828da198c5d9adbaa94c05e3a1c7f21bd012a0b29ba8ddbccb2c93b0d", + urls = [ + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.1.1/bazel-skylib-1.1.1.tar.gz", + ], +) + +load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") + +bazel_skylib_workspace() + +http_archive( + name = "rules_python", + sha256 = "cd6730ed53a002c56ce4e2f396ba3b3be262fd7cb68339f0377a45e8227fe332", + url = "https://github.com/bazelbuild/rules_python/releases/download/0.5.0/rules_python-0.5.0.tar.gz", +) + +####################################################################################### +# Gazelle +####################################################################################### +http_archive( + name = "io_bazel_rules_go", + sha256 = "2b1641428dff9018f9e85c0384f03ec6c10660d935b750e3fa1492a281a53b0f", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.29.0/rules_go-v0.29.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.29.0/rules_go-v0.29.0.zip", + ], +) + +http_archive( + name = "bazel_gazelle", + sha256 = "de69a09dc70417580aabf20a28619bb3ef60d038470c7cf8442fafcf627c21cb", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.24.0/bazel-gazelle-v0.24.0.tar.gz", + ], +) + +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") +load("//:go_repositories.bzl", "go_repositories") + +# gazelle:repository_macro go_repositories.bzl%go_repositories +go_repositories() + +go_rules_dependencies() + +go_register_toolchains(version = "1.17.2") + +gazelle_dependencies(go_repository_default_config = "//:WORKSPACE.bazel") diff --git a/third_party/skia/bazel/BUILD.bazel b/third_party/skia/bazel/BUILD.bazel index e484f8b84cd0..1a3e5b347c46 100644 --- a/third_party/skia/bazel/BUILD.bazel +++ b/third_party/skia/bazel/BUILD.bazel @@ -1 +1,84 @@ -# Intentionally left blank +load("//bazel:macros.bzl", "select_multi") + +GENERAL_DEFINES = ["SK_HAS_ANDROID_CODEC"] + select({ + "//bazel/common_config_settings:debug_build": [ + "SK_DEBUG", + ], + "//bazel/common_config_settings:release_build": [ + "SK_RELEASE", + ], + "//conditions:default": [ + "SK_RELEASE", + ], +}) + +GPU_DEFINES = select({ + "//bazel/common_config_settings:gl_backend": [ + "SK_GL", + "SK_SUPPORT_GPU=1", + ], + "//bazel/common_config_settings:vulkan_backend": [ + "SK_VULKAN", + "SK_SUPPORT_GPU=1", + ], + "//conditions:default": [ + "SK_SUPPORT_GPU=0", + ], +}) + select({ + "//bazel/common_config_settings:gl_standard": [ + "SK_ASSUME_GL=1", + ], + "//bazel/common_config_settings:gles_standard": [ + "SK_ASSUME_GL_ES=1", + ], + "//bazel/common_config_settings:webgl_standard": [ + "SK_ASSUME_WEBGL=1", + "SK_USE_WEBGL", + ], + "//conditions:default": [], +}) + +CODEC_DEFINES = select_multi( + { + "//bazel/common_config_settings:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"], + "//bazel/common_config_settings:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"], + "//bazel/common_config_settings:jpeg_encode_codec": ["SK_ENCODE_JPEG"], + "//bazel/common_config_settings:png_decode_codec": ["SK_CODEC_DECODES_PNG"], + "//bazel/common_config_settings:png_encode_codec": ["SK_ENCODE_PNG"], + "//bazel/common_config_settings:raw_decode_codec": [ + "SK_CODEC_DECODES_RAW", + "SK_CODEC_DECODES_JPEG", + ], + "//bazel/common_config_settings:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"], + }, + default = [], +) + +PLATFORM_DEFINES = select({ + "//bazel/common_config_settings:cpu_wasm": [ + # working around https://github.com/emscripten-core/emscripten/issues/10072 + "SK_FORCE_8_BYTE_ALIGNMENT", + "SK_DISABLE_LEGACY_SHADERCONTEXT", + ], + "//conditions:default": [], +}) + +SHAPER_DEFINES = select_multi( + { + "//bazel/common_config_settings:coretext_shaper": ["SK_SHAPER_CORETEXT_AVAILABLE"], + "//bazel/common_config_settings:harfbuzz_shaper": ["SK_SHAPER_HARFBUZZ_AVAILABLE"], + }, + default = [], +) + +UNICODE_DEFINES = select({ + "//bazel/common_config_settings:use_icu_true": ["SK_UNICODE_AVAILABLE"], + "//conditions:default": [], +}) + +cc_library( + name = "defines_from_flags", + defines = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + PLATFORM_DEFINES + + SHAPER_DEFINES + UNICODE_DEFINES, + visibility = ["//:__subpackages__"], +) diff --git a/third_party/skia/bazel/Makefile b/third_party/skia/bazel/Makefile new file mode 100644 index 000000000000..9b0a4c6909f5 --- /dev/null +++ b/third_party/skia/bazel/Makefile @@ -0,0 +1,10 @@ +generate: + bazel build @org_skia_go_infra//bazel/gazelle:gazelle_cpp + cd .. && bazel-bin/external/org_skia_go_infra/bazel/gazelle/gazelle_cpp_/gazelle_cpp update \ + --third_party_file_map="third_party/file_map_for_bazel.json" \ + include src tools \ + modules/skshaper modules/svg modules/skresources modules/skparagraph modules/skunicode \ + experimental/bazel_test + +gazelle_update_repo: + cd .. && bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=go_repositories.bzl%go_repositories diff --git a/third_party/skia/bazel/cc_binary_with_flags.bzl b/third_party/skia/bazel/cc_binary_with_flags.bzl new file mode 100644 index 000000000000..96253c755448 --- /dev/null +++ b/third_party/skia/bazel/cc_binary_with_flags.bzl @@ -0,0 +1,139 @@ +""" +This file contains a way to set flags from BUILD.bazel instead of requiring users to set them from +the CLI. + +It is based off of https://github.com/bazelbuild/examples/tree/main/rules/starlark_configurations/cc_binary_selectable_copts + +""" + +_bool_flags = [ + "//bazel/common_config_settings:use_icu", +] + +_string_flags = [ + "//bazel/common_config_settings:fontmgr_factory", + "//bazel/common_config_settings:with_gl_standard", +] + +_string_list_flags = [ + "//bazel/common_config_settings:gpu_backend", + "//bazel/common_config_settings:include_decoder", + "//bazel/common_config_settings:include_encoder", + "//bazel/common_config_settings:include_fontmgr", + "//bazel/common_config_settings:shaper_backend", +] + +# These are the flags that we support setting via set_flags +_flags = _bool_flags + _string_flags + _string_list_flags + +def _flag_transition_impl(settings, attr): + rv = {} + for key in settings: + # Get the short form of the name. This the short form used as the keys in the + # set_flags dictionary. + flag_name = key.split(":")[1] + + # If there is an entry in set_flags for the short-version of a flag, use that + # value or values. If not, use whatever value is set via flags. + flag_setting = attr.set_flags.get(flag_name, settings[key]) + if key in _string_list_flags: + if type(flag_setting) == "list": + rv[key] = flag_setting + else: + rv[key] = [flag_setting] # This usually happens when the default value is used. + elif key in _string_flags: + if type(flag_setting) == "list": + rv[key] = flag_setting[0] + else: + rv[key] = flag_setting # we know flag_setting is a string (e.g. the default). + elif key in _bool_flags: + if type(flag_setting) == "list": + rv[key] = flag_setting[0] == "True" + else: + rv[key] = flag_setting # flag_setting will be a boolean, the default + return rv + +# This defines a Starlark transition and which flags it reads and writes. +_flag_transition = transition( + implementation = _flag_transition_impl, + inputs = _flags, + outputs = _flags, +) + +# The implementation of transition_rule: all this does is copy the cc_binary's output to +# its own output and propagate its runfiles and executable to use for "$ bazel run". +# +# This makes transition_rule as close to a pure wrapper of cc_binary as possible. +def _transition_rule_impl(ctx): + actual_binary = ctx.attr.actual_binary[0] + outfile = ctx.actions.declare_file(ctx.label.name) + cc_binary_outfile = actual_binary[DefaultInfo].files.to_list()[0] + + ctx.actions.run_shell( + inputs = [cc_binary_outfile], + outputs = [outfile], + command = "cp %s %s" % (cc_binary_outfile.path, outfile.path), + ) + return [ + DefaultInfo( + executable = outfile, + data_runfiles = actual_binary[DefaultInfo].data_runfiles, + ), + ] + +# The purpose of this rule is to take a "set_flags" attribute, invoke a transition that sets +# any of _flags to the specified values, then depend on a cc_binary whose deps will be able +# to select() on those flags as if the user had set them via the CLI. +transition_rule = rule( + implementation = _transition_rule_impl, + attrs = { + # set_flags is a dictionary with the keys being the short-form of a flag name + # (e.g. the part that comes after the colon) and the value being a list of values + # that the flag should be set to, regardless of the relevant CLI flags. + # https://docs.bazel.build/versions/main/skylark/lib/attr.html#string_list_dict + "set_flags": attr.string_list_dict(), + # This is the cc_binary whose deps will select() on that feature. + # Note specifically how it is modified with _flag_transition, which + # ensures that the flags propagates down the graph. + # https://docs.bazel.build/versions/main/skylark/lib/attr.html#label + "actual_binary": attr.label(cfg = _flag_transition), + # This is a stock Bazel requirement for any rule that uses Starlark + # transitions. It's okay to copy the below verbatim for all such rules. + # + # The purpose of this requirement is to give the ability to restrict + # which packages can invoke these rules, since Starlark transitions + # make much larger graphs possible that can have memory and performance + # consequences for your build. The allowlist defaults to "everything". + # But you can redefine it more strictly if you feel that's prudent. + "_allowlist_function_transition": attr.label( + default = "@bazel_tools//tools/allowlists/function_transition_allowlist", + ), + }, + # Making this executable means it works with "$ bazel run". + executable = True, +) + +def cc_binary_with_flags(name, cc_binary_name = "", set_flags = {}, **kwargs): + """Builds a cc_binary as if set_flags were set on the CLI. + + Args: + name: string, the name for the rule that is the binary, but with the flags changed via + a transition. Any dependents should use this name. + cc_binary_name: string, the name of the binary created (not the name of the transition + rule). The default is the name with "_native_binary" as a suffix. + set_flags: dictionary of string to list of strings. The keys should be the name of the + flag, and the values should be the desired valid settings for that flag. + **kwargs: Any flags that a cc_binary normally takes. + """ + if not cc_binary_name: + cc_binary_name = name + "_native_binary" + transition_rule( + name = name, + actual_binary = ":%s" % cc_binary_name, + set_flags = set_flags, + testonly = kwargs.get("testonly", False), + ) + native.cc_binary( + name = cc_binary_name, + **kwargs + ) diff --git a/third_party/skia/bazel/common_config_settings/BUILD.bazel b/third_party/skia/bazel/common_config_settings/BUILD.bazel index 0964e08f3c3b..ecac73d53811 100644 --- a/third_party/skia/bazel/common_config_settings/BUILD.bazel +++ b/third_party/skia/bazel/common_config_settings/BUILD.bazel @@ -1,3 +1,5 @@ +load(":defs.bzl", "bool_flag", "string_flag_with_values") + # @platforms is found at https://github.com/bazelbuild/platforms package(default_visibility = ["//:__subpackages__"]) @@ -25,6 +27,16 @@ config_setting( ], ) +config_setting( + name = "debug_build", + values = {"compilation_mode": "dbg"}, +) + +config_setting( + name = "release_build", + values = {"compilation_mode": "opt"}, +) + constraint_value( name = "fuchsia", constraint_setting = "@platforms//os:os", @@ -50,34 +62,88 @@ config_setting( # ============================================================================= # Configurable Skia Features # ============================================================================= -# Below, we define a number of constraint_settings (think enums) and their -# associated constraint values (think enum values). These let us use select -# to turn on or off certain Skia features. Many of these are platform-specific, -# and can be configured as such with the exec_compatible_with. +# These are flags that we can specify when invoking bazel build to turn on and +# off certain features, such as GPU backend, or codec support. +# https://docs.bazel.build/versions/4.2.1/skylark/config.html#using-build-settings-on-the-command-line +# For example, to use the GL backend with the WebGL flavor, one would run +# bazel build //:skia-core --//bazel/common_config_settings:gpu_backend=gl_backend \ +# --//bazel/common_config_settings:with_gl_standard=webgl_standard +# This is a bit wordy, so we define aliases in the //.bazelrc file that condense this to +# bazel build //:skia-core --gpu_backend=gl_backend --with_gl_standard=webgl_standard # -# To actually set the values, you need to create a platform() rule. See -# //bazel/supported_combinations for more. +# Developers can specify their own short-hands by making a .bazelrc file in their home +# directory. https://docs.bazel.build/versions/main/guide.html#where-are-the-bazelrc-files # -# https://docs.bazel.build/versions/main/be/platform.html#constraint_setting -constraint_setting( - name = "skdebug_impl", - default_constraint_value = ":stdio_skdebug", + +string_flag_with_values( + flag_name = "gpu_backend", + multiple = True, + values = [ + "gl_backend", + "vulkan_backend", + ], ) -# https://docs.bazel.build/versions/main/be/platform.html#constraint_value -constraint_value( - name = "stdio_skdebug", - constraint_setting = ":skdebug_impl", +string_flag_with_values( + flag_name = "with_gl_standard", + values = [ + "gles_standard", + "gl_standard", + "webgl_standard", + ], ) -constraint_value( - name = "win_skdebug", - constraint_setting = ":skdebug_impl", - exec_compatible_with = ["@platforms//os:windows"], +string_flag_with_values( + default = "empty_fontmgr_factory", + flag_name = "fontmgr_factory", + values = [ + "empty_fontmgr_factory", + "custom_embedded_fontmgr_factory", + ], ) -constraint_value( - name = "android_skdebug", - constraint_setting = ":skdebug_impl", - exec_compatible_with = ["@platforms//os:android"], +string_flag_with_values( + flag_name = "include_fontmgr", + multiple = True, + values = [ + "custom_directory_fontmgr", + "custom_embedded_fontmgr", + "custom_empty_fontmgr", + ], +) + +string_flag_with_values( + flag_name = "include_decoder", + multiple = True, + values = [ + "gif_decode_codec", + "jpeg_decode_codec", + "png_decode_codec", + "raw_decode_codec", + "webp_decode_codec", + ], +) + +string_flag_with_values( + flag_name = "include_encoder", + multiple = True, + values = [ + "jpeg_encode_codec", + "png_encode_codec", + "webp_encode_codec", + ], +) + +string_flag_with_values( + flag_name = "shaper_backend", + multiple = True, + values = [ + "harfbuzz_shaper", + "coretext_shaper", + ], +) + +bool_flag( + default = False, + flag_name = "use_icu", ) diff --git a/third_party/skia/bazel/common_config_settings/defs.bzl b/third_party/skia/bazel/common_config_settings/defs.bzl new file mode 100644 index 000000000000..92e913dcb9cc --- /dev/null +++ b/third_party/skia/bazel/common_config_settings/defs.bzl @@ -0,0 +1,120 @@ +""" +This file contains helpers for defining build flags and options that are used to +configure the Skia build. +""" + +# https://github.com/bazelbuild/bazel-skylib/blob/main/rules/common_settings.bzl +load("@bazel_skylib//rules:common_settings.bzl", "string_flag", skylib_bool_flag = "bool_flag") + +# Forked from https://github.com/bazelbuild/bazel-skylib/blob/main/rules/common_settings.bzl +BuildSettingInfo = provider( + doc = "A singleton provider that contains the raw value of a multi-string build setting", + fields = ["values"], +) + +def _multi_string_impl(ctx): + allowed_values = ctx.attr.values + values = ctx.build_setting_value + for v in values: + if v not in ctx.attr.values: + fail("Error setting " + str(ctx.label) + ": invalid value '" + v + "'. Allowed values are " + str(allowed_values)) + return BuildSettingInfo(values = values) + +multi_string_flag = rule( + implementation = _multi_string_impl, + build_setting = config.string(flag = True, allow_multiple = True), + attrs = { + "values": attr.string_list( + doc = "The list of allowed values for this setting. An error is raised if any other values are given.", + ), + }, + doc = "A string-typed build setting that can be set multiple times on the command line", +) + +def string_flag_with_values(flag_name, values, default = "", multiple = False, name = ""): + """Create a string flag and corresponding config_settings. + + string_flag_with_values is a Bazel Macro that defines a flag with the given name and a set + of valid values for that flag. For each value, a config_setting is defined with the name + of the value, associated with the created flag. + This is defined to make the BUILD.bazel file easier to read w/o the boilerplate of defining + a string_flag rule and n config_settings + https://docs.bazel.build/versions/main/skylark/macros.html + + Args: + flag_name: string, the name of the flag to create and use for the config_settings + values: list of strings, the valid values for this flag to be set to. + default: string, whatever the default value should be if the flag is not set. Can be + empty string for both a string_flag and a multi_string flag. + multiple: boolean, True if the flag should be able to be set multiple times on the CLI. + name: string unused, https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro + """ + if multiple: + multi_string_flag( + name = flag_name, + # We have to specify a default value, even if that value is empty string. + # https://docs.bazel.build/versions/main/skylark/config.html#instantiating-build-settings + build_setting_default = default, + # If empty string is the default, we need to make sure it is in the list + # of acceptable values. If the default is not empty string, we don't want + # to make empty string a valid value. Having duplicate values in the list + # does not cause any issues, so we can just add the default to achieve + # this affect. + values = values + [default], + ) + else: + string_flag( + name = flag_name, + # We have to specify a default value, even if that value is empty string. + # https://docs.bazel.build/versions/main/skylark/config.html#instantiating-build-settings + build_setting_default = default, + # If empty string is the default, we need to make sure it is in the list + # of acceptable values. If the default is not empty string, we don't want + # to make empty string a valid value. Having duplicate values in the list + # does not cause any issues, so we can just add the default to achieve + # this affect. + values = values + [default], + ) + + # For each of the values given, we define a config_setting. This allows us to use + # select statements, on the given setting, e.g. referencing + # //bazel/common_config_settings:some_valid_value_for_a_flag + for v in values: + native.config_setting( + name = v, + flag_values = { + ":" + flag_name: v, + }, + ) + +def bool_flag(flag_name, default = True, name = ""): + """Create a boolean flag and corresponding config_settings. + + bool_flag is a Bazel Macro that defines a boolean flag with the given name two config_settings, + one for True, one for False. Reminder that Bazel has special syntax for unsetting boolean flags, + but this does not work well with aliases. + https://docs.bazel.build/versions/main/skylark/config.html#using-build-settings-on-the-command-line + Thus it is best to define both an "enabled" alias and a "disabled" alias. + + Args: + flag_name: string, the name of the flag to create and use for the config_settings + default: boolean, if the flag should default to on or off. + name: string unused, https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro + """ + skylib_bool_flag(name = flag_name, build_setting_default = default) + + native.config_setting( + name = flag_name + "_true", + flag_values = { + # The value must be a string, but it will be parsed to a boolean + # https://docs.bazel.build/versions/main/skylark/config.html#build-settings-and-select + ":" + flag_name: "True", + }, + ) + + native.config_setting( + name = flag_name + "_false", + flag_values = { + ":" + flag_name: "False", + }, + ) diff --git a/third_party/skia/bazel/macros.bzl b/third_party/skia/bazel/macros.bzl new file mode 100644 index 000000000000..ee9a86e85a89 --- /dev/null +++ b/third_party/skia/bazel/macros.bzl @@ -0,0 +1,72 @@ +""" +This file contains general helper macros that make our BUILD.bazel files easier to read. +""" + +def select_multi(values_map, default, name = ""): + """select() but allowing multiple matches of the keys. + + select_multi works around a restriction in native select() that prevents multiple + keys from being matched unless one is a strict subset of another. For some features, + we allow multiple of that component to be active. For example, with codecs, we let + the clients mix and match anywhere from 0 built in codecs to all of them. + + select_multi takes a given map and turns it into several distinct select statements + that have the effect of using any values associated with any active keys. + For example, if the following parameters are passed in: + values_map = { + ":alpha": ["apple", "apricot"], + ":beta": ["banana"], + ":gamma": ["grapefruit"], + }, + default = [] + it will be unrolled into the following select statements + [] + select({ + ":apple": ["apple", "apricot"], + "//conditions:default": [], + }) + select({ + ":beta": ["banana"], + "//conditions:default": [], + }) + select({ + ":gamma": ["grapefruit"], + "//conditions:default": [], + }) + + Args: + values_map: dictionary of labels to a list of labels, just like select() + default: list of labels, the value that should be used if any of the options do not match. + This is typically an empty list + name: string unused, https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro + + Returns: + A list of values that is filled in by the generated select statements. + """ + if len(values_map) == 0: + return default + rv = [] + for key, value in values_map.items(): + rv += select({ + key: value, + "//conditions:default": default, + }) + return rv + +def generated_cc_atom(name, **kwargs): + """A self-annotating label for a generated cc_library for exactly one file. + + Args: + name: string, the name of the cc_library + **kwargs: All other arguments are passed verbatim to cc_library + """ + if len(kwargs.get("srcs", [])) > 1 or len(kwargs.get("hdrs", [])) > 1: + fail("Cannot have more than one src or hdr file in generated_cc_atom") + if len(kwargs.get("srcs", [])) > 0 and len(kwargs.get("hdrs", [])) > 0: + fail("Cannot set both srcs and hdrs in generated_cc_atom") + if len(kwargs.get("srcs", [])) == 0 and len(kwargs.get("hdrs", [])) == 0: + fail("Must set exactly one of srcs or hdrs in generated_cc_atom") + deps = kwargs.get("deps", []) + deps.append("//bazel:defines_from_flags") + kwargs["deps"] = deps + native.cc_library( + name = name, + **kwargs + ) diff --git a/third_party/skia/bazel/supported_combinations/BUILD.bazel b/third_party/skia/bazel/supported_combinations/BUILD.bazel deleted file mode 100644 index 214f5d129161..000000000000 --- a/third_party/skia/bazel/supported_combinations/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -# This file contains a set of configurations that are supported. This means these combinations -# of architectures, operating systems, and features should all compile and pass our tests. -# Bazel calls the combinations "Platforms" https://docs.bazel.build/versions/main/platforms.html -# and they all focus on the target environment, that is, where the program using Skia is running. -# Clients are free to define their own platforms with their own combinations of features, -# however, not all combinations will work. -# -# To specify one of these platforms, include it in the command to bazel, e.g. -# bazel build --platforms=//bazel/supported_combinations:linux_x64 [rule] -platform( - name = "linux_x64", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:linux", - "//bazel/common_config_settings:stdio_skdebug", - ], -) diff --git a/third_party/skia/bench/BulkRectBench.cpp b/third_party/skia/bench/BulkRectBench.cpp index c2a124d8fd1f..dd74bdbec620 100644 --- a/third_party/skia/bench/BulkRectBench.cpp +++ b/third_party/skia/bench/BulkRectBench.cpp @@ -148,7 +148,7 @@ class BulkRectBench : public Benchmark { auto sdc = SkCanvasPriv::TopDeviceSurfaceDrawContext(canvas); SkMatrix view = canvas->getLocalToDeviceAs3x3(); - SkSimpleMatrixProvider matrixProvider(view); + SkMatrixProvider matrixProvider(view); GrPaint grPaint; SkPaintToGrPaint(context, sdc->colorInfo(), paint, matrixProvider, &grPaint); sdc->drawQuadSet(nullptr, std::move(grPaint), GrAA::kYes, view, batch, kRectCount); diff --git a/third_party/skia/bench/CoverageBench.cpp b/third_party/skia/bench/CoverageBench.cpp index 75df6f06fc67..034b11edb74f 100644 --- a/third_party/skia/bench/CoverageBench.cpp +++ b/third_party/skia/bench/CoverageBench.cpp @@ -22,7 +22,7 @@ class DrawPathBench : public Benchmark { SkPath fPath; SkRasterClip fRC; SkAutoPixmapStorage fPixmap; - SkSimpleMatrixProvider fIdentityMatrixProvider; + SkMatrixProvider fIdentityMatrixProvider; SkDraw fDraw; bool fDrawCoverage; public: diff --git a/third_party/skia/bench/GrPathUtilsBench.cpp b/third_party/skia/bench/FindCubicConvex180ChopsBench.cpp similarity index 55% rename from third_party/skia/bench/GrPathUtilsBench.cpp rename to third_party/skia/bench/FindCubicConvex180ChopsBench.cpp index 6e28a2ec234b..78e7d42107a1 100644 --- a/third_party/skia/bench/GrPathUtilsBench.cpp +++ b/third_party/skia/bench/FindCubicConvex180ChopsBench.cpp @@ -6,12 +6,12 @@ */ #include "bench/Benchmark.h" -#include "src/gpu/geometry/GrPathUtils.h" +#include "src/gpu/tessellate/Tessellation.h" -class FindCubicConvex180Chops : public Benchmark { +class FindCubicConvex180ChopsBench : public Benchmark { public: - FindCubicConvex180Chops(const std::array& pts, const char* suffix) : fPts(pts) { - fName.printf("GrPathUtils_findCubicConvex180Chops%s", suffix); + FindCubicConvex180ChopsBench(const std::array& pts, const char* suffix) : fPts(pts) { + fName.printf("FindCubicConvex180Chops%s", suffix); } private: @@ -22,7 +22,7 @@ class FindCubicConvex180Chops : public Benchmark { bool areCusps; int iters = 50000 * loops; for (int i = 0; i < iters; ++i) { - int count = GrPathUtils::findCubicConvex180Chops(fPts.data(), T, &areCusps); + int count = skgpu::FindCubicConvex180Chops(fPts.data(), T, &areCusps); if (T[0] == 200.7f) { // This will never happen. Pretend to use the result to keep the compiler honest. SkDebugf("%i%f%f", count, T[0], T[1]); @@ -34,5 +34,7 @@ class FindCubicConvex180Chops : public Benchmark { std::array fPts; }; -DEF_BENCH(return new FindCubicConvex180Chops({{{0,0}, {100,0}, {50,100}, {100,100}}}, "_inflect1");) -DEF_BENCH(return new FindCubicConvex180Chops({{{0,0}, {50,0}, {100,50}, {100,100}}}, "_loop");) +DEF_BENCH(return new FindCubicConvex180ChopsBench({{{0,0}, {100,0}, {50,100}, {100,100}}}, + "_inflect1");) +DEF_BENCH(return new FindCubicConvex180ChopsBench({{{0,0}, {50,0}, {100,50}, {100,100}}}, + "_loop");) diff --git a/third_party/skia/bench/GlyphQuadFillBench.cpp b/third_party/skia/bench/GlyphQuadFillBench.cpp index a53679c7d6e5..31fdc7c2b4c1 100644 --- a/third_party/skia/bench/GlyphQuadFillBench.cpp +++ b/third_party/skia/bench/GlyphQuadFillBench.cpp @@ -10,6 +10,7 @@ #include "include/core/SkTypeface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/GrRecordingContext.h" +#include "src/core/SkStrikeCache.h" #include "src/core/SkUtils.h" #include "src/gpu/GrRecordingContextPriv.h" #include "src/gpu/SkGr.h" @@ -17,7 +18,6 @@ #include "src/gpu/text/GrTextBlob.h" #include "src/utils/SkUTF.h" - // From Project Guttenberg. This is UTF-8 text. static const char* gText = "Call me Ishmael. Some years ago--never mind how long precisely"; @@ -71,7 +71,7 @@ class DirectMaskGlyphVertexFillBenchmark : public Benchmark { for (int loop = 0; loop < loops; loop++) { subRun->fillVertexData(fVertices.get(), 0, subRun->glyphCount(), - grColor, positionMatrix, clip); + grColor, positionMatrix, {0, 0}, clip); } } diff --git a/third_party/skia/bench/PatchBench.cpp b/third_party/skia/bench/PatchBench.cpp index 2fb05796584f..126e2b759c26 100644 --- a/third_party/skia/bench/PatchBench.cpp +++ b/third_party/skia/bench/PatchBench.cpp @@ -128,16 +128,16 @@ class PatchBench : public Benchmark { for (int i = 0; i < loops; i++) { switch (fVertexMode) { case kNone_VertexMode: - canvas->drawPatch(fCubics, nullptr, nullptr, fPaint); + canvas->drawPatch(fCubics, nullptr, nullptr, SkBlendMode::kModulate, fPaint); break; case kColors_VertexMode: - canvas->drawPatch(fCubics, fColors, nullptr, fPaint); + canvas->drawPatch(fCubics, fColors, nullptr, SkBlendMode::kModulate, fPaint); break; case kTexCoords_VertexMode: - canvas->drawPatch(fCubics, nullptr, fTexCoords, fPaint); + canvas->drawPatch(fCubics, nullptr, fTexCoords, SkBlendMode::kModulate, fPaint); break; case kBoth_VertexMode: - canvas->drawPatch(fCubics, fColors, fTexCoords, fPaint); + canvas->drawPatch(fCubics, fColors, fTexCoords, SkBlendMode::kModulate, fPaint); break; default: break; diff --git a/third_party/skia/bench/SkSLBench.cpp b/third_party/skia/bench/SkSLBench.cpp index 9378fae35813..727529064620 100644 --- a/third_party/skia/bench/SkSLBench.cpp +++ b/third_party/skia/bench/SkSLBench.cpp @@ -118,381 +118,279 @@ DEF_BENCH(return new SkSLCompileBench(#name, name ## _SRC, /*optimize=*/true, O // This fragment shader is from the third tile on the top row of GM_gradients_2pt_conical_outside. COMPILER_BENCH(large, R"( -layout(set=0, binding=0) uniform half urange_Stage1_c0; -layout(set=0, binding=0) uniform half4 uleftBorderColor_Stage1_c0_c0_c0; -layout(set=0, binding=0) uniform half4 urightBorderColor_Stage1_c0_c0_c0; -layout(set=0, binding=0) uniform float3x3 umatrix_Stage1_c0_c0_c0_c0; -layout(set=0, binding=0) uniform half2 ufocalParams_Stage1_c0_c0_c0_c0_c0; -layout(set=0, binding=0) uniform float4 uscale0_1_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 uscale2_3_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 uscale4_5_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 uscale6_7_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 ubias0_1_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 ubias2_3_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 ubias4_5_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform float4 ubias6_7_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform half4 uthresholds1_7_Stage1_c0_c0_c0_c1; -layout(set=0, binding=0) uniform half4 uthresholds9_13_Stage1_c0_c0_c0_c1; -flat in half4 vcolor_Stage0; -noperspective in float2 vTransformedCoords_0_Stage0; +uniform float3x3 umatrix_S1_c0; +uniform half4 uthresholds_S1_c1_c0_c0[1]; +uniform float4 uscale_S1_c1_c0_c0[4]; +uniform float4 ubias_S1_c1_c0_c0[4]; +uniform half uinvR1_S1_c1_c0_c1_c0; +uniform half ufx_S1_c1_c0_c1_c0; +uniform float3x3 umatrix_S1_c1_c0_c1; +uniform half4 uleftBorderColor_S1_c1_c0; +uniform half4 urightBorderColor_S1_c1_c0; +uniform half urange_S1; +uniform sampler2D uTextureSampler_0_S1; +flat in half4 vcolor_S0; +noperspective in float2 vTransformedCoords_8_S0; out half4 sk_FragColor; -half4 TwoPointConicalGradientLayout_Stage1_c0_c0_c0_c0_c0(half4 _input) +half4 TextureEffect_S1_c0_c0(half4 _input, float2 _coords) { - float t = -1.0; - half v = 1.0; - @switch (2) - { - case 1: - { - half r0_2 = ufocalParams_Stage1_c0_c0_c0_c0_c0.y; - t = float(r0_2) - vTransformedCoords_0_Stage0.y * vTransformedCoords_0_Stage0.y; - if (t >= 0.0) - { - t = vTransformedCoords_0_Stage0.x + sqrt(t); - } - else - { - v = -1.0; - } - } - break; - case 0: - { - half r0 = ufocalParams_Stage1_c0_c0_c0_c0_c0.x; - @if (true) - { - t = length(vTransformedCoords_0_Stage0) - float(r0); - } - else - { - t = -length(vTransformedCoords_0_Stage0) - float(r0); - } - } - break; - case 2: - { - half invR1 = ufocalParams_Stage1_c0_c0_c0_c0_c0.x; - half fx = ufocalParams_Stage1_c0_c0_c0_c0_c0.y; - float x_t = -1.0; - @if (false) - { - x_t = dot(vTransformedCoords_0_Stage0, vTransformedCoords_0_Stage0) / vTransformedCoords_0_Stage0.x; - } - else if (false) - { - x_t = length(vTransformedCoords_0_Stage0) - vTransformedCoords_0_Stage0.x * float(invR1); - } - else - { - float temp = vTransformedCoords_0_Stage0.x * vTransformedCoords_0_Stage0.x - vTransformedCoords_0_Stage0.y * vTransformedCoords_0_Stage0.y; - if (temp >= 0.0) - { - @if (false || !true) - { - x_t = -sqrt(temp) - vTransformedCoords_0_Stage0.x * float(invR1); - } - else - { - x_t = sqrt(temp) - vTransformedCoords_0_Stage0.x * float(invR1); - } - } - } - @if (!false) - { - if (x_t <= 0.0) - { - v = -1.0; - } - } - @if (true) - { - @if (false) - { - t = x_t; - } - else - { - t = x_t + float(fx); - } - } - else - { - @if (false) - { - t = -x_t; - } - else - { - t = -x_t + float(fx); - } - } - @if (false) - { - t = 1.0 - t; - } - } - break; - } - return half4(half(t), v, 0.0, 0.0); + return sample(uTextureSampler_0_S1, _coords).000r; } -half4 MatrixEffect_Stage1_c0_c0_c0_c0(half4 _input) +half4 MatrixEffect_S1_c0(half4 _input, float2 _coords) { - return TwoPointConicalGradientLayout_Stage1_c0_c0_c0_c0_c0(_input); + return TextureEffect_S1_c0_c0(_input, float3x2(umatrix_S1_c0) * _coords.xy1); } -half4 UnrolledBinaryGradientColorizer_Stage1_c0_c0_c0_c1(half4 _input, float2 _coords) +half4 LoopingBinaryColorizer_S1_c1_c0_c0(half4 _input, float2 _coords) { - half t = half(_coords.x); - float4 scale; - float4 bias; - if (4 <= 4 || t < uthresholds1_7_Stage1_c0_c0_c0_c1.w) - { - if (4 <= 2 || t < uthresholds1_7_Stage1_c0_c0_c0_c1.y) - { - if (4 <= 1 || t < uthresholds1_7_Stage1_c0_c0_c0_c1.x) - { - scale = uscale0_1_Stage1_c0_c0_c0_c1; - bias = ubias0_1_Stage1_c0_c0_c0_c1; - } - else - { - scale = uscale2_3_Stage1_c0_c0_c0_c1; - bias = ubias2_3_Stage1_c0_c0_c0_c1; - } - } - else - { - if (4 <= 3 || t < uthresholds1_7_Stage1_c0_c0_c0_c1.z) - { - scale = uscale4_5_Stage1_c0_c0_c0_c1; - bias = ubias4_5_Stage1_c0_c0_c0_c1; - } - else - { - scale = uscale6_7_Stage1_c0_c0_c0_c1; - bias = ubias6_7_Stage1_c0_c0_c0_c1; - } - } - } - else - { - if (4 <= 6 || t < uthresholds9_13_Stage1_c0_c0_c0_c1.y) - { - if (4 <= 5 || t < uthresholds9_13_Stage1_c0_c0_c0_c1.x) - { - scale = float4(0); - bias = float4(0); - } - else - { - scale = float4(0); - bias = float4(0); - } - } - else - { - if (4 <= 7 || t < uthresholds9_13_Stage1_c0_c0_c0_c1.z) - { - scale = float4(0); - bias = float4(0); - } - else - { - scale = float4(0); - bias = float4(0); - } - } - } - return half4(float(t) * scale + bias); + half4 _tmp_0_inColor = _input; + float2 _tmp_1_coords = _coords; + half t = half(_tmp_1_coords.x); + ; + ; + int chunk = 0; + ; + int pos; + if (t < uthresholds_S1_c1_c0_c0[chunk].y) + { + pos = int(t < uthresholds_S1_c1_c0_c0[chunk].x ? 0 : 1); + } + else + { + pos = int(t < uthresholds_S1_c1_c0_c0[chunk].z ? 2 : 3); + } + ; + return half4(half4(float(t) * uscale_S1_c1_c0_c0[pos] + ubias_S1_c1_c0_c0[pos])); } -half4 ClampedGradientEffect_Stage1_c0_c0_c0(half4 _input) +half4 TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(half4 _input) { - half4 t = MatrixEffect_Stage1_c0_c0_c0_c0(_input); - half4 outColor; - if (!false && t.y < 0.0) - { - outColor = half4(0.0); - } - else if (t.x < 0.0) - { - outColor = uleftBorderColor_Stage1_c0_c0_c0; - } - else if (t.x > 1.0) - { - outColor = urightBorderColor_Stage1_c0_c0_c0; - } - else - { - outColor = UnrolledBinaryGradientColorizer_Stage1_c0_c0_c0_c1(_input, float2(half2(t.x, 0.0))); - } - @if (false) - { - outColor.xyz *= outColor.w; - } - return outColor; + half4 _tmp_2_inColor = _input; + float2 _tmp_3_coords = vTransformedCoords_8_S0; + float t = -1.0; + half v = 1.0; + float x_t = -1.0; + if (bool(int(0))) + { + x_t = dot(_tmp_3_coords, _tmp_3_coords) / _tmp_3_coords.x; + } + else if (bool(int(0))) + { + x_t = length(_tmp_3_coords) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + } + else + { + float temp = _tmp_3_coords.x * _tmp_3_coords.x - _tmp_3_coords.y * _tmp_3_coords.y; + if (temp >= 0.0) + { + if (bool(int(0)) || !bool(int(1))) + { + x_t = -sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + } + else + { + x_t = sqrt(temp) - _tmp_3_coords.x * float(uinvR1_S1_c1_c0_c1_c0); + } + } + } + if (!bool(int(0))) + { + if (x_t <= 0.0) + { + v = -1.0; + } + } + if (bool(int(1))) + { + if (bool(int(0))) + { + t = x_t; + } + else + { + t = x_t + float(ufx_S1_c1_c0_c1_c0); + } + } + else + { + if (bool(int(0))) + { + t = -x_t; + } + else + { + t = -x_t + float(ufx_S1_c1_c0_c1_c0); + } + } + if (bool(int(0))) + { + t = 1.0 - t; + } + return half4(half4(half(t), v, 0.0, 0.0)); } -half4 OverrideInputFragmentProcessor_Stage1_c0_c0(half4 _input) +half4 MatrixEffect_S1_c1_c0_c1(half4 _input) { - return ClampedGradientEffect_Stage1_c0_c0_c0(false ? half4(0) : half4(1.000000, 1.000000, 1.000000, 1.000000)); + return TwoPointConicalFocalLayout_S1_c1_c0_c1_c0(_input); } -half4 DitherEffect_Stage1_c0(half4 _input) +half4 ClampedGradient_S1_c1_c0(half4 _input) { - half4 color = OverrideInputFragmentProcessor_Stage1_c0_c0(_input); - half value; - @if (sk_Caps.integerSupport) - { - uint x = uint(sk_FragCoord.x); - uint y = uint(sk_FragCoord.y) ^ x; - uint m = (((((y & 1) << 5 | (x & 1) << 4) | (y & 2) << 2) | (x & 2) << 1) | (y & 4) >> 1) | (x & 4) >> 2; - value = half(m) / 64.0 - 0.4921875; - } - else - { - half4 bits = mod(half4(sk_FragCoord.yxyx), half4(2.0, 2.0, 4.0, 4.0)); - bits.zw = step(2.0, bits.zw); - bits.xz = abs(bits.xz - bits.yw); - value = dot(bits, half4(0.5, 0.25, 0.125, 0.0625)) - 0.46875; - } - return half4(clamp(color.xyz + value * urange_Stage1_c0, 0.0, color.w), color.w); + half4 _tmp_4_inColor = _input; + half4 t = MatrixEffect_S1_c1_c0_c1(_tmp_4_inColor); + half4 outColor; + if (!bool(int(0)) && t.y < 0.0) + { + outColor = half4(0.0); + } + else if (t.x < 0.0) + { + outColor = uleftBorderColor_S1_c1_c0; + } + else if (t.x > 1.0) + { + outColor = urightBorderColor_S1_c1_c0; + } + else + { + outColor = LoopingBinaryColorizer_S1_c1_c0_c0(_tmp_4_inColor, float2(half2(t.x, 0.0))); + } + if (bool(int(0))) + { + outColor.xyz *= outColor.w; + } + return half4(outColor); +} +half4 DisableCoverageAsAlpha_S1_c1(half4 _input) +{ + _input = ClampedGradient_S1_c1_c0(_input); + half4 _tmp_5_inColor = _input; + return half4(_input); +} +half4 Dither_S1(half4 _input) +{ + _input = DisableCoverageAsAlpha_S1_c1(_input); + half4 _tmp_6_inColor = _input; + half value = MatrixEffect_S1_c0(_tmp_6_inColor, sk_FragCoord.xy).w - 0.5; + return half4(half4(clamp(_input.xyz + value * urange_S1, 0.0, _input.w), _input.w)); } void main() { - // Stage 0, QuadPerEdgeAAGeometryProcessor - half4 outputColor_Stage0; - outputColor_Stage0 = vcolor_Stage0; - const half4 outputCoverage_Stage0 = half4(1); - half4 output_Stage1; - output_Stage1 = DitherEffect_Stage1_c0(outputColor_Stage0); - { - // Xfer Processor: Porter Duff - sk_FragColor = output_Stage1 * outputCoverage_Stage0; - } + // Stage 0, QuadPerEdgeAAGeometryProcessor + half4 outputColor_S0; + outputColor_S0 = vcolor_S0; + const half4 outputCoverage_S0 = half4(1); + half4 output_S1; + output_S1 = Dither_S1(outputColor_S0); + { + // Xfer Processor: Porter Duff + sk_FragColor = output_S1 * outputCoverage_S0; + } } )"); // This fragment shader is taken from GM_BlurDrawImage. COMPILER_BENCH(medium, R"( -layout(set=0, binding=0) uniform float3x3 umatrix_Stage1_c0_c0_c0; -layout(set=0, binding=0) uniform half4 urectH_Stage2_c1; -layout(set=0, binding=0) uniform float3x3 umatrix_Stage2_c1_c0; -layout(set=0, binding=0) uniform sampler2D uTextureSampler_0_Stage1; -layout(set=0, binding=0) uniform sampler2D uTextureSampler_0_Stage2; -flat in half4 vcolor_Stage0; -noperspective in float2 vTransformedCoords_0_Stage0; +uniform float3x3 umatrix_S1_c0; +uniform float3x3 umatrix_S2_c0_c0; +uniform float4 urect_S2_c0; +uniform sampler2D uTextureSampler_0_S1; +uniform sampler2D uTextureSampler_0_S2; +flat in half4 vcolor_S0; +noperspective in float2 vTransformedCoords_3_S0; out half4 sk_FragColor; -half4 TextureEffect_Stage1_c0_c0_c0_c0(half4 _input) +half4 TextureEffect_S1_c0_c0(half4 _input) { - return sample(uTextureSampler_0_Stage1, vTransformedCoords_0_Stage0); + return sample(uTextureSampler_0_S1, vTransformedCoords_3_S0); } -half4 MatrixEffect_Stage1_c0_c0_c0(half4 _input) +half4 MatrixEffect_S1_c0(half4 _input) { - return TextureEffect_Stage1_c0_c0_c0_c0(_input); + return TextureEffect_S1_c0_c0(_input); } -half4 Blend_Stage1_c0_c0(half4 _input) +half4 DisableCoverageAsAlpha_S1(half4 _input) { - // Blend mode: SrcIn (Compose-One behavior) - return blend_src_in(MatrixEffect_Stage1_c0_c0_c0(half4(1)), _input); + _input = MatrixEffect_S1_c0(_input); + half4 _tmp_0_inColor = _input; + return half4(_input); } -half4 OverrideInputFragmentProcessor_Stage1_c0(half4 _input) +half4 TextureEffect_S2_c0_c0_c0(half4 _input, float2 _coords) { - return Blend_Stage1_c0_c0(false ? half4(0) : half4(1.000000, 1.000000, 1.000000, 1.000000)); + return sample(uTextureSampler_0_S2, _coords).000r; } -half4 TextureEffect_Stage2_c1_c0_c0(half4 _input, float2 _coords) +half4 MatrixEffect_S2_c0_c0(half4 _input, float2 _coords) { - return sample(uTextureSampler_0_Stage2, _coords).000r; + return TextureEffect_S2_c0_c0_c0(_input, float3x2(umatrix_S2_c0_c0) * _coords.xy1); } -half4 MatrixEffect_Stage2_c1_c0(half4 _input, float2 _coords) +half4 RectBlur_S2_c0(half4 _input, float2 _coords) { - return TextureEffect_Stage2_c1_c0_c0(_input, ((umatrix_Stage2_c1_c0) * _coords.xy1).xy); + half4 _tmp_1_inColor = _input; + float2 _tmp_2_coords = _coords; + half xCoverage; + half yCoverage; + if (bool(int(1))) + { + half2 xy = max(half2(urect_S2_c0.xy - _tmp_2_coords), half2(_tmp_2_coords - urect_S2_c0.zw)); + xCoverage = MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(xy.x, 0.5))).w; + yCoverage = MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(xy.y, 0.5))).w; + } + else + { + half4 rect = half4(half2(urect_S2_c0.xy - _tmp_2_coords), half2(_tmp_2_coords - urect_S2_c0.zw)); + xCoverage = (1.0 - MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(rect.x, 0.5))).w) - MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(rect.z, 0.5))).w; + yCoverage = (1.0 - MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(rect.y, 0.5))).w) - MatrixEffect_S2_c0_c0(_tmp_1_inColor, float2(half2(rect.w, 0.5))).w; + } + return half4((_input * xCoverage) * yCoverage); } -half4 RectBlurEffect_Stage2_c1(half4 _input) +half4 DeviceSpace_S2(half4 _input) { - /* key */ const bool highPrecision = false; - half xCoverage; - half yCoverage; - float2 pos = sk_FragCoord.xy; - @if (false) - { - pos = (float3x3(1) * float3(pos, 1.0)).xy; - } - @if (true) - { - half2 xy; - @if (highPrecision) - { - xy = max(half2(float4(0).xy - pos), half2(pos - float4(0).zw)); - } - else - { - xy = max(half2(float2(urectH_Stage2_c1.xy) - pos), half2(pos - float2(urectH_Stage2_c1.zw))); - } - xCoverage = MatrixEffect_Stage2_c1_c0(_input, float2(half2(xy.x, 0.5))).w; - yCoverage = MatrixEffect_Stage2_c1_c0(_input, float2(half2(xy.y, 0.5))).w; - } - else - { - half4 rect; - @if (highPrecision) - { - rect.xy = half2(float4(0).xy - pos); - rect.zw = half2(pos - float4(0).zw); - } - else - { - rect.xy = half2(float2(urectH_Stage2_c1.xy) - pos); - rect.zw = half2(pos - float2(urectH_Stage2_c1.zw)); - } - xCoverage = (1.0 - MatrixEffect_Stage2_c1_c0(_input, float2(half2(rect.x, 0.5))).w) - MatrixEffect_Stage2_c1_c0(_input, float2(half2(rect.z, 0.5))).w; - yCoverage = (1.0 - MatrixEffect_Stage2_c1_c0(_input, float2(half2(rect.y, 0.5))).w) - MatrixEffect_Stage2_c1_c0(_input, float2(half2(rect.w, 0.5))).w; - } - return (_input * xCoverage) * yCoverage; + return RectBlur_S2_c0(_input, sk_FragCoord.xy); } void main() { - // Stage 0, QuadPerEdgeAAGeometryProcessor - half4 outputColor_Stage0; - outputColor_Stage0 = vcolor_Stage0; - const half4 outputCoverage_Stage0 = half4(1); - half4 output_Stage1; - output_Stage1 = OverrideInputFragmentProcessor_Stage1_c0(outputColor_Stage0); - half4 output_Stage2; - output_Stage2 = RectBlurEffect_Stage2_c1(outputCoverage_Stage0); - { - // Xfer Processor: Porter Duff - sk_FragColor = output_Stage1 * output_Stage2; - } + // Stage 0, QuadPerEdgeAAGeometryProcessor + half4 outputColor_S0; + outputColor_S0 = vcolor_S0; + const half4 outputCoverage_S0 = half4(1); + half4 output_S1; + output_S1 = DisableCoverageAsAlpha_S1(outputColor_S0); + half4 output_S2; + output_S2 = DeviceSpace_S2(outputCoverage_S0); + { + // Xfer Processor: Porter Duff + sk_FragColor = output_S1 * output_S2; + } } )"); // This is the fragment shader used to blit the Viewer window when running the software rasterizer. COMPILER_BENCH(small, R"( -layout(set=0, binding=0) uniform float3x3 umatrix_Stage1_c0_c0; -layout(set=0, binding=0) uniform sampler2D uTextureSampler_0_Stage1; -noperspective in float2 vTransformedCoords_0_Stage0; +uniform float3x3 umatrix_S1_c0; +uniform sampler2D uTextureSampler_0_S1; +flat in half4 vcolor_S0; +noperspective in float2 vTransformedCoords_3_S0; out half4 sk_FragColor; -half4 TextureEffect_Stage1_c0_c0_c0(half4 _input) +half4 TextureEffect_S1_c0_c0(half4 _input) { - return sample(uTextureSampler_0_Stage1, vTransformedCoords_0_Stage0); + return sample(uTextureSampler_0_S1, vTransformedCoords_3_S0); } -half4 MatrixEffect_Stage1_c0_c0(half4 _input) +half4 MatrixEffect_S1_c0(half4 _input) { - return TextureEffect_Stage1_c0_c0_c0(_input); + return TextureEffect_S1_c0_c0(_input); } -half4 Blend_Stage1_c0(half4 _input) +half4 DisableCoverageAsAlpha_S1(half4 _input) { - // Blend mode: Modulate (Compose-One behavior) - return blend_modulate(MatrixEffect_Stage1_c0_c0(half4(1)), _input); + _input = MatrixEffect_S1_c0(_input); + half4 _tmp_0_inColor = _input; + return half4(_input); } void main() { - // Stage 0, QuadPerEdgeAAGeometryProcessor - half4 outputColor_Stage0 = half4(1); - const half4 outputCoverage_Stage0 = half4(1); - half4 output_Stage1; - output_Stage1 = Blend_Stage1_c0(outputColor_Stage0); - { - // Xfer Processor: Porter Duff - sk_FragColor = output_Stage1 * outputCoverage_Stage0; - } + // Stage 0, QuadPerEdgeAAGeometryProcessor + half4 outputColor_S0; + outputColor_S0 = vcolor_S0; + const half4 outputCoverage_S0 = half4(1); + half4 output_S1; + output_S1 = DisableCoverageAsAlpha_S1(outputColor_S0); + { + // Xfer Processor: Porter Duff + sk_FragColor = output_S1 * outputCoverage_S0; + } } )"); diff --git a/third_party/skia/bench/TessellateBench.cpp b/third_party/skia/bench/TessellateBench.cpp index 8ac2d304aaf9..f0dddd2b8ac5 100644 --- a/third_party/skia/bench/TessellateBench.cpp +++ b/third_party/skia/bench/TessellateBench.cpp @@ -11,18 +11,16 @@ #include "src/core/SkRectPriv.h" #include "src/gpu/GrDirectContextPriv.h" #include "src/gpu/mock/GrMockOpTarget.h" +#include "src/gpu/tessellate/AffineMatrix.h" #include "src/gpu/tessellate/MiddleOutPolygonTriangulator.h" #include "src/gpu/tessellate/PathCurveTessellator.h" #include "src/gpu/tessellate/PathWedgeTessellator.h" -#include "src/gpu/tessellate/PathXform.h" #include "src/gpu/tessellate/StrokeFixedCountTessellator.h" #include "src/gpu/tessellate/StrokeHardwareTessellator.h" #include "src/gpu/tessellate/WangsFormula.h" #include "tools/ToolUtils.h" #include -using ShaderFlags = GrStrokeTessellationShader::ShaderFlags; - namespace skgpu { // This is the number of cubics in desk_chalkboard.skp. (There are no quadratics in the chalkboard.) @@ -143,13 +141,13 @@ DEF_PATH_TESS_BENCH(GrPathCurveTessellator, make_cubic_path(8), SkMatrix::I()) { GrPipeline noVaryingsPipeline(GrScissorTest::kDisabled, SkBlendMode::kSrcOver, GrSwizzle::RGBA()); auto tess = PathCurveTessellator::Make(&arena, - fMatrix, - SK_PMColor4fTRANSPARENT, - PathCurveTessellator::DrawInnerFan::kNo, - fTarget->caps().minPathVerbsForHwTessellation(), - noVaryingsPipeline, - fTarget->caps()); - tess->prepare(fTarget.get(), {gAlmostIdentity, fPath}, fPath.countVerbs()); + fTarget->caps().shaderCaps()->infinitySupport()); + tess->prepare(fTarget.get(), + 1 << PathCurveTessellator::kMaxFixedResolveLevel, + fMatrix, + {gAlmostIdentity, fPath, SK_PMColor4fTRANSPARENT}, + fPath.countVerbs(), + true); } DEF_PATH_TESS_BENCH(GrPathWedgeTessellator, make_cubic_path(8), SkMatrix::I()) { @@ -157,12 +155,13 @@ DEF_PATH_TESS_BENCH(GrPathWedgeTessellator, make_cubic_path(8), SkMatrix::I()) { GrPipeline noVaryingsPipeline(GrScissorTest::kDisabled, SkBlendMode::kSrcOver, GrSwizzle::RGBA()); auto tess = PathWedgeTessellator::Make(&arena, - fMatrix, - SK_PMColor4fTRANSPARENT, - fTarget->caps().minPathVerbsForHwTessellation(), - noVaryingsPipeline, - fTarget->caps()); - tess->prepare(fTarget.get(), {gAlmostIdentity, fPath}, fPath.countVerbs()); + fTarget->caps().shaderCaps()->infinitySupport()); + tess->prepare(fTarget.get(), + 1 << PathCurveTessellator::kMaxFixedResolveLevel, + fMatrix, + {gAlmostIdentity, fPath, SK_PMColor4fTRANSPARENT}, + fPath.countVerbs(), + true); } static void benchmark_wangs_formula_cubic_log2(const SkMatrix& matrix, const SkPath& path) { @@ -236,7 +235,7 @@ DEF_PATH_TESS_BENCH(middle_out_triangulation, int baseVertex; VertexWriter vertexWriter = static_cast(fTarget->makeVertexSpace( sizeof(SkPoint), kNumCubicsInChalkboard, &buffer, &baseVertex)); - PathXform m(gAlmostIdentity); + AffineMatrix m(gAlmostIdentity); for (PathMiddleOutFanIter it(fPath); !it.done();) { for (auto [p0, p1, p2] : it.nextStack()) { vertexWriter << m.map2Points(p0, p1) << m.mapPoint(p2); @@ -245,30 +244,14 @@ DEF_PATH_TESS_BENCH(middle_out_triangulation, } using PathStrokeList = StrokeTessellator::PathStrokeList; -using MakeTessellatorFn = std::unique_ptr(*)(ShaderFlags, - const GrShaderCaps&, - const SkMatrix&, - PathStrokeList*, - std::array); - -static std::unique_ptr make_hw_tessellator( - ShaderFlags shaderFlags, - const GrShaderCaps& shaderCaps, - const SkMatrix& viewMatrix, - PathStrokeList* pathStrokeList, - std::array matrixMinMaxScales) { - return std::make_unique(shaderCaps, shaderFlags, viewMatrix, - pathStrokeList, matrixMinMaxScales); +using MakeTessellatorFn = std::unique_ptr(*)(PatchAttribs); + +static std::unique_ptr make_hw_tessellator(PatchAttribs attribs) { + return std::make_unique(attribs, 64); } -static std::unique_ptr make_fixed_count_tessellator( - ShaderFlags shaderFlags, - const GrShaderCaps& shaderCaps, - const SkMatrix& viewMatrix, - PathStrokeList* pathStrokeList, - std::array matrixMinMaxScales) { - return std::make_unique(shaderCaps, shaderFlags, viewMatrix, - pathStrokeList, matrixMinMaxScales); +static std::unique_ptr make_fixed_count_tessellator(PatchAttribs attribs) { + return std::make_unique(attribs); } using MakePathStrokesFn = std::vector(*)(); @@ -341,10 +324,10 @@ static std::vector make_motionmark_paths() { class TessPrepareBench : public Benchmark { public: TessPrepareBench(MakePathStrokesFn makePathStrokesFn, MakeTessellatorFn makeTessellatorFn, - ShaderFlags shaderFlags, float matrixScale, const char* suffix) + PatchAttribs attribs, float matrixScale, const char* suffix) : fMakePathStrokesFn(makePathStrokesFn) , fMakeTessellatorFn(makeTessellatorFn) - , fShaderFlags(shaderFlags) + , fPatchAttribs(attribs) , fMatrixScale(matrixScale) { fName.printf("tessellate_%s", suffix); } @@ -368,14 +351,16 @@ class TessPrepareBench : public Benchmark { fTotalVerbCount += fPathStrokes[i].fPath.countVerbs(); } - fTessellator = fMakeTessellatorFn(fShaderFlags, *fTarget->caps().shaderCaps(), - SkMatrix::Scale(fMatrixScale, fMatrixScale), - fPathStrokes.data(), {fMatrixScale, fMatrixScale}); + fTessellator = fMakeTessellatorFn(fPatchAttribs); } void onDraw(int loops, SkCanvas*) final { for (int i = 0; i < loops; ++i) { - fTessellator->prepare(fTarget.get(), fTotalVerbCount); + fTessellator->prepare(fTarget.get(), + SkMatrix::Scale(fMatrixScale, fMatrixScale), + {fMatrixScale, fMatrixScale}, + fPathStrokes.data(), + fTotalVerbCount); fTarget->resetAllocator(); } } @@ -383,7 +368,7 @@ class TessPrepareBench : public Benchmark { SkString fName; MakePathStrokesFn fMakePathStrokesFn; MakeTessellatorFn fMakeTessellatorFn; - const ShaderFlags fShaderFlags; + const PatchAttribs fPatchAttribs; float fMatrixScale; std::unique_ptr fTarget; std::vector fPathStrokes; @@ -393,32 +378,32 @@ class TessPrepareBench : public Benchmark { }; DEF_BENCH(return new TessPrepareBench( - make_simple_cubic_path, make_hw_tessellator, ShaderFlags::kNone, 1, + make_simple_cubic_path, make_hw_tessellator, PatchAttribs::kNone, 1, "GrStrokeHardwareTessellator"); ) DEF_BENCH(return new TessPrepareBench( - make_simple_cubic_path, make_hw_tessellator, ShaderFlags::kNone, 5, + make_simple_cubic_path, make_hw_tessellator, PatchAttribs::kNone, 5, "GrStrokeHardwareTessellator_one_chop"); ) DEF_BENCH(return new TessPrepareBench( - make_motionmark_paths, make_hw_tessellator, ShaderFlags::kDynamicStroke, 1, + make_motionmark_paths, make_hw_tessellator, PatchAttribs::kStrokeParams, 1, "GrStrokeHardwareTessellator_motionmark"); ) DEF_BENCH(return new TessPrepareBench( - make_simple_cubic_path, make_fixed_count_tessellator, ShaderFlags::kNone, 1, + make_simple_cubic_path, make_fixed_count_tessellator, PatchAttribs::kNone, 1, "GrStrokeFixedCountTessellator"); ) DEF_BENCH(return new TessPrepareBench( - make_simple_cubic_path, make_fixed_count_tessellator, ShaderFlags::kNone, 5, + make_simple_cubic_path, make_fixed_count_tessellator, PatchAttribs::kNone, 5, "GrStrokeFixedCountTessellator_one_chop"); ) DEF_BENCH(return new TessPrepareBench( - make_motionmark_paths, make_fixed_count_tessellator, ShaderFlags::kDynamicStroke, 1, + make_motionmark_paths, make_fixed_count_tessellator, PatchAttribs::kStrokeParams, 1, "GrStrokeFixedCountTessellator_motionmark"); ) diff --git a/third_party/skia/dm/DMSrcSink.cpp b/third_party/skia/dm/DMSrcSink.cpp index 7ac2971c89af..cd338aa5b5aa 100644 --- a/third_party/skia/dm/DMSrcSink.cpp +++ b/third_party/skia/dm/DMSrcSink.cpp @@ -81,9 +81,9 @@ #ifdef SK_GRAPHITE_ENABLED #include "experimental/graphite/include/Context.h" +#include "experimental/graphite/include/Recorder.h" +#include "experimental/graphite/include/Recording.h" #include "experimental/graphite/include/SkStuff.h" -#include "experimental/graphite/src/Recorder.h" -#include "experimental/graphite/src/Recording.h" #include "tools/graphite/ContextFactory.h" #include "tools/graphite/GraphiteTestContext.h" #endif @@ -392,11 +392,11 @@ static bool get_decode_info(SkImageInfo* decodeInfo, SkColorType canvasColorType || kRGBA_F16_SkColorType == canvasColorType) { return false; } - if (GetSkPmcolor() == SkPmcolorIsRgba) { - *decodeInfo = decodeInfo->makeColorType(kBGRA_8888_SkColorType); - } else { - *decodeInfo = decodeInfo->makeColorType(kRGBA_8888_SkColorType); - } +#ifdef SK_PMCOLOR_IS_RGBA + *decodeInfo = decodeInfo->makeColorType(kBGRA_8888_SkColorType); +#else + *decodeInfo = decodeInfo->makeColorType(kRGBA_8888_SkColorType); +#endif break; default: if (kRGB_565_SkColorType == canvasColorType && @@ -2129,7 +2129,7 @@ namespace { void precompile(skgpu::Context* context) { using ShaderType = skgpu::ShaderCombo::ShaderType; - skgpu::PaintCombo c1 { { skgpu::ShaderCombo({ ShaderType::kNone }, + skgpu::PaintCombo c1 { { skgpu::ShaderCombo({ ShaderType::kSolidColor }, { SkTileMode::kRepeat }) }, { SkBlendMode::kSrcOver, SkBlendMode::kSrc } }; context->preCompile(c1); diff --git a/third_party/skia/docs/examples/Canvas_drawPatch_2_a.cpp b/third_party/skia/docs/examples/Canvas_drawPatch_2_a.cpp index c1d6786470cb..b26571563c46 100644 --- a/third_party/skia/docs/examples/Canvas_drawPatch_2_a.cpp +++ b/third_party/skia/docs/examples/Canvas_drawPatch_2_a.cpp @@ -13,7 +13,7 @@ void draw(SkCanvas* canvas) { /* { 1, 5 }, */ { 2, 4 }, { 1, 3 }, /* { 3, 1 } */ }; SkColor colors[] = { SK_ColorRED, SK_ColorBLUE, SK_ColorYELLOW, SK_ColorCYAN }; canvas->scale(30, 30); - canvas->drawPatch(cubics, colors, nullptr, paint); + canvas->drawPatch(cubics, colors, nullptr, SkBlendMode::kModulate, paint); SkPoint text[] = { {3,0.9f}, {4,2.5f}, {5,0.9f}, {7.5f,3.2f}, {5.5f,4.2f}, {7.5f,5.2f}, {5,7.5f}, {4,5.9f}, {3,7.5f}, {0.5f,5.2f}, {2.5f,4.2f}, {0.5f,3.2f} }; diff --git a/third_party/skia/docs/examples/Canvas_drawPatch_2_b.cpp b/third_party/skia/docs/examples/Canvas_drawPatch_2_b.cpp index eca2173e683d..c5eaad5e902f 100644 --- a/third_party/skia/docs/examples/Canvas_drawPatch_2_b.cpp +++ b/third_party/skia/docs/examples/Canvas_drawPatch_2_b.cpp @@ -14,6 +14,6 @@ void draw(SkCanvas* canvas) { SkPoint texCoords[] = { { 0, 0 }, { 0, 62}, { 62, 62}, { 62, 0 } }; paint.setShader(source.makeShader(SkSamplingOptions(SkFilterMode::kLinear))); canvas->scale(30, 30); - canvas->drawPatch(cubics, nullptr, texCoords, paint); + canvas->drawPatch(cubics, nullptr, texCoords, SkBlendMode::kModulate, paint); } } // END FIDDLE diff --git a/third_party/skia/docs/examples/convex_overstroke_linear_approx_curve.cpp b/third_party/skia/docs/examples/convex_overstroke_linear_approx_curve.cpp index 91516b0aecfb..1db30de71e3c 100644 --- a/third_party/skia/docs/examples/convex_overstroke_linear_approx_curve.cpp +++ b/third_party/skia/docs/examples/convex_overstroke_linear_approx_curve.cpp @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. #include "tools/fiddle/examples.h" REG_FIDDLE(convex_overstroke_linear_approx_curve, 256, 256, false, 0) { -#include "math.h" +#include void draw(SkCanvas* canvas) { const float SCALE = 1; diff --git a/third_party/skia/experimental/bazel_test/BUILD.bazel b/third_party/skia/experimental/bazel_test/BUILD.bazel index 10e62b4287b8..aaed3f8f17d4 100644 --- a/third_party/skia/experimental/bazel_test/BUILD.bazel +++ b/third_party/skia/experimental/bazel_test/BUILD.bazel @@ -1,8 +1,39 @@ -package(default_visibility = ["//:__subpackages__"]) +load("//bazel:macros.bzl", "generated_cc_atom") +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -filegroup( - name = "srcs", - srcs = [ - "bazel_test.cpp", +cc_binary( + name = "bazel_test_exe", + visibility = ["//:__subpackages__"], + deps = [ + ":bazel_test_src", + "//third_party:musl_compat", + ] + select({ + "@platforms//os:windows": ["//src/ports:SkDebug_win_src"], + "@platforms//os:android": ["//src/ports:SkDebug_android_src"], + "//conditions:default": ["//src/ports:SkDebug_stdio_src"], + }), +) + +generated_cc_atom( + name = "bazel_test_src", + srcs = ["bazel_test.cpp"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkTypes_hdr", + "//third_party:libpng", ], ) + +go_binary( + name = "hello_world", + embed = [":bazel_test_lib"], + visibility = ["//visibility:public"], +) + +go_library( + name = "bazel_test_lib", + srcs = ["hello_world.go"], + importpath = "go.skia.org/skia/experimental/bazel_test", + visibility = ["//visibility:private"], +) diff --git a/third_party/skia/experimental/bazel_test/bazel_test.cpp b/third_party/skia/experimental/bazel_test/bazel_test.cpp index 810447df4775..290a87dff11c 100644 --- a/third_party/skia/experimental/bazel_test/bazel_test.cpp +++ b/third_party/skia/experimental/bazel_test/bazel_test.cpp @@ -1,6 +1,6 @@ // Copyright 2020 Google LLC. // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. -#include +#include "png.h" #include #include diff --git a/third_party/skia/experimental/bazel_test/hello_world.go b/third_party/skia/experimental/bazel_test/hello_world.go new file mode 100644 index 000000000000..aa9ecc6d274a --- /dev/null +++ b/third_party/skia/experimental/bazel_test/hello_world.go @@ -0,0 +1,11 @@ +// Copyright 2021 Google LLC +// +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +package main + +import "fmt" + +func main() { + fmt.Println("Hello world!") +} diff --git a/third_party/skia/experimental/graphite/include/BackendTexture.h b/third_party/skia/experimental/graphite/include/BackendTexture.h new file mode 100644 index 000000000000..192d8e38348f --- /dev/null +++ b/third_party/skia/experimental/graphite/include/BackendTexture.h @@ -0,0 +1,64 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_BackendTexture_DEFINED +#define skgpu_BackendTexture_DEFINED + +#include "experimental/graphite/include/GraphiteTypes.h" +#include "experimental/graphite/include/TextureInfo.h" +#include "include/core/SkSize.h" + +#ifdef SK_METAL +#include "experimental/graphite/include/mtl/MtlTypes.h" +#endif + +namespace skgpu { + +class BackendTexture { +public: + BackendTexture() {} +#ifdef SK_METAL + // The BackendTexture will not call retain or release on the passed in mtl::Handle. Thus the + // client must keep the mtl::Handle valid until they are no longer using the BackendTexture. + BackendTexture(SkISize dimensions, mtl::Handle mtlTexture); +#endif + + BackendTexture(const BackendTexture&); + + ~BackendTexture(); + + BackendTexture& operator=(const BackendTexture&); + + bool operator==(const BackendTexture&) const; + bool operator!=(const BackendTexture& that) const { return !(*this == that); } + + bool isValid() const { return fInfo.isValid(); } + BackendApi backend() const { return fInfo.backend(); } + + SkISize dimensions() const { return fDimensions; } + + const TextureInfo& info() const { return fInfo; } + +#ifdef SK_METAL + mtl::Handle getMtlTexture() const; +#endif + +private: + SkISize fDimensions; + TextureInfo fInfo; + + union { +#ifdef SK_METAL + mtl::Handle fMtlTexture; +#endif + }; +}; + +} // namespace skgpu + +#endif // skgpu_BackendTexture_DEFINED + diff --git a/third_party/skia/experimental/graphite/include/Context.h b/third_party/skia/experimental/graphite/include/Context.h index 33838c841078..33c88a9b894e 100644 --- a/third_party/skia/experimental/graphite/include/Context.h +++ b/third_party/skia/experimental/graphite/include/Context.h @@ -18,15 +18,18 @@ namespace skgpu { +class BackendTexture; class ContextPriv; class Gpu; class Recorder; class Recording; +class TextureInfo; namespace mtl { struct BackendContext; } struct ShaderCombo { enum class ShaderType { - kNone, + kNone, // does not modify color buffer, e.g. depth and/or stencil only + kSolidColor, kLinearGradient, kRadialGradient, kSweepGradient, @@ -56,6 +59,8 @@ class Context final : public SkRefCnt { static sk_sp MakeMetal(const skgpu::mtl::BackendContext&); #endif + BackendApi backend() const { return fBackend; } + sk_sp createRecorder(); void insertRecording(std::unique_ptr); @@ -63,18 +68,40 @@ class Context final : public SkRefCnt { void preCompile(const PaintCombo&); + /** + * Creates a new backend gpu texture matching the dimensinos and TextureInfo. If an invalid + * TextureInfo or a TextureInfo Skia can't support is passed in, this will return an invalid + * BackendTexture. Thus the client should check isValid on the returned BackendTexture to know + * if it succeeded or not. + * + * If this does return a valid BackendTexture, the caller is required to use + * Context::deleteBackendTexture to delete that texture. + */ + BackendTexture createBackendTexture(SkISize dimensions, const TextureInfo&); + + /** + * Called to delete the passed in BackendTexture. This should only be called if the + * BackendTexture was created by calling Context::createBackendTexture. If the BackendTexture is + * not valid or does not match the BackendApi of the Context then nothing happens. + * + * Otherwise this will delete/release the backend object that is wrapped in the BackendTexture. + * The BackendTexture will be reset to an invalid state and should not be used again. + */ + void deleteBackendTexture(BackendTexture&); + // Provides access to functions that aren't part of the public API. ContextPriv priv(); const ContextPriv priv() const; // NOLINT(readability-const-return-type) protected: - Context(sk_sp); + Context(sk_sp, BackendApi); private: friend class ContextPriv; std::vector> fRecordings; sk_sp fGpu; + BackendApi fBackend; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/Recorder.h b/third_party/skia/experimental/graphite/include/Recorder.h similarity index 89% rename from third_party/skia/experimental/graphite/src/Recorder.h rename to third_party/skia/experimental/graphite/include/Recorder.h index c02c91038c1b..f1e948f113ad 100644 --- a/third_party/skia/experimental/graphite/src/Recorder.h +++ b/third_party/skia/experimental/graphite/include/Recorder.h @@ -15,19 +15,16 @@ namespace skgpu { class Context; class DrawBufferManager; -class ProgramCache; class Recording; class UniformCache; class Recorder final : public SkRefCnt { public: - Recorder(sk_sp); ~Recorder() override; void add(sk_sp); Context* context() const; - ProgramCache* programCache(); UniformCache* uniformCache(); DrawBufferManager* drawBufferManager(); @@ -35,9 +32,11 @@ class Recorder final : public SkRefCnt { protected: private: + friend class Context; // For ctor + Recorder(sk_sp); + sk_sp fContext; TaskGraph fGraph; - std::unique_ptr fProgramCache; std::unique_ptr fUniformCache; std::unique_ptr fDrawBufferManager; }; diff --git a/third_party/skia/experimental/graphite/src/Recording.h b/third_party/skia/experimental/graphite/include/Recording.h similarity index 84% rename from third_party/skia/experimental/graphite/src/Recording.h rename to third_party/skia/experimental/graphite/include/Recording.h index 4c7bdde0dbee..0dce3362e7f1 100644 --- a/third_party/skia/experimental/graphite/src/Recording.h +++ b/third_party/skia/experimental/graphite/include/Recording.h @@ -16,12 +16,13 @@ class CommandBuffer; class Recording final { public: - Recording(sk_sp); ~Recording(); protected: private: - friend class Context; // for access to fCommandBuffer + friend class Context; // for access fCommandBuffer + friend class Recorder; // for ctor + Recording(sk_sp); sk_sp fCommandBuffer; }; diff --git a/third_party/skia/experimental/graphite/include/TextureInfo.h b/third_party/skia/experimental/graphite/include/TextureInfo.h index eb5cf3cd11aa..850e1d72c9ee 100644 --- a/third_party/skia/experimental/graphite/include/TextureInfo.h +++ b/third_party/skia/experimental/graphite/include/TextureInfo.h @@ -39,9 +39,10 @@ class TextureInfo { ~TextureInfo() {} TextureInfo(const TextureInfo&) = default; - TextureInfo& operator=(const TextureInfo&) = delete; + TextureInfo& operator=(const TextureInfo&); bool operator==(const TextureInfo&) const; + bool operator!=(const TextureInfo& that) const { return !(*this == that); } bool isValid() const { return fValid; } BackendApi backend() const { return fBackend; } diff --git a/third_party/skia/experimental/graphite/include/mtl/MtlTypes.h b/third_party/skia/experimental/graphite/include/mtl/MtlTypes.h index 918cca4206bd..392bda19bbff 100644 --- a/third_party/skia/experimental/graphite/include/mtl/MtlTypes.h +++ b/third_party/skia/experimental/graphite/include/mtl/MtlTypes.h @@ -34,6 +34,7 @@ namespace skgpu::mtl { using PixelFormat = unsigned int; using TextureUsage = unsigned int; using StorageMode = unsigned int; +using Handle = const void*; struct TextureInfo { uint32_t fSampleCount = 1; @@ -44,6 +45,22 @@ struct TextureInfo { PixelFormat fFormat = 0; // MTLPixelFormat fFormat = MTLPixelFormatInvalid; TextureUsage fUsage = 0; // MTLTextureUsage fUsage = MTLTextureUsageUnknown; StorageMode fStorageMode = 0; // MTLStorageMode fStorageMode = MTLStorageModeShared; + bool fFramebufferOnly = false; + + TextureInfo() = default; + TextureInfo(Handle mtlTexture); + TextureInfo(uint32_t sampleCount, + uint32_t levelCount, + PixelFormat format, + TextureUsage usage, + StorageMode storageMode, + bool framebufferOnly) + : fSampleCount(sampleCount) + , fLevelCount(levelCount) + , fFormat(format) + , fUsage(usage) + , fStorageMode(storageMode) + , fFramebufferOnly(framebufferOnly) {} }; } // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/include/private/GraphiteTypesPriv.h b/third_party/skia/experimental/graphite/include/private/GraphiteTypesPriv.h deleted file mode 100644 index e31014ade5bf..000000000000 --- a/third_party/skia/experimental/graphite/include/private/GraphiteTypesPriv.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_GraphiteTypesPriv_DEFINED -#define skgpu_GraphiteTypesPriv_DEFINED - -#include "experimental/graphite/include/GraphiteTypes.h" -#include "include/core/SkMath.h" - -namespace skgpu { - -class Buffer; - -// Use familiar type names from SkSL. -template using vec = skvx::Vec; -using float2 = vec<2>; -using float4 = vec<4>; - -template using ivec = skvx::Vec; -using int2 = ivec<2>; -using int4 = ivec<4>; - -template using uvec = skvx::Vec; -using uint2 = uvec<2>; -using uint4 = uvec<4>; - -/** - * align up to a power of 2 - */ -static inline constexpr size_t AlignTo(size_t x, size_t alignment) { - SkASSERT(alignment && SkIsPow2(alignment)); - return (x + alignment - 1) & ~(alignment - 1); -} - -/** - * Is the Texture renderable or not - */ -enum class Renderable : bool { - kNo = false, - kYes = true, -}; - -enum class DepthStencilType { - kDepthOnly, - kStencilOnly, - kDepthStencil, -}; - -/** - * What a GPU buffer will be used for - */ -enum class BufferType { - kVertex, - kIndex, - kXferCpuToGpu, - kXferGpuToCpu, - kUniform, -}; -static const int kBufferTypeCount = static_cast(BufferType::kUniform) + 1; - -/** - * When creating the memory for a resource should we use a memory type that prioritizes the - * effeciency of GPU reads even if it involves extra work to write CPU data to it. For example, we - * would want this for buffers that we cache to read the same data many times on the GPU. - */ -enum class PrioritizeGpuReads : bool { - kNo = false, - kYes = true, -}; - -/** - * Types of shader-language-specific boxed variables we can create. - */ -enum class SLType { - kVoid, - kBool, - kBool2, - kBool3, - kBool4, - kShort, - kShort2, - kShort3, - kShort4, - kUShort, - kUShort2, - kUShort3, - kUShort4, - kFloat, - kFloat2, - kFloat3, - kFloat4, - kFloat2x2, - kFloat3x3, - kFloat4x4, - kHalf, - kHalf2, - kHalf3, - kHalf4, - kHalf2x2, - kHalf3x3, - kHalf4x4, - kInt, - kInt2, - kInt3, - kInt4, - kUInt, - kUInt2, - kUInt3, - kUInt4, - kTexture2DSampler, - kTextureExternalSampler, - kTexture2DRectSampler, - kTexture2D, - kSampler, - kInput, - - kLast = kInput -}; -static const int kSLTypeCount = static_cast(SLType::kLast) + 1; - -enum class CType : unsigned { - // Any float/half, vector of floats/half, or matrices of floats/halfs are a tightly - // packed array of floats. Similarly, any bool/shorts/ints are a tightly packed array - // of int32_t. - kDefault, - // Can be used with kFloat3x3 or kHalf3x3 - kSkMatrix, - - kLast = kSkMatrix -}; - -/** - * This enum is used to specify the load operation to be used when a RenderPass begins execution - */ -enum class LoadOp : uint8_t { - kLoad, - kClear, - kDiscard, - - kLast = kDiscard -}; -inline static constexpr int kLoadOpCount = (int)(LoadOp::kLast) + 1; - -/** - * This enum is used to specify the store operation to be used when a RenderPass ends execution. - */ -enum class StoreOp : uint8_t { - kStore, - kDiscard, - - kLast = kDiscard -}; -inline static constexpr int kStoreOpCount = (int)(StoreOp::kLast) + 1; - -/** - * Geometric primitives used for drawing. - */ -enum class PrimitiveType : uint8_t { - kTriangles, - kTriangleStrip, - kPoints, -}; - -/** - * Types used to describe format of vertices in buffers. - */ -enum class VertexAttribType : uint8_t { - kFloat = 0, - kFloat2, - kFloat3, - kFloat4, - kHalf, - kHalf2, - kHalf4, - - kInt2, // vector of 2 32-bit ints - kInt3, // vector of 3 32-bit ints - kInt4, // vector of 4 32-bit ints - - kByte, // signed byte - kByte2, // vector of 2 8-bit signed bytes - kByte4, // vector of 4 8-bit signed bytes - kUByte, // unsigned byte - kUByte2, // vector of 2 8-bit unsigned bytes - kUByte4, // vector of 4 8-bit unsigned bytes - - kUByte_norm, // unsigned byte, e.g. coverage, 0 -> 0.0f, 255 -> 1.0f. - kUByte4_norm, // vector of 4 unsigned bytes, e.g. colors, 0 -> 0.0f, 255 -> 1.0f. - - kShort2, // vector of 2 16-bit shorts. - kShort4, // vector of 4 16-bit shorts. - - kUShort2, // vector of 2 unsigned shorts. 0 -> 0, 65535 -> 65535. - kUShort2_norm, // vector of 2 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. - - kInt, - kUInt, - - kUShort_norm, - - kUShort4_norm, // vector of 4 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. - - kLast = kUShort4_norm -}; -static const int kVertexAttribTypeCount = (int)(VertexAttribType::kLast) + 1; - -/** - * Wraps an enum that is used for flags, and enables masking with type safety. Example: - * - * enum class MyFlags { - * kNone = 0, - * kA = 1, - * kB = 2, - * kC = 4, - * }; - * - * SKGPU_MAKE_MASK_OPS(MyFlags) - * - * ... - * - * Mask flags = MyFlags::kA | MyFlags::kB; - * - * if (flags & MyFlags::kB) {} - * - * ... - */ -template -class Mask { -public: - SK_ALWAYS_INLINE constexpr Mask(E e) : Mask((int)e) {} - - SK_ALWAYS_INLINE constexpr operator bool() const { return fValue; } - - SK_ALWAYS_INLINE bool operator==(Mask m) const { return fValue == m.fValue; } - SK_ALWAYS_INLINE bool operator!=(Mask m) const { return fValue != m.fValue; } - - SK_ALWAYS_INLINE constexpr Mask operator|(Mask m) const { return Mask(fValue | m.fValue); } - SK_ALWAYS_INLINE constexpr Mask operator&(Mask m) const { return Mask(fValue & m.fValue); } - SK_ALWAYS_INLINE constexpr Mask operator^(Mask m) const { return Mask(fValue ^ m.fValue); } - SK_ALWAYS_INLINE constexpr Mask operator~() const { return Mask(~fValue); } - - SK_ALWAYS_INLINE Mask& operator|=(Mask m) { return *this = *this | m; } - SK_ALWAYS_INLINE Mask& operator&=(Mask m) { return *this = *this & m; } - SK_ALWAYS_INLINE Mask& operator^=(Mask m) { return *this = *this ^ m; } - -private: - SK_ALWAYS_INLINE constexpr explicit Mask(int value) : fValue(value) {} - - int fValue; -}; - -/** - * Defines functions that make it possible to use bitwise operators on an enum. - */ -#define SKGPU_MAKE_MASK_OPS(E) \ - SK_MAYBE_UNUSED constexpr skgpu::Mask operator|(E a, E b) { return skgpu::Mask(a) | b; } \ - SK_MAYBE_UNUSED constexpr skgpu::Mask operator&(E a, E b) { return skgpu::Mask(a) & b; } \ - SK_MAYBE_UNUSED constexpr skgpu::Mask operator^(E a, E b) { return skgpu::Mask(a) ^ b; } \ - SK_MAYBE_UNUSED constexpr skgpu::Mask operator~(E e) { return ~skgpu::Mask(e); } \ - -#define SKGPU_DECL_MASK_OPS_FRIENDS(E) \ - friend constexpr skgpu::Mask operator|(E, E); \ - friend constexpr skgpu::Mask operator&(E, E); \ - friend constexpr skgpu::Mask operator^(E, E); \ - friend constexpr skgpu::Mask operator~(E); \ - -/* - * Struct returned by the DrawBufferManager that can be passed into bind buffer calls on the - * CommandBuffer. - */ -struct BindBufferInfo { - Buffer* fBuffer = nullptr; - size_t fOffset = 0; -}; - -} // namespace skgpu - -#endif // skgpu_GraphiteTypesPriv_DEFINED diff --git a/third_party/skia/experimental/graphite/include/private/MtlTypesPriv.h b/third_party/skia/experimental/graphite/include/private/MtlTypesPriv.h index a6b8dcdc504e..585bc9edcbe1 100644 --- a/third_party/skia/experimental/graphite/include/private/MtlTypesPriv.h +++ b/third_party/skia/experimental/graphite/include/private/MtlTypesPriv.h @@ -44,21 +44,25 @@ struct TextureSpec { TextureSpec() : fFormat(0) , fUsage(0) - , fStorageMode(0) {} + , fStorageMode(0) + , fFramebufferOnly(false) {} TextureSpec(const TextureInfo& info) : fFormat(info.fFormat) , fUsage(info.fUsage) - , fStorageMode(info.fStorageMode) {} + , fStorageMode(info.fStorageMode) + , fFramebufferOnly(info.fFramebufferOnly) {} bool operator==(const TextureSpec& that) const { return fFormat == that.fFormat && fUsage == that.fUsage && - fStorageMode == that.fStorageMode; + fStorageMode == that.fStorageMode && + fFramebufferOnly == that.fFramebufferOnly; } PixelFormat fFormat; TextureUsage fUsage; StorageMode fStorageMode; + bool fFramebufferOnly; }; TextureInfo TextureSpecToTextureInfo(const TextureSpec& mtlSpec, diff --git a/third_party/skia/experimental/graphite/src/Attribute.h b/third_party/skia/experimental/graphite/src/Attribute.h new file mode 100644 index 000000000000..26ca90bd605f --- /dev/null +++ b/third_party/skia/experimental/graphite/src/Attribute.h @@ -0,0 +1,46 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_Attribute_DEFINED +#define skgpu_Attribute_DEFINED + +#include "experimental/graphite/src/DrawTypes.h" + +namespace skgpu { + + /** Describes a vertex or instance attribute. */ +class Attribute { +public: + constexpr Attribute() = default; + constexpr Attribute(const char* name, + VertexAttribType cpuType, + SLType gpuType) + : fName(name), fCPUType(cpuType), fGPUType(gpuType) { + SkASSERT(name && gpuType != SLType::kVoid); + } + constexpr Attribute(const Attribute&) = default; + + Attribute& operator=(const Attribute&) = default; + + constexpr bool isInitialized() const { return fGPUType != SLType::kVoid; } + + constexpr const char* name() const { return fName; } + constexpr VertexAttribType cpuType() const { return fCPUType; } + constexpr SLType gpuType() const { return fGPUType; } + + constexpr size_t size() const { return VertexAttribTypeSize(fCPUType); } + constexpr size_t sizeAlign4() const { return SkAlign4(this->size()); } + +private: + const char* fName = nullptr; + VertexAttribType fCPUType = VertexAttribType::kFloat; + SLType fGPUType = SLType::kVoid; +}; + +} // namespace skgpu + +#endif // skgpu_Attribute_DEFINED diff --git a/third_party/skia/experimental/graphite/src/BackendTexture.cpp b/third_party/skia/experimental/graphite/src/BackendTexture.cpp new file mode 100644 index 000000000000..9dd2cc5cf590 --- /dev/null +++ b/third_party/skia/experimental/graphite/src/BackendTexture.cpp @@ -0,0 +1,80 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "experimental/graphite/include/BackendTexture.h" + +namespace skgpu { + +BackendTexture::~BackendTexture() {} + +BackendTexture::BackendTexture(const BackendTexture& that) { + *this = that; +} + +BackendTexture& BackendTexture::operator=(const BackendTexture& that) { + bool valid = this->isValid(); + if (!that.isValid()) { + fInfo = {}; + return *this; + } else if (valid && this->backend() != that.backend()) { + valid = false; + } + fDimensions = that.fDimensions; + fInfo = that.fInfo; + + switch (that.backend()) { +#ifdef SK_METAL + case BackendApi::kMetal: + fMtlTexture = that.fMtlTexture; + break; +#endif + default: + SK_ABORT("Unsupport Backend"); + } + return *this; +} + +bool BackendTexture::operator==(const BackendTexture& that) const { + if (!this->isValid() || !that.isValid()) { + return false; + } + + if (fDimensions != that.fDimensions || fInfo != that.fInfo) { + return false; + } + + switch (that.backend()) { +#ifdef SK_METAL + case BackendApi::kMetal: + if (fMtlTexture != that.fMtlTexture) { + return false; + } + break; +#endif + default: + SK_ABORT("Unsupport Backend"); + } + return true; +} + +#ifdef SK_METAL +BackendTexture::BackendTexture(SkISize dimensions, mtl::Handle mtlTexture) + : fDimensions(dimensions) + , fInfo(mtl::TextureInfo(mtlTexture)) + , fMtlTexture(mtlTexture) {} + +mtl::Handle BackendTexture::getMtlTexture() const { + if (this->isValid() && this->backend() == BackendApi::kMetal) { + return fMtlTexture; + } + return nullptr; +} + +#endif + +} // namespace skgpu + diff --git a/third_party/skia/experimental/graphite/src/Buffer.h b/third_party/skia/experimental/graphite/src/Buffer.h index edb142eff736..c7d35afe7ed5 100644 --- a/third_party/skia/experimental/graphite/src/Buffer.h +++ b/third_party/skia/experimental/graphite/src/Buffer.h @@ -8,7 +8,7 @@ #ifndef skgpu_Buffer_DEFINED #define skgpu_Buffer_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "include/core/SkRefCnt.h" namespace skgpu { diff --git a/third_party/skia/experimental/graphite/src/Caps.cpp b/third_party/skia/experimental/graphite/src/Caps.cpp index 2f62fa4e0983..b7bf144c84d3 100644 --- a/third_party/skia/experimental/graphite/src/Caps.cpp +++ b/third_party/skia/experimental/graphite/src/Caps.cpp @@ -6,10 +6,19 @@ */ #include "experimental/graphite/src/Caps.h" +#include "src/sksl/SkSLUtil.h" namespace skgpu { -Caps::Caps() { +Caps::Caps() {} +Caps::~Caps() {} + +bool Caps::areColorTypeAndTextureInfoCompatible(SkColorType type, const TextureInfo& info) const { + if (type == kUnknown_SkColorType) { + return false; + } + + return this->onAreColorTypeAndTextureInfoCompatible(type, info); } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/Caps.h b/third_party/skia/experimental/graphite/src/Caps.h index 5af68baf1233..af77655e7f93 100644 --- a/third_party/skia/experimental/graphite/src/Caps.h +++ b/third_party/skia/experimental/graphite/src/Caps.h @@ -8,17 +8,23 @@ #ifndef skgpu_Caps_DEFINED #define skgpu_Caps_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "include/core/SkImageInfo.h" #include "include/core/SkRefCnt.h" +namespace SkSL { +struct ShaderCaps; +} + namespace skgpu { class TextureInfo; class Caps : public SkRefCnt { public: - ~Caps() override {} + ~Caps() override; + + const SkSL::ShaderCaps* shaderCaps() const { return fShaderCaps.get(); } virtual TextureInfo getDefaultSampledTextureInfo(SkColorType, uint32_t levelCount, @@ -29,14 +35,31 @@ class Caps : public SkRefCnt { uint32_t sampleCount, Protected) const = 0; - virtual TextureInfo getDefaultDepthStencilTextureInfo(DepthStencilType, + virtual TextureInfo getDefaultDepthStencilTextureInfo(Mask, uint32_t sampleCount, Protected) const = 0; + bool areColorTypeAndTextureInfoCompatible(SkColorType, const TextureInfo&) const; + + virtual bool isTexturable(const TextureInfo&) const = 0; + virtual bool isRenderable(const TextureInfo&) const = 0; + + int maxTextureSize() const { return fMaxTextureSize; } + + // Returns the required alignment in bytes for the offset into a uniform buffer when binding it + // to a draw. + size_t requiredUniformBufferAlignment() const { return fRequiredUniformBufferAlignment; } + protected: Caps(); + int fMaxTextureSize = 0; + size_t fRequiredUniformBufferAlignment = 0; + + std::unique_ptr fShaderCaps; + private: + virtual bool onAreColorTypeAndTextureInfoCompatible(SkColorType, const TextureInfo&) const = 0; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/CommandBuffer.cpp b/third_party/skia/experimental/graphite/src/CommandBuffer.cpp index e4771a09d669..b00f9e06e3fb 100644 --- a/third_party/skia/experimental/graphite/src/CommandBuffer.cpp +++ b/third_party/skia/experimental/graphite/src/CommandBuffer.cpp @@ -7,12 +7,12 @@ #include "experimental/graphite/src/CommandBuffer.h" -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" -#include "experimental/graphite/src/RenderPipeline.h" +#include "experimental/graphite/src/GraphicsPipeline.h" #include "src/core/SkTraceEvent.h" #include "experimental/graphite/src/Buffer.h" #include "experimental/graphite/src/Texture.h" +#include "experimental/graphite/src/TextureProxy.h" namespace skgpu { @@ -24,39 +24,53 @@ void CommandBuffer::releaseResources() { fTrackedResources.reset(); } -void CommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc) { - this->onBeginRenderPass(renderPassDesc); +void CommandBuffer::beginRenderPass(const RenderPassDesc& renderPassDesc, + sk_sp colorTexture, + sk_sp resolveTexture, + sk_sp depthStencilTexture) { + this->onBeginRenderPass(renderPassDesc, colorTexture.get(), resolveTexture.get(), + depthStencilTexture.get()); - auto& colorInfo = renderPassDesc.fColorAttachment; - if (colorInfo.fTexture) { - this->trackResource(std::move(colorInfo.fTexture)); + if (colorTexture) { + this->trackResource(std::move(colorTexture)); } - if (colorInfo.fStoreOp == StoreOp::kStore) { + if (resolveTexture) { + this->trackResource(std::move(resolveTexture)); + } + if (depthStencilTexture) { + this->trackResource(std::move(depthStencilTexture)); + } +#ifdef SK_DEBUG + if (renderPassDesc.fColorAttachment.fLoadOp == LoadOp::kClear && + (renderPassDesc.fColorAttachment.fStoreOp == StoreOp::kStore || + renderPassDesc.fColorResolveAttachment.fStoreOp == StoreOp::kStore)) { fHasWork = true; } +#endif } -void CommandBuffer::bindRenderPipeline(sk_sp renderPipeline) { - this->onBindRenderPipeline(renderPipeline.get()); - this->trackResource(std::move(renderPipeline)); - fHasWork = true; +void CommandBuffer::bindGraphicsPipeline(sk_sp graphicsPipeline) { + this->onBindGraphicsPipeline(graphicsPipeline.get()); + this->trackResource(std::move(graphicsPipeline)); } -void CommandBuffer::bindUniformBuffer(sk_sp uniformBuffer, size_t offset) { - this->onBindUniformBuffer(uniformBuffer.get(), offset); +void CommandBuffer::bindUniformBuffer(UniformSlot slot, + sk_sp uniformBuffer, + size_t offset) { + this->onBindUniformBuffer(slot, uniformBuffer.get(), offset); this->trackResource(std::move(uniformBuffer)); - fHasWork = true; } -void CommandBuffer::bindVertexBuffers(sk_sp vertexBuffer, sk_sp instanceBuffer) { - this->onBindVertexBuffers(vertexBuffer.get(), instanceBuffer.get()); +void CommandBuffer::bindVertexBuffers(sk_sp vertexBuffer, size_t vertexOffset, + sk_sp instanceBuffer, size_t instanceOffset) { + this->onBindVertexBuffers(vertexBuffer.get(), vertexOffset, + instanceBuffer.get(), instanceOffset); if (vertexBuffer) { this->trackResource(std::move(vertexBuffer)); } if (instanceBuffer) { this->trackResource(std::move(instanceBuffer)); } - fHasWork = true; } void CommandBuffer::bindIndexBuffer(sk_sp indexBuffer, size_t bufferOffset) { @@ -64,7 +78,14 @@ void CommandBuffer::bindIndexBuffer(sk_sp indexBuffer, size_t bufferOffs if (indexBuffer) { this->trackResource(std::move(indexBuffer)); } - fHasWork = true; +} + +void CommandBuffer::bindDrawBuffers(BindBufferInfo vertices, + BindBufferInfo instances, + BindBufferInfo indices) { + this->bindVertexBuffers(sk_ref_sp(vertices.fBuffer), vertices.fOffset, + sk_ref_sp(instances.fBuffer), instances.fOffset); + this->bindIndexBuffer(sk_ref_sp(indices.fBuffer), indices.fOffset); } static bool check_max_blit_width(int widthInPixels) { @@ -89,7 +110,7 @@ void CommandBuffer::copyTextureToBuffer(sk_sp texture, this->trackResource(std::move(texture)); this->trackResource(std::move(buffer)); - fHasWork = true; + SkDEBUGCODE(fHasWork = true;) } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/CommandBuffer.h b/third_party/skia/experimental/graphite/src/CommandBuffer.h index 53aa2f6d68ad..ccc0f4c647fa 100644 --- a/third_party/skia/experimental/graphite/src/CommandBuffer.h +++ b/third_party/skia/experimental/graphite/src/CommandBuffer.h @@ -8,7 +8,10 @@ #ifndef skgpu_CommandBuffer_DEFINED #define skgpu_CommandBuffer_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/include/TextureInfo.h" +#include "experimental/graphite/src/DrawTypes.h" +#include "experimental/graphite/src/DrawWriter.h" +#include "include/core/SkColor.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" #include "include/private/SkTArray.h" @@ -18,11 +21,22 @@ struct SkIRect; namespace skgpu { class Buffer; class Gpu; -class RenderPipeline; +class GraphicsPipeline; class Texture; +class TextureProxy; + +enum class UniformSlot { + // TODO: Want this? + // Meant for uniforms that change rarely to never over the course of a render pass + // kStatic, + // Meant for uniforms that are defined and used by the RenderStep portion of the pipeline shader + kRenderStep, + // Meant for uniforms that are defined and used by the paint parameters (ie SkPaint subset) + kPaint, +}; struct AttachmentDesc { - sk_sp fTexture; // the ref on this will be taken by the command buffer + TextureInfo fTextureInfo; LoadOp fLoadOp; StoreOp fStoreOp; }; @@ -32,60 +46,86 @@ struct RenderPassDesc { std::array fClearColor; AttachmentDesc fColorResolveAttachment; - AttachmentDesc fStencilDepthAttachment; - uint32_t fClearStencil; + AttachmentDesc fDepthStencilAttachment; float fClearDepth; + uint32_t fClearStencil; // TODO: // * bounds (TBD whether exact bounds vs. granular) // * input attachments }; -class CommandBuffer : public SkRefCnt { +class CommandBuffer : public SkRefCnt, private DrawDispatcher { public: ~CommandBuffer() override { this->releaseResources(); } +#ifdef SK_DEBUG bool hasWork() { return fHasWork; } +#endif void trackResource(sk_sp resource) { fTrackedResources.push_back(std::move(resource)); } - void beginRenderPass(const RenderPassDesc&); + void beginRenderPass(const RenderPassDesc&, + sk_sp colorTexture, + sk_sp resolveTexture, + sk_sp depthStencilTexture); virtual void endRenderPass() = 0; //--------------------------------------------------------------- // Can only be used within renderpasses //--------------------------------------------------------------- - void bindRenderPipeline(sk_sp renderPipeline); - void bindUniformBuffer(sk_sp, size_t bufferOffset); - void bindVertexBuffers(sk_sp vertexBuffer, sk_sp instanceBuffer); - void bindIndexBuffer(sk_sp indexBuffer, size_t bufferOffset); + void bindGraphicsPipeline(sk_sp graphicsPipeline); + void bindUniformBuffer(UniformSlot, sk_sp, size_t bufferOffset); - void draw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) { + void bindDrawBuffers(BindBufferInfo vertices, + BindBufferInfo instances, + BindBufferInfo indices) final; + + // TODO: do we want to handle multiple scissor rects and viewports? + void setScissor(unsigned int left, unsigned int top, unsigned int width, unsigned int height) { + this->onSetScissor(left, top, width, height); + } + + void setViewport(float x, float y, float width, float height, + float minDepth = 0, float maxDepth = 1) { + this->onSetViewport(x, y, width, height, minDepth, maxDepth); + } + + void setBlendConstants(std::array blendConstants) { + this->onSetBlendConstants(blendConstants); + } + + void draw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) final { this->onDraw(type, baseVertex, vertexCount); - fHasWork = true; + SkDEBUGCODE(fHasWork = true;) } void drawIndexed(PrimitiveType type, unsigned int baseIndex, unsigned int indexCount, - unsigned int baseVertex) { + unsigned int baseVertex) final { this->onDrawIndexed(type, baseIndex, indexCount, baseVertex); - fHasWork = true; + SkDEBUGCODE(fHasWork = true;) } void drawInstanced(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount, - unsigned int baseInstance, unsigned int instanceCount) { + unsigned int baseInstance, unsigned int instanceCount) final { this->onDrawInstanced(type, baseVertex, vertexCount, baseInstance, instanceCount); - fHasWork = true; + SkDEBUGCODE(fHasWork = true;) } void drawIndexedInstanced(PrimitiveType type, unsigned int baseIndex, unsigned int indexCount, unsigned int baseVertex, unsigned int baseInstance, - unsigned int instanceCount) { + unsigned int instanceCount) final { this->onDrawIndexedInstanced(type, baseIndex, indexCount, baseVertex, baseInstance, instanceCount); - fHasWork = true; + SkDEBUGCODE(fHasWork = true;) } + // When using a DrawWriter dispatching directly to a CommandBuffer, binding of pipelines and + // uniforms must be coordinated with forNewPipeline() and forDynamicStateChange(). The direct + // draw calls and vertex buffer binding calls on CB should not be intermingled with the writer. + DrawDispatcher* asDrawDispatcher() { return this; } + //--------------------------------------------------------------- // Can only be used outside renderpasses //--------------------------------------------------------------- @@ -101,13 +141,30 @@ class CommandBuffer : public SkRefCnt { private: void releaseResources(); - virtual void onBeginRenderPass(const RenderPassDesc&) = 0; + // TODO: Once all buffer use goes through the DrawBufferManager, we likely do not need to track + // refs every time a buffer is bound, since the DBM will transfer ownership for any used buffer + // to the CommandBuffer. + void bindVertexBuffers(sk_sp vertexBuffer, size_t vertexOffset, + sk_sp instanceBuffer, size_t instanceOffset); + void bindIndexBuffer(sk_sp indexBuffer, size_t bufferOffset); + + virtual void onBeginRenderPass(const RenderPassDesc&, + const Texture* colorTexture, + const Texture* resolveTexture, + const Texture* depthStencilTexture) = 0; - virtual void onBindRenderPipeline(const RenderPipeline*) = 0; - virtual void onBindUniformBuffer(const Buffer*, size_t bufferOffset) = 0; - virtual void onBindVertexBuffers(const Buffer* vertexBuffer, const Buffer* instanceBuffer) = 0; + virtual void onBindGraphicsPipeline(const GraphicsPipeline*) = 0; + virtual void onBindUniformBuffer(UniformSlot, const Buffer*, size_t bufferOffset) = 0; + virtual void onBindVertexBuffers(const Buffer* vertexBuffer, size_t vertexOffset, + const Buffer* instanceBuffer, size_t instanceOffset) = 0; virtual void onBindIndexBuffer(const Buffer* indexBuffer, size_t bufferOffset) = 0; + virtual void onSetScissor(unsigned int left, unsigned int top, + unsigned int width, unsigned int height) = 0; + virtual void onSetViewport(float x, float y, float width, float height, + float minDepth, float maxDepth) = 0; + virtual void onSetBlendConstants(std::array blendConstants) = 0; + virtual void onDraw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) = 0; virtual void onDrawIndexed(PrimitiveType type, unsigned int baseIndex, unsigned int indexCount, unsigned int baseVertex) = 0; @@ -124,7 +181,9 @@ class CommandBuffer : public SkRefCnt { size_t bufferOffset, size_t bufferRowBytes) = 0; +#ifdef SK_DEBUG bool fHasWork = false; +#endif inline static constexpr int kInitialTrackedResourcesCount = 32; SkSTArray> fTrackedResources; diff --git a/third_party/skia/experimental/graphite/src/Context.cpp b/third_party/skia/experimental/graphite/src/Context.cpp index 3eb6fa2e7d28..14323e803247 100644 --- a/third_party/skia/experimental/graphite/src/Context.cpp +++ b/third_party/skia/experimental/graphite/src/Context.cpp @@ -7,13 +7,16 @@ #include "experimental/graphite/include/Context.h" +#include "experimental/graphite/include/BackendTexture.h" +#include "experimental/graphite/include/Recorder.h" +#include "experimental/graphite/include/Recording.h" +#include "experimental/graphite/include/TextureInfo.h" #include "experimental/graphite/src/Caps.h" #include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/ContextUtils.h" #include "experimental/graphite/src/Gpu.h" -#include "experimental/graphite/src/ProgramCache.h" -#include "experimental/graphite/src/Recorder.h" -#include "experimental/graphite/src/Recording.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" +#include "experimental/graphite/src/Renderer.h" #ifdef SK_METAL #include "experimental/graphite/src/mtl/MtlTrampoline.h" @@ -21,7 +24,7 @@ namespace skgpu { -Context::Context(sk_sp gpu) : fGpu(std::move(gpu)) {} +Context::Context(sk_sp gpu, BackendApi backend) : fGpu(std::move(gpu)), fBackend(backend) {} Context::~Context() {} #ifdef SK_METAL @@ -31,12 +34,12 @@ sk_sp Context::MakeMetal(const mtl::BackendContext& backendContext) { return nullptr; } - return sk_sp(new Context(std::move(gpu))); + return sk_sp(new Context(std::move(gpu), BackendApi::kMetal)); } #endif sk_sp Context::createRecorder() { - return sk_make_sp(sk_ref_sp(this)); + return sk_sp(new Recorder(sk_ref_sp(this))); } void Context::insertRecording(std::unique_ptr recording) { @@ -55,25 +58,41 @@ void Context::submit(SyncToCpu syncToCpu) { } void Context::preCompile(const PaintCombo& paintCombo) { - ProgramCache cache; - for (auto bm: paintCombo.fBlendModes) { for (auto& shaderCombo: paintCombo.fShaders) { for (auto shaderType: shaderCombo.fTypes) { for (auto tm: shaderCombo.fTileModes) { Combination c {shaderType, tm, bm}; - sk_sp pi = cache.findOrCreateProgram(c); - // TODO: this should be getSkSL - // TODO: it should also return the uniform information - std::string msl = pi->getMSL(); - // TODO: compile the MSL and store the result back into the ProgramInfo - // To do this we will need the path rendering options from Chris and - // a stock set of RenderPasses. + GraphicsPipelineDesc desc; + + for (const Renderer* r : {&Renderer::StencilAndFillPath()}) { + for (auto&& s : r->steps()) { + desc.setProgram(s, c); + // TODO: Combine with renderpass description set to generate full + // GraphicsPipeline and MSL program. Cache that compiled pipeline on + // the resource provider in a map from desc -> pipeline so that any + // later desc created from equivalent RenderStep + Combination get it. + } + } } } } } } +BackendTexture Context::createBackendTexture(SkISize dimensions, const TextureInfo& info) { + if (!info.isValid() || info.backend() != this->backend()) { + return {}; + } + return fGpu->createBackendTexture(dimensions, info); +} + +void Context::deleteBackendTexture(BackendTexture& texture) { + if (!texture.isValid() || texture.backend() != this->backend()) { + return; + } + fGpu->deleteBackendTexture(texture); +} + } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/ContextUtils.cpp b/third_party/skia/experimental/graphite/src/ContextUtils.cpp index f108953a1aca..ccbb048a074b 100644 --- a/third_party/skia/experimental/graphite/src/ContextUtils.cpp +++ b/third_party/skia/experimental/graphite/src/ContextUtils.cpp @@ -8,8 +8,9 @@ #include "experimental/graphite/src/ContextUtils.h" #include +#include "experimental/graphite/src/DrawList.h" // TODO: split PaintParams out into their own header +#include "experimental/graphite/src/DrawTypes.h" #include "experimental/graphite/src/Uniform.h" -#include "experimental/graphite/src/UniformCache.h" #include "experimental/graphite/src/UniformManager.h" #include "include/core/SkPaint.h" @@ -26,8 +27,8 @@ static constexpr int kMaxStops = 4; // 2 radii static constexpr int kNumGradientUniforms = 6; static constexpr Uniform kGradientUniforms[kNumGradientUniforms] { - {"colors", SLType::kHalf4 , kMaxStops }, - {"offsets", SLType::kFloat, kMaxStops }, + {"colors", SLType::kHalf4 , kMaxStops }, + {"offsets", SLType::kFloat, kMaxStops }, {"point0", SLType::kFloat2 }, {"point1", SLType::kFloat2 }, {"radius0", SLType::kFloat }, @@ -39,7 +40,31 @@ static constexpr Uniform kSolidUniforms[kNumSolidUniforms] { {"color", SLType::kFloat4 } }; -sk_sp make_gradient_uniform_data_common(void* srcs[kNumGradientUniforms]) { +static const char* kGradientSkSL = + // TODO: This should use local coords + "float2 pos = sk_FragCoord.xy;\n" + "float2 delta = point1 - point0;\n" + "float2 pt = pos - point0;\n" + "float t = dot(pt, delta) / dot(delta, delta);\n" + "float4 result = colors[0];\n" + "result = mix(result, colors[1],\n" + " clamp((t-offsets[0])/(offsets[1]-offsets[0]),\n" + " 0, 1));\n" + "result = mix(result, colors[2],\n" + " clamp((t-offsets[1])/(offsets[2]-offsets[1]),\n" + " 0, 1));\n" + "result = mix(result, colors[3],\n" + " clamp((t-offsets[2])/(offsets[3]-offsets[2]),\n" + " 0, 1));\n" + "outColor = half4(result);\n"; + +static const char* kSolidColorSkSL = " outColor = half4(color);\n"; + +// TODO: kNone is for depth-only draws, so should actually have a fragment output type +// that only defines a [[depth]] attribute but no color calculation. +static const char* kNoneSkSL = "outColor = half4(0.0, 0.0, 1.0, 1.0);\n"; + +sk_sp make_gradient_uniform_data_common(const void* srcs[kNumGradientUniforms]) { UniformManager mgr(Layout::kMetal); // TODO: Given that, for the sprint, we always know the uniforms we could cache 'dataSize' @@ -62,7 +87,7 @@ sk_sp make_linear_gradient_uniform_data(SkPoint startPoint, SkColor4f colors[kMaxStops], float offsets[kMaxStops]) { float unusedRadii[2] = { 0.0f, 0.0f }; - void* srcs[kNumGradientUniforms] = { + const void* srcs[kNumGradientUniforms] = { colors, offsets, &startPoint, @@ -81,7 +106,7 @@ sk_sp make_radial_gradient_uniform_data(SkPoint point, SkPoint unusedPoint = {0.0f, 0.0f}; float unusedRadius = 0.0f; - void* srcs[kNumGradientUniforms] = { + const void* srcs[kNumGradientUniforms] = { colors, offsets, &point, @@ -99,7 +124,7 @@ sk_sp make_sweep_gradient_uniform_data(SkPoint point, SkPoint unusedPoint = {0.0f, 0.0f}; float unusedRadii[2] = {0.0f, 0.0f}; - void* srcs[kNumGradientUniforms] = { + const void* srcs[kNumGradientUniforms] = { colors, offsets, &point, @@ -118,7 +143,7 @@ sk_sp make_conical_gradient_uniform_data(SkPoint point0, SkColor4f colors[kMaxStops], float offsets[kMaxStops]) { - void* srcs[kNumGradientUniforms] = { + const void* srcs[kNumGradientUniforms] = { colors, offsets, &point0, @@ -158,7 +183,7 @@ sk_sp make_solid_uniform_data(SkColor4f color) { sk_sp result = UniformData::Make(kNumSolidUniforms, kSolidUniforms, dataSize); - void* srcs[kNumSolidUniforms] = { &color }; + const void* srcs[kNumSolidUniforms] = { &color }; mgr.writeUniforms(SkSpan(kSolidUniforms, kNumSolidUniforms), srcs, result->offsets(), result->data()); @@ -177,11 +202,11 @@ sk_sp UniformData::Make(int count, return sk_sp(new UniformData(count, uniforms, offsets, data, dataSize)); } -std::tuple> ExtractCombo(UniformCache* cache, const SkPaint& p) { +std::tuple> ExtractCombo(const PaintParams& p) { Combination result; sk_sp uniforms; - if (auto s = p.getShader()) { + if (auto s = p.shader()) { SkColor colors[kMaxStops]; SkColor4f color4fs[kMaxStops]; float offsets[kMaxStops]; @@ -247,80 +272,55 @@ std::tuple> ExtractCombo(UniformCache* cache, co offsets); break; case SkShader::GradientType::kColor_GradientType: + // TODO: The solid color gradient type should use its color, not + // the paint color case SkShader::GradientType::kNone_GradientType: default: - result.fShaderType = ShaderCombo::ShaderType::kNone; - result.fTileMode = SkTileMode::kRepeat; + result.fShaderType = ShaderCombo::ShaderType::kSolidColor; + result.fTileMode = SkTileMode::kClamp; - uniforms = make_solid_uniform_data(p.getColor4f()); + uniforms = make_solid_uniform_data(p.color()); break; } } else { // Solid colored paint - result.fShaderType = ShaderCombo::ShaderType::kNone; - result.fTileMode = SkTileMode::kRepeat; + result.fShaderType = ShaderCombo::ShaderType::kSolidColor; + result.fTileMode = SkTileMode::kClamp; - uniforms = make_solid_uniform_data(p.getColor4f()); + uniforms = make_solid_uniform_data(p.color()); } - result.fBlendMode = p.getBlendMode_or(SkBlendMode::kSrcOver); - - sk_sp trueUD = cache->findOrCreate(std::move(uniforms)); - return { result, std::move(trueUD) }; + result.fBlendMode = p.blendMode(); + return { result, std::move(uniforms) }; } -namespace { - -// TODO: use a SkSpan for the parameters -std::string emit_MSL_uniform_struct(const Uniform *uniforms, int numUniforms) { - std::string result; - - result.append("struct FragmentUniforms {\n"); - for (int i = 0; i < numUniforms; ++i) { - // TODO: this is sufficient for the sprint but should be changed to use SkSL's - // machinery - switch (uniforms[i].type()) { - case SLType::kFloat4: - result.append("vector_float4"); - break; - case SLType::kFloat2: - result.append("vector_float2"); - break; - case SLType::kFloat: - result.append("float"); - break; - case SLType::kHalf4: - result.append("vector_half4"); - break; - default: - SkASSERT(0); - } - - result.append(" "); - result.append(uniforms[i].name()); - if (uniforms[i].count()) { - result.append("["); - result.append(std::to_string(uniforms[i].count())); - result.append("]"); - } - result.append(";\n"); +SkSpan GetUniforms(ShaderCombo::ShaderType shaderType) { + switch (shaderType) { + case ShaderCombo::ShaderType::kNone: + return {nullptr, 0}; + case ShaderCombo::ShaderType::kLinearGradient: + return SkMakeSpan(kGradientUniforms, kNumGradientUniforms); + case ShaderCombo::ShaderType::kRadialGradient: + case ShaderCombo::ShaderType::kSweepGradient: + case ShaderCombo::ShaderType::kConicalGradient: + case ShaderCombo::ShaderType::kSolidColor: + default: + return SkMakeSpan(kSolidUniforms, kNumSolidUniforms); } - result.append("};\n"); - return result; } -} // anonymous namespace - -std::string GetMSLUniformStruct(ShaderCombo::ShaderType shaderType) { +const char* GetShaderSkSL(ShaderCombo::ShaderType shaderType) { switch (shaderType) { + case ShaderCombo::ShaderType::kNone: + return kNoneSkSL; case ShaderCombo::ShaderType::kLinearGradient: + return kGradientSkSL; case ShaderCombo::ShaderType::kRadialGradient: case ShaderCombo::ShaderType::kSweepGradient: case ShaderCombo::ShaderType::kConicalGradient: - return emit_MSL_uniform_struct(kGradientUniforms, kNumGradientUniforms); - case ShaderCombo::ShaderType::kNone: + case ShaderCombo::ShaderType::kSolidColor: default: - return emit_MSL_uniform_struct(kSolidUniforms, kNumSolidUniforms); + return kSolidColorSkSL; } } diff --git a/third_party/skia/experimental/graphite/src/ContextUtils.h b/third_party/skia/experimental/graphite/src/ContextUtils.h index 70e883e7021b..b5c863e34cff 100644 --- a/third_party/skia/experimental/graphite/src/ContextUtils.h +++ b/third_party/skia/experimental/graphite/src/ContextUtils.h @@ -11,17 +11,16 @@ #include "experimental/graphite/include/Context.h" #include "include/core/SkBlendMode.h" #include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" #include "include/core/SkTileMode.h" -class SkPaint; - namespace skgpu { +class PaintParams; class Uniform; -class UniformCache; // A single, fully specified combination resulting from a PaintCombo (i.e., it corresponds to a -// specific SkPaint) +// specific skgpu::PaintParams object (a subset of SkPaint)) struct Combination { bool operator==(const Combination& other) const { return fShaderType == other.fShaderType && @@ -29,14 +28,21 @@ struct Combination { fBlendMode == other.fBlendMode; } + uint32_t key() const { + return (static_cast(fShaderType) << 9) | // 6 values -> 3 bits + (static_cast(fTileMode) << 7) | // 4 values -> 2 bits + (static_cast(fBlendMode) << 2); // 29 values -> 5 bits + } + ShaderCombo::ShaderType fShaderType = ShaderCombo::ShaderType::kNone; - SkTileMode fTileMode = SkTileMode::kRepeat; + // Tile mode and blend mode are ignored if shader type is kNone; tile mode is ignored if + // shader type is kSolidColor. + SkTileMode fTileMode = SkTileMode::kClamp; SkBlendMode fBlendMode = SkBlendMode::kSrc; }; class UniformData : public SkRefCnt { public: - static constexpr uint32_t kInvalidUniformID = 0; // TODO: should we require a name (e.g., "gradient_uniforms") for each uniform block so // we can better name the Metal FS uniform struct? @@ -50,11 +56,6 @@ class UniformData : public SkRefCnt { delete [] fData; } - void setID(uint32_t id) { // TODO: maybe make privileged for only UniformCache - SkASSERT(fID == kInvalidUniformID); - fID = id; - } - uint32_t id() const { return fID; } int count() const { return fCount; } const Uniform* uniforms() const { return fUniforms; } uint32_t* offsets() { return fOffsets; } @@ -78,7 +79,6 @@ class UniformData : public SkRefCnt { , fDataSize(dataSize) { } - uint32_t fID = kInvalidUniformID; const int fCount; const Uniform* fUniforms; uint32_t* fOffsets; // offset of each uniform in 'fData' @@ -86,8 +86,14 @@ class UniformData : public SkRefCnt { const size_t fDataSize; }; -std::tuple> ExtractCombo(UniformCache*, const SkPaint&); -std::string GetMSLUniformStruct(ShaderCombo::ShaderType); +std::tuple> ExtractCombo(const PaintParams&); +SkSpan GetUniforms(ShaderCombo::ShaderType); + +// TODO: Temporary way to get at SkSL snippet for handling the given shader type, which will be +// embedded in the fragment function's body. It has access to the vertex output via a "interpolated" +// variable, and must have a statement that writes to a float4 "out.color". Its uniforms (as defined +// by GetUniforms(type)) are available as a variable named "uniforms". +const char* GetShaderSkSL(ShaderCombo::ShaderType); } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/CopyTask.cpp b/third_party/skia/experimental/graphite/src/CopyTask.cpp index c5af84c5534a..4da0bc883561 100644 --- a/third_party/skia/experimental/graphite/src/CopyTask.cpp +++ b/third_party/skia/experimental/graphite/src/CopyTask.cpp @@ -39,7 +39,7 @@ CopyTextureToBufferTask::CopyTextureToBufferTask(sk_sp texture, CopyTextureToBufferTask::~CopyTextureToBufferTask() {} -void CopyTextureToBufferTask::execute(CommandBuffer* commandBuffer) { +void CopyTextureToBufferTask::addCommands(ResourceProvider*, CommandBuffer* commandBuffer) { commandBuffer->copyTextureToBuffer(std::move(fTexture), fSrcRect, std::move(fBuffer), diff --git a/third_party/skia/experimental/graphite/src/CopyTask.h b/third_party/skia/experimental/graphite/src/CopyTask.h index 06a9dc0e360d..760dd14fe16b 100644 --- a/third_party/skia/experimental/graphite/src/CopyTask.h +++ b/third_party/skia/experimental/graphite/src/CopyTask.h @@ -28,7 +28,7 @@ class CopyTextureToBufferTask final : public Task { ~CopyTextureToBufferTask() override; - void execute(CommandBuffer*) override; + void addCommands(ResourceProvider*, CommandBuffer*) override; private: CopyTextureToBufferTask(sk_sp, diff --git a/third_party/skia/experimental/graphite/src/Device.cpp b/third_party/skia/experimental/graphite/src/Device.cpp index 76d1d1afeb34..f2a0cfd7e3aa 100644 --- a/third_party/skia/experimental/graphite/src/Device.cpp +++ b/third_party/skia/experimental/graphite/src/Device.cpp @@ -8,6 +8,8 @@ #include "experimental/graphite/src/Device.h" #include "experimental/graphite/include/Context.h" +#include "experimental/graphite/include/Recorder.h" +#include "experimental/graphite/include/Recording.h" #include "experimental/graphite/include/SkStuff.h" #include "experimental/graphite/src/Buffer.h" #include "experimental/graphite/src/Caps.h" @@ -16,8 +18,6 @@ #include "experimental/graphite/src/DrawContext.h" #include "experimental/graphite/src/DrawList.h" #include "experimental/graphite/src/Gpu.h" -#include "experimental/graphite/src/Recorder.h" -#include "experimental/graphite/src/Recording.h" #include "experimental/graphite/src/ResourceProvider.h" #include "experimental/graphite/src/Texture.h" #include "experimental/graphite/src/TextureProxy.h" @@ -143,6 +143,12 @@ SkIRect Device::onDevClipBounds() const { } void Device::drawPaint(const SkPaint& paint) { + // TODO: check paint params as well + if (this->clipIsWideOpen()) { + // do fullscreen clear + fDC->clear(paint.getColor4f()); + return; + } SkRect deviceBounds = SkRect::Make(this->devClipBounds()); // TODO: Should be able to get the inverse from the matrix cache SkM44 devToLocal; @@ -272,14 +278,10 @@ void Device::drawShape(const Shape& shape, // A draw's order always depends on the clips that must be drawn before it order.dependsOnPaintersOrder(clipOrder); - auto blendMode = paint.asBlendMode(); - PaintParams shading{paint.getColor4f(), - blendMode.has_value() ? *blendMode : SkBlendMode::kSrcOver, - paint.refShader()}; - // If a draw is not opaque, it must be drawn after the most recent draw it intersects with in // order to blend correctly. We always query the most recent draw (even when opaque) because it // also lets Device easily track whether or not there are any overlapping draws. + PaintParams shading{paint}; const bool opaque = is_opaque(shading); CompressedPaintersOrder prevDraw = fColorDepthBoundsManager->getMostRecentDraw(clip.drawBounds()); diff --git a/third_party/skia/experimental/graphite/src/Device.h b/third_party/skia/experimental/graphite/src/Device.h index 319228c0144c..b2a22c80dc70 100644 --- a/third_party/skia/experimental/graphite/src/Device.h +++ b/third_party/skia/experimental/graphite/src/Device.h @@ -10,8 +10,8 @@ #include "src/core/SkDevice.h" -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" #include "experimental/graphite/src/DrawOrder.h" +#include "experimental/graphite/src/EnumBitMask.h" #include "experimental/graphite/src/geom/Rect.h" class SkStrokeRec; @@ -40,7 +40,7 @@ class Device final : public SkBaseDevice { void onRestore() override {} bool onClipIsAA() const override { return false; } - bool onClipIsWideOpen() const override { return false; } + bool onClipIsWideOpen() const override { return true; } ClipType onGetClipType() const override { return ClipType::kRect; } SkIRect onDevClipBounds() const override; @@ -96,11 +96,11 @@ class Device final : public SkBaseDevice { SkCanvas::SrcRectConstraint) override {} void drawImageLattice(const SkImage*, const SkCanvas::Lattice&, const SkRect& dst, SkFilterMode, const SkPaint&) override {} - void drawAtlas(const SkRSXform[], const SkRect[], const SkColor[], int count, SkBlendMode, + void drawAtlas(const SkRSXform[], const SkRect[], const SkColor[], int count, sk_sp, const SkPaint&) override {} void drawDrawable(SkDrawable*, const SkMatrix*, SkCanvas*) override {} - void drawVertices(const SkVertices*, SkBlendMode, const SkPaint&) override {} + void drawVertices(const SkVertices*, sk_sp, const SkPaint&) override {} void drawShadow(const SkPath&, const SkDrawShadowRec&) override {} void onDrawGlyphRunList(const SkGlyphRunList& glyphRunList, const SkPaint& paint) override {} diff --git a/third_party/skia/experimental/graphite/src/DrawBufferManager.cpp b/third_party/skia/experimental/graphite/src/DrawBufferManager.cpp index b94ef105a4ac..ca344b4fd8ac 100644 --- a/third_party/skia/experimental/graphite/src/DrawBufferManager.cpp +++ b/third_party/skia/experimental/graphite/src/DrawBufferManager.cpp @@ -13,11 +13,22 @@ namespace skgpu { +namespace { + // TODO: Tune these values on real world data static constexpr size_t kVertexBufferSize = 2 << 10; static constexpr size_t kIndexBufferSize = 2 << 10; static constexpr size_t kUniformBufferSize = 2 << 10; +void* map_offset(BindBufferInfo binding) { + // DrawBufferManager owns the Buffer, and this is only ever called when we know + // it's okay to remove 'const' from the Buffer* + return SkTAddOffset(const_cast(binding.fBuffer)->map(), + static_cast(binding.fOffset)); +} + +} // anonymous namespace + DrawBufferManager::DrawBufferManager(ResourceProvider* resourceProvider, size_t uniformStartAlignment) : fResourceProvider(resourceProvider) @@ -29,7 +40,7 @@ static bool can_fit(size_t requestedSize, Buffer* buffer, size_t currentOffset, size_t alignment) { - size_t startOffset = AlignTo(currentOffset, alignment); + size_t startOffset = SkAlignTo(currentOffset, alignment); return requestedSize <= (buffer->size() - startOffset); } @@ -59,7 +70,7 @@ std::tuple DrawBufferManager::getVertexWriter(size bindInfo.fBuffer = fCurrentVertexBuffer.get(); bindInfo.fOffset = fVertexOffset; fVertexOffset += requiredBytes; - return {VertexWriter(fCurrentVertexBuffer->map()), bindInfo}; + return {VertexWriter(map_offset(bindInfo)), bindInfo}; } std::tuple DrawBufferManager::getIndexWriter(size_t requiredBytes) { @@ -88,7 +99,7 @@ std::tuple DrawBufferManager::getIndexWriter(size_t bindInfo.fBuffer = fCurrentIndexBuffer.get(); bindInfo.fOffset = fIndexOffset; fIndexOffset += requiredBytes; - return {IndexWriter(fCurrentIndexBuffer->map()), bindInfo}; + return {IndexWriter(map_offset(bindInfo)), bindInfo}; } std::tuple DrawBufferManager::getUniformWriter( @@ -117,12 +128,12 @@ std::tuple DrawBufferManager::getUniformWriter( return {UniformWriter(), BindBufferInfo()}; } } - fUniformOffset = AlignTo(fUniformOffset, fUniformStartAlignment); + fUniformOffset = SkAlignTo(fUniformOffset, fUniformStartAlignment); BindBufferInfo bindInfo; bindInfo.fBuffer = fCurrentUniformBuffer.get(); bindInfo.fOffset = fUniformOffset; fUniformOffset += requiredBytes; - return {UniformWriter(fCurrentUniformBuffer->map()), bindInfo}; + return {UniformWriter(map_offset(bindInfo)), bindInfo}; } void DrawBufferManager::transferToCommandBuffer(CommandBuffer* commandBuffer) { @@ -134,4 +145,3 @@ void DrawBufferManager::transferToCommandBuffer(CommandBuffer* commandBuffer) { } } // namespace skgpu - diff --git a/third_party/skia/experimental/graphite/src/DrawBufferManager.h b/third_party/skia/experimental/graphite/src/DrawBufferManager.h index d617be901fec..cd3aa1f09fc8 100644 --- a/third_party/skia/experimental/graphite/src/DrawBufferManager.h +++ b/third_party/skia/experimental/graphite/src/DrawBufferManager.h @@ -8,7 +8,7 @@ #ifndef skgpu_DrawBufferManager_DEFINED #define skgpu_DrawBufferManager_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/DrawTypes.h" #include "include/core/SkRefCnt.h" #include "src/gpu/BufferWriter.h" diff --git a/third_party/skia/experimental/graphite/src/DrawContext.cpp b/third_party/skia/experimental/graphite/src/DrawContext.cpp index 7461dbd6447b..fba406c66902 100644 --- a/third_party/skia/experimental/graphite/src/DrawContext.cpp +++ b/third_party/skia/experimental/graphite/src/DrawContext.cpp @@ -7,9 +7,18 @@ #include "experimental/graphite/src/DrawContext.h" +#include "include/private/SkColorData.h" + +#include "experimental/graphite/include/Context.h" +#include "experimental/graphite/include/Recorder.h" +#include "experimental/graphite/src/Caps.h" +#include "experimental/graphite/src/CommandBuffer.h" +#include "experimental/graphite/src/ContextPriv.h" #include "experimental/graphite/src/DrawList.h" #include "experimental/graphite/src/DrawPass.h" +#include "experimental/graphite/src/Gpu.h" #include "experimental/graphite/src/RenderPassTask.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "experimental/graphite/src/TextureProxy.h" #include "experimental/graphite/src/geom/BoundsManager.h" #include "experimental/graphite/src/geom/Shape.h" @@ -37,15 +46,13 @@ DrawContext::DrawContext(sk_sp target, const SkImageInfo& ii) , fImageInfo(ii) , fPendingDraws(std::make_unique()) { // TBD - Will probably want DrawLists (and its internal commands) to come from an arena - // that the SDC manages. + // that the DC manages. } DrawContext::~DrawContext() { - // If the SDC is destroyed and there are pending commands, they won't be drawn. Maybe that's ok - // but for now consider it a bug for not calling snapDrawTask() and snapRenderPassTask() - // TODO: determine why these asserts are firing on the GMs and re-enable -// SkASSERT(fPendingDraws->drawCount() == 0); -// SkASSERT(fDrawPasses.empty()); + // If the DC is destroyed and there are pending commands, they won't be drawn. + fPendingDraws.reset(); + fDrawPasses.clear(); } void DrawContext::stencilAndFillPath(const Transform& localToDevice, @@ -76,14 +83,29 @@ void DrawContext::strokePath(const Transform& localToDevice, fPendingDraws->strokePath(localToDevice, shape, stroke, clip, order, paint); } +void DrawContext::clear(const SkColor4f& clearColor) { + fPendingLoadOp = LoadOp::kClear; + SkPMColor4f pmColor = clearColor.premul(); + fPendingClearColor = pmColor.array(); + + // a fullscreen clear will overwrite anything that came before, so start a new DrawList + // and clear any drawpasses that haven't been snapped yet + fPendingDraws = std::make_unique(); + fDrawPasses.clear(); +} + void DrawContext::snapDrawPass(Recorder* recorder, const BoundsManager* occlusionCuller) { if (fPendingDraws->drawCount() == 0) { return; } - auto pass = DrawPass::Make(recorder, std::move(fPendingDraws), fTarget, occlusionCuller); + auto pass = DrawPass::Make(recorder, std::move(fPendingDraws), fTarget, + std::make_pair(fPendingLoadOp, fPendingStoreOp), fPendingClearColor, + occlusionCuller); fDrawPasses.push_back(std::move(pass)); fPendingDraws = std::make_unique(); + fPendingLoadOp = LoadOp::kLoad; + fPendingStoreOp = StoreOp::kStore; } sk_sp DrawContext::snapRenderPassTask(Recorder* recorder, @@ -93,7 +115,29 @@ sk_sp DrawContext::snapRenderPassTask(Recorder* recorder, return nullptr; } - return RenderPassTask::Make(std::move(fDrawPasses)); + // TODO: At this point we would determine all the targets used by the drawPasses, + // build up the union of them and store them in the RenderPassDesc. However, for + // the moment we should have only one drawPass. + SkASSERT(fDrawPasses.size() == 1); + RenderPassDesc desc; + auto& drawPass = fDrawPasses[0]; + desc.fColorAttachment.fTextureInfo = drawPass->target()->textureInfo(); + std::tie(desc.fColorAttachment.fLoadOp, desc.fColorAttachment.fStoreOp) = drawPass->ops(); + desc.fClearColor = drawPass->clearColor(); + + if (drawPass->depthStencilFlags() != DepthStencilFlags::kNone) { + const Caps* caps = recorder->context()->priv().gpu()->caps(); + desc.fDepthStencilAttachment.fTextureInfo = + caps->getDefaultDepthStencilTextureInfo(drawPass->depthStencilFlags(), + 1 /*sampleCount*/, // TODO: MSAA + Protected::kNo); + // TODO: handle clears + desc.fDepthStencilAttachment.fLoadOp = LoadOp::kDiscard; + desc.fDepthStencilAttachment.fStoreOp = StoreOp::kDiscard; + } + + sk_sp targetProxy = sk_ref_sp(fDrawPasses[0]->target()); + return RenderPassTask::Make(std::move(fDrawPasses), desc, std::move(targetProxy)); } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/DrawContext.h b/third_party/skia/experimental/graphite/src/DrawContext.h index fd914d6b3204..2ac3c3fc12e3 100644 --- a/third_party/skia/experimental/graphite/src/DrawContext.h +++ b/third_party/skia/experimental/graphite/src/DrawContext.h @@ -13,6 +13,7 @@ #include "experimental/graphite/src/DrawList.h" #include "experimental/graphite/src/DrawOrder.h" +#include "experimental/graphite/src/DrawTypes.h" #include @@ -48,6 +49,8 @@ class DrawContext final : public SkRefCnt { // TODO: need color/depth clearing functions (so DCL will probably need those too) + void clear(const SkColor4f& clearColor); + void stencilAndFillPath(const Transform& localToDevice, const Shape& shape, const Clip& clip, @@ -98,6 +101,10 @@ class DrawContext final : public SkRefCnt { // Stores the most immediately recorded draws into the SDC's surface. This list is mutable and // can be appended to, or have its commands rewritten if they are inlined into a parent SDC. std::unique_ptr fPendingDraws; + // Load and store information for the current pending draws. + LoadOp fPendingLoadOp = LoadOp::kLoad; + StoreOp fPendingStoreOp = StoreOp::kStore; + std::array fPendingClearColor = { 0, 0, 0, 0 }; // Stores previously snapped DrawPasses of this SDC, or inlined child SDCs whose content // couldn't have been copied directly to fPendingDraws. While each DrawPass is immutable, the diff --git a/third_party/skia/experimental/graphite/src/DrawList.cpp b/third_party/skia/experimental/graphite/src/DrawList.cpp index 0d0beea4678d..e69928bacdec 100644 --- a/third_party/skia/experimental/graphite/src/DrawList.cpp +++ b/third_party/skia/experimental/graphite/src/DrawList.cpp @@ -18,21 +18,16 @@ PaintParams::PaintParams(const SkColor4f& color, sk_sp shader) : fColor(color) , fBlendMode(blendMode) - , fShader(std::move(shader)) { -} -PaintParams::PaintParams(const PaintParams& other) - : fColor(other.fColor) - , fBlendMode(other.fBlendMode) - , fShader(other.fShader) { -} -PaintParams::~PaintParams() {} + , fShader(std::move(shader)) {} -PaintParams& PaintParams::operator=(const PaintParams& other) { - fColor = other.fColor; - fBlendMode = other.fBlendMode; - fShader = other.fShader; - return *this; -} +PaintParams::PaintParams(const SkPaint& paint) + : fColor(paint.getColor4f()) + , fBlendMode(paint.getBlendMode_or(SkBlendMode::kSrcOver)) + , fShader(paint.refShader()) {} + +PaintParams::PaintParams(const PaintParams& other) = default; +PaintParams::~PaintParams() = default; +PaintParams& PaintParams::operator=(const PaintParams& other) = default; sk_sp PaintParams::refShader() const { return fShader; } @@ -89,23 +84,4 @@ void DrawList::strokePath(const Transform& localToDevice, // fRenderStepCount += Renderer::StrokePath().numRenderSteps(); } -size_t DrawList::Draw::requiredVertexSpace(int renderStep) const { - SkASSERT(renderStep < fRenderer.numRenderSteps()); - return fRenderer.steps()[renderStep]->requiredVertexSpace(fShape); -} - -size_t DrawList::Draw::requiredIndexSpace(int renderStep) const { - SkASSERT(renderStep < fRenderer.numRenderSteps()); - return fRenderer.steps()[renderStep]->requiredIndexSpace(fShape); -} - -void DrawList::Draw::writeVertices(VertexWriter vertexWriter, - IndexWriter indexWriter, - int renderStep) const { - SkASSERT(renderStep < fRenderer.numRenderSteps()); - fRenderer.steps()[renderStep]->writeVertices(std::move(vertexWriter), - std::move(indexWriter), - fShape); -} - } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/DrawList.h b/third_party/skia/experimental/graphite/src/DrawList.h index 5c5b82385529..f0d2144ba50d 100644 --- a/third_party/skia/experimental/graphite/src/DrawList.h +++ b/third_party/skia/experimental/graphite/src/DrawList.h @@ -25,9 +25,7 @@ struct SkIRect; namespace skgpu { -struct IndexWriter; class Renderer; -struct VertexWriter; // TBD: If occlusion culling is eliminated as a phase, we can easily move the paint conversion // back to Device when the command is recorded (similar to SkPaint -> GrPaint), and then @@ -38,6 +36,8 @@ struct VertexWriter; class PaintParams { public: PaintParams(const SkColor4f& color, SkBlendMode, sk_sp); + explicit PaintParams(const SkPaint& paint); + PaintParams(const PaintParams&); ~PaintParams(); @@ -214,11 +214,6 @@ class DrawList { , fOrder(order) , fPaintParams(paint ? skstd::optional(*paint) : skstd::nullopt) , fStrokeParams(stroke ? skstd::optional(*stroke) : skstd::nullopt) {} - - size_t requiredVertexSpace(int renderStep) const; - size_t requiredIndexSpace(int renderStep) const; - - void writeVertices(VertexWriter, IndexWriter, int renderStep) const; }; // The returned Transform reference remains valid for the lifetime of the DrawList. diff --git a/third_party/skia/experimental/graphite/src/DrawPass.cpp b/third_party/skia/experimental/graphite/src/DrawPass.cpp index ba56798d8fd9..a7f34d8c22cd 100644 --- a/third_party/skia/experimental/graphite/src/DrawPass.cpp +++ b/third_party/skia/experimental/graphite/src/DrawPass.cpp @@ -8,44 +8,30 @@ #include "experimental/graphite/src/DrawPass.h" #include "experimental/graphite/include/GraphiteTypes.h" +#include "experimental/graphite/include/Recorder.h" #include "experimental/graphite/src/Buffer.h" +#include "experimental/graphite/src/ContextPriv.h" #include "experimental/graphite/src/ContextUtils.h" #include "experimental/graphite/src/DrawBufferManager.h" #include "experimental/graphite/src/DrawContext.h" #include "experimental/graphite/src/DrawList.h" -#include "experimental/graphite/src/ProgramCache.h" -#include "experimental/graphite/src/Recorder.h" +#include "experimental/graphite/src/DrawWriter.h" +#include "experimental/graphite/src/GraphicsPipeline.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" #include "experimental/graphite/src/Renderer.h" +#include "experimental/graphite/src/ResourceProvider.h" #include "experimental/graphite/src/TextureProxy.h" #include "experimental/graphite/src/UniformCache.h" +#include "experimental/graphite/src/UniformManager.h" #include "experimental/graphite/src/geom/BoundsManager.h" #include "src/core/SkMathPriv.h" +#include "src/core/SkTBlockList.h" #include "src/core/SkUtils.h" #include "src/gpu/BufferWriter.h" #include - -namespace { - -// Retrieve the program ID and uniformData ID -std::tuple get_ids_from_paint(skgpu::Recorder* recorder, - skgpu::PaintParams params) { - // TODO: add an ExtractCombo that takes PaintParams directly? - SkPaint p; - - p.setColor(params.color()); - p.setBlendMode(params.blendMode()); - p.setShader(params.refShader()); - - // TODO: perhaps just return the ids here rather than the sk_sps? - auto [ combo, uniformData] = ExtractCombo(recorder->uniformCache(), p); - auto programInfo = recorder->programCache()->findOrCreateProgram(combo); - - return { programInfo->id(), uniformData->id() }; -} - -} // anonymous namespace +#include namespace skgpu { @@ -85,6 +71,7 @@ class DrawPass::SortKey { pipelineIndex} , fUniformKey{geomUniformIndex, shadingUniformIndex} , fDraw(draw) { + SkASSERT(renderStep <= draw->fRenderer.numRenderSteps()); } bool operator<(const SortKey& k) const { @@ -95,7 +82,9 @@ class DrawPass::SortKey { const DrawList::Draw* draw() const { return fDraw; } uint32_t pipeline() const { return fPipelineKey.fPipeline; } - int renderStep() const { return static_cast(fPipelineKey.fRenderStep); } + const RenderStep& renderStep() const { + return *fDraw->fRenderer.steps()[fPipelineKey.fRenderStep]; + } uint32_t geometryUniforms() const { return fUniformKey.fGeometryIndex; } uint32_t shadingUniforms() const { return fUniformKey.fShadingIndex; } @@ -127,30 +116,121 @@ class DrawPass::SortKey { static_assert(30 >= SkNextLog2_portable(Renderer::kMaxRenderSteps * DrawList::kMaxDraws)); }; +class DrawPass::Drawer final : public DrawDispatcher { +public: + Drawer(DrawPass* drawPass) : fPass(drawPass) {} + ~Drawer() override = default; + + void bindDrawBuffers(BindBufferInfo vertexAttribs, + BindBufferInfo instanceAttribs, + BindBufferInfo indices) override { + fPass->fCommands.emplace_back(BindDrawBuffers{vertexAttribs, instanceAttribs, indices}); + } + + void draw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) override { + fPass->fCommands.emplace_back(Draw{type, baseVertex, vertexCount}); + } + + void drawIndexed(PrimitiveType type, unsigned int baseIndex, + unsigned int indexCount, unsigned int baseVertex) override { + fPass->fCommands.emplace_back(DrawIndexed{type, baseIndex, indexCount, baseVertex}); + } + + void drawInstanced(PrimitiveType type, + unsigned int baseVertex, unsigned int vertexCount, + unsigned int baseInstance, unsigned int instanceCount) override { + fPass->fCommands.emplace_back(DrawInstanced{type, baseVertex, vertexCount, + baseInstance, instanceCount}); + } + + void drawIndexedInstanced(PrimitiveType type, + unsigned int baseIndex, unsigned int indexCount, + unsigned int baseVertex, unsigned int baseInstance, + unsigned int instanceCount) override { + fPass->fCommands.emplace_back(DrawIndexedInstanced{type, baseIndex, indexCount, baseVertex, + baseInstance, instanceCount}); + } + +private: + DrawPass* fPass; +}; + /////////////////////////////////////////////////////////////////////////////////////////////////// namespace { -skgpu::UniformData* lookup(skgpu::Recorder* recorder, uint32_t uniformID) { - // TODO: just return a raw 'UniformData*' here - sk_sp tmp = recorder->uniformCache()->lookup(uniformID); - return tmp.get(); -} +class UniformBindingCache { +public: + UniformBindingCache(DrawBufferManager* bufferMgr, UniformCache* cache) + : fBufferMgr(bufferMgr), fCache(cache) {} + + uint32_t addUniforms(sk_sp data) { + if (!data) { + return UniformCache::kInvalidUniformID; + } + + uint32_t index = fCache->insert(data); + if (fBindings.find(index) == fBindings.end()) { + // First time encountering this data, so upload to the GPU + auto [writer, bufferInfo] = fBufferMgr->getUniformWriter(data->dataSize()); + writer.write(data->data(), data->dataSize()); + fBindings.insert({index, bufferInfo}); + } + + return index; + } + + BindBufferInfo getBinding(uint32_t uniformIndex) { + auto lookup = fBindings.find(uniformIndex); + SkASSERT(lookup != fBindings.end()); + return lookup->second; + } + +private: + DrawBufferManager* fBufferMgr; + UniformCache* fCache; + + std::unordered_map fBindings; +}; + +// std::unordered_map implementation for GraphicsPipelineDesc* that de-reference the pointers. +struct Hash { + size_t operator()(const skgpu::GraphicsPipelineDesc* desc) const noexcept { + return skgpu::GraphicsPipelineDesc::Hash()(*desc); + } +}; + +struct Eq { + bool operator()(const skgpu::GraphicsPipelineDesc* a, + const skgpu::GraphicsPipelineDesc* b) const noexcept { + return *a == *b; + } +}; } // anonymous namespace -DrawPass::DrawPass(sk_sp target, const SkIRect& bounds, - bool requiresStencil, bool requiresMSAA) - : fTarget(std::move(target)) - , fBounds(bounds) - , fRequiresStencil(requiresStencil) - , fRequiresMSAA(requiresMSAA) {} +DrawPass::DrawPass(sk_sp target, + std::pair ops, + std::array clearColor, + int renderStepCount) + : fCommands(std::max(1, renderStepCount / 4), SkBlockAllocator::GrowthPolicy::kFibonacci) + , fTarget(std::move(target)) + , fBounds(SkIRect::MakeEmpty()) + , fOps(ops) + , fClearColor(clearColor) { + // TODO: Tune this estimate and the above "itemPerBlock" value for the command buffer sequence + // After merging, etc. one pipeline per recorded draw+step combo is likely unnecessary. + fPipelineDescs.reserve(renderStepCount); + fCommands.reserve(renderStepCount); +} DrawPass::~DrawPass() = default; std::unique_ptr DrawPass::Make(Recorder* recorder, std::unique_ptr draws, sk_sp target, + std::pair ops, + std::array clearColor, const BoundsManager* occlusionCuller) { // NOTE: This assert is here to ensure SortKey is as tightly packed as possible. Any change to // its size should be done with care and good reason. The performance of sorting the keys is @@ -168,10 +248,20 @@ std::unique_ptr DrawPass::Make(Recorder* recorder, // than an 8 byte key and unmodified pointer. static_assert(sizeof(DrawPass::SortKey) == 16 + sizeof(void*)); - bool requiresStencil = false; - bool requiresMSAA = false; + // The DrawList is converted directly into the DrawPass' data structures, but once the DrawPass + // is returned from Make(), it is considered immutable. + std::unique_ptr drawPass(new DrawPass(std::move(target), ops, clearColor, + draws->renderStepCount())); + Rect passBounds = Rect::InfiniteInverted(); + DrawBufferManager* bufferMgr = recorder->drawBufferManager(); + UniformCache geometryUniforms; + UniformBindingCache geometryUniformBindings(bufferMgr, &geometryUniforms); + UniformBindingCache shadingUniformBindings(bufferMgr, recorder->uniformCache()); + + std::unordered_map pipelineDescToIndex; + std::vector keys; keys.reserve(draws->renderStepCount()); // will not exceed but may use less with occluded draws @@ -184,41 +274,52 @@ std::unique_ptr DrawPass::Make(Recorder* recorder, // If we have two different descriptors, such that the uniforms from the PaintParams can be // bound independently of those used by the rest of the RenderStep, then we can upload now // and remember the location for re-use on any RenderStep that does shading. - uint32_t programID = ProgramCache::kInvalidProgramID; - uint32_t shadingUniformID = UniformData::kInvalidUniformID; + Combination shader; + sk_sp shadingUniforms = nullptr; + uint32_t shadingIndex = UniformCache::kInvalidUniformID; if (draw.fPaintParams.has_value()) { - std::tie(programID, shadingUniformID) = get_ids_from_paint(recorder, - draw.fPaintParams.value()); - } + std::tie(shader, shadingUniforms) = ExtractCombo(draw.fPaintParams.value()); + shadingIndex = shadingUniformBindings.addUniforms(shadingUniforms); + } // else depth-only for (int stepIndex = 0; stepIndex < draw.fRenderer.numRenderSteps(); ++stepIndex) { const RenderStep* const step = draw.fRenderer.steps()[stepIndex]; - - // TODO ask step to generate a pipeline description based on the above shading code, and - // have pipelineIndex point to that description in the accumulated list of descs - uint32_t pipelineIndex = 0; - // TODO step writes out geometry uniforms and have geomIndex point to that buffer data, - // providing shape, transform, scissor, and paint depth to RenderStep - uint32_t geometryIndex = 0; - - uint32_t shadingIndex = UniformData::kInvalidUniformID; - const bool performsShading = draw.fPaintParams.has_value() && step->performsShading(); + + Combination stepShader; + uint32_t stepShadingIndex = UniformCache::kInvalidUniformID; if (performsShading) { - // TODO: we need to combine the 'programID' with the RenderPass info and the - // geometric rendering method to get the true 'pipelineIndex' - pipelineIndex = programID; - shadingIndex = shadingUniformID; + stepShader = shader; + stepShadingIndex = shadingIndex; + } // else depth-only draw or stencil-only step of renderer so no shading is needed + + uint32_t geometryIndex = UniformCache::kInvalidUniformID; + if (step->numUniforms() > 0) { + // TODO: Get layout from the GPU + geometryIndex = geometryUniformBindings.addUniforms( + step->writeUniforms(Layout::kMetal, draw.fTransform, draw.fShape)); + } + + GraphicsPipelineDesc desc; + desc.setProgram(step, stepShader); + uint32_t pipelineIndex = 0; + auto pipelineLookup = pipelineDescToIndex.find(&desc); + if (pipelineLookup == pipelineDescToIndex.end()) { + // Assign new index to first appearance of this pipeline description + pipelineIndex = SkTo(drawPass->fPipelineDescs.count()); + const GraphicsPipelineDesc& finalDesc = drawPass->fPipelineDescs.push_back(desc); + pipelineDescToIndex.insert({&finalDesc, pipelineIndex}); } else { - // TODO: fill in 'pipelineIndex' for Chris' stencil/depth draws + // Reuse the existing pipeline description for better batching after sorting + pipelineIndex = pipelineLookup->second; } - keys.push_back({&draw, stepIndex, pipelineIndex, geometryIndex, shadingIndex}); + keys.push_back({&draw, stepIndex, pipelineIndex, geometryIndex, stepShadingIndex}); } passBounds.join(draw.fClip.drawBounds()); - requiresStencil |= draw.fRenderer.requiresStencil(); - requiresMSAA |= draw.fRenderer.requiresMSAA(); + drawPass->fDepthStencilFlags |= draw.fRenderer.depthStencilFlags(); + drawPass->fRequiresMSAA |= draw.fRenderer.requiresMSAA(); } // TODO: Explore sorting algorithms; in all likelihood this will be mostly sorted already, so @@ -230,91 +331,134 @@ std::unique_ptr DrawPass::Make(Recorder* recorder, // bugs in the DrawOrder determination code? std::sort(keys.begin(), keys.end()); - DrawBufferManager* bufferMgr = recorder->drawBufferManager(); + // Used to record vertex/instance data, buffer binds, and draw calls + Drawer drawer(drawPass.get()); + DrawWriter drawWriter(&drawer, bufferMgr); - uint32_t lastPipeline = 0; - uint32_t lastShadingUniforms = UniformData::kInvalidUniformID; - uint32_t lastGeometryUniforms = 0; - SkIRect lastScissor = SkIRect::MakeSize(target->dimensions()); - Buffer* lastBoundVertexBuffer = nullptr; - Buffer* lastBoundIndexBuffer = nullptr; + // Used to track when a new pipeline or dynamic state needs recording between draw steps. + // Setting to # render steps ensures the very first time through the loop will bind a pipeline. + uint32_t lastPipeline = draws->renderStepCount(); + uint32_t lastShadingUniforms = UniformCache::kInvalidUniformID; + uint32_t lastGeometryUniforms = UniformCache::kInvalidUniformID; + SkIRect lastScissor = SkIRect::MakeSize(drawPass->fTarget->dimensions()); for (const SortKey& key : keys) { const DrawList::Draw& draw = *key.draw(); - int renderStep = key.renderStep(); - - size_t vertexSize = draw.requiredVertexSpace(renderStep); - size_t indexSize = draw.requiredIndexSpace(renderStep); - auto [vertexWriter, vertexInfo] = bufferMgr->getVertexWriter(vertexSize); - auto [indexWriter, indexInfo] = bufferMgr->getIndexWriter(indexSize); - // TODO: handle the case where we fail to get a vertex or index writer besides asserting - SkASSERT(!vertexSize || (vertexWriter && vertexInfo.fBuffer)); - SkASSERT(!indexSize || (indexWriter && indexInfo.fBuffer)); - draw.writeVertices(std::move(vertexWriter), std::move(indexWriter), renderStep); - - if (vertexSize) { - if (lastBoundVertexBuffer != vertexInfo.fBuffer) { - // TODO: Record a vertex bind call that stores the vertexInfo.fBuffer. - } - // TODO: Store the vertexInfo.fOffset so the draw will know its vertex offset when it - // executes. - } - if (indexSize) { - if (lastBoundIndexBuffer != indexInfo.fBuffer) { - // TODO: Record a vertex bind call that stores the vertexInfo.fBuffer. - } - // TODO: Store the vertexInfo.fOffset so the draw will know its vertex offset when it - // executes. + const RenderStep& renderStep = key.renderStep(); + + const bool pipelineChange = key.pipeline() != lastPipeline; + const bool stateChange = key.geometryUniforms() != lastGeometryUniforms || + key.shadingUniforms() != lastShadingUniforms || + draw.fClip.scissor() != lastScissor; + + // Update DrawWriter *before* we actually change any state so that accumulated draws from + // the previous state use the proper state. + if (pipelineChange) { + drawWriter.newPipelineState(renderStep.primitiveType(), + renderStep.vertexStride(), + renderStep.instanceStride()); + } else if (stateChange) { + drawWriter.newDynamicState(); } - // TODO: Have the render step write out vertices and figure out what draw call function and - // primitive type it uses. The vertex buffer binding/offset and draw params will be examined - // to determine if the active draw can be updated to include the new vertices, or if it has - // to be ended and a new one begun for this step. In addition to checking this state, must - // also check if pipeline, uniform, scissor etc. would require the active draw to end. - // - // const RenderStep* const step = draw.fRenderer.steps()[key.renderStep()]; - - if (key.pipeline() != lastPipeline) { - // TODO: Look up pipeline description from key's index and record binding it + // Make state changes before accumulating new draw data + if (pipelineChange) { + drawPass->fCommands.emplace_back(BindGraphicsPipeline{key.pipeline()}); lastPipeline = key.pipeline(); - lastShadingUniforms = UniformData::kInvalidUniformID; - lastGeometryUniforms = 0; - } - if (key.geometryUniforms() != lastGeometryUniforms) { - // TODO: Look up uniform buffer binding info corresponding to key's index and record it - lastGeometryUniforms = key.geometryUniforms(); + lastShadingUniforms = UniformCache::kInvalidUniformID; + lastGeometryUniforms = UniformCache::kInvalidUniformID; } - if (key.shadingUniforms() != lastShadingUniforms) { - auto ud = lookup(recorder, key.shadingUniforms()); - - auto [writer, bufferInfo] = bufferMgr->getUniformWriter(ud->dataSize()); - writer.write(ud->data(), ud->dataSize()); - // TODO: recording 'bufferInfo' somewhere to allow a later uniform bind call - - lastShadingUniforms = key.shadingUniforms(); - } - - if (draw.fClip.scissor() != lastScissor) { - // TODO: Record new scissor rectangle + if (stateChange) { + if (key.geometryUniforms() != lastGeometryUniforms) { + if (key.geometryUniforms() != UniformCache::kInvalidUniformID) { + auto binding = geometryUniformBindings.getBinding(key.geometryUniforms()); + drawPass->fCommands.emplace_back( + BindUniformBuffer{binding, UniformSlot::kRenderStep}); + } + lastGeometryUniforms = key.geometryUniforms(); + } + if (key.shadingUniforms() != lastShadingUniforms) { + if (key.shadingUniforms() != UniformCache::kInvalidUniformID) { + auto binding = shadingUniformBindings.getBinding(key.shadingUniforms()); + drawPass->fCommands.emplace_back( + BindUniformBuffer{binding, UniformSlot::kPaint}); + } + lastShadingUniforms = key.shadingUniforms(); + } + if (draw.fClip.scissor() != lastScissor) { + drawPass->fCommands.emplace_back(SetScissor{draw.fClip.scissor()}); + lastScissor = draw.fClip.scissor(); + } } - // TODO: Write vertex and index data for the draw step + renderStep.writeVertices(&drawWriter, draw.fTransform, draw.fShape); } - - // if (currentDraw) { - // TODO: End the current draw if it has pending vertices - // } + // Finish recording draw calls for any collected data at the end of the loop + drawWriter.flush(); passBounds.roundOut(); - SkIRect pxPassBounds = SkIRect::MakeLTRB((int) passBounds.left(), (int) passBounds.top(), - (int) passBounds.right(), (int) passBounds.bot()); - return std::unique_ptr(new DrawPass(std::move(target), pxPassBounds, - requiresStencil, requiresMSAA)); + drawPass->fBounds = SkIRect::MakeLTRB((int) passBounds.left(), (int) passBounds.top(), + (int) passBounds.right(), (int) passBounds.bot()); + return drawPass; } -void DrawPass::execute(CommandBuffer* buffer) const { - // TODO +void DrawPass::addCommands(CommandBuffer* buffer, ResourceProvider* resourceProvider) const { + // TODO: Validate RenderPass state against DrawPass's target and requirements? + // Generate actual GraphicsPipeline objects combining the target-level properties and each of + // the GraphicsPipelineDesc's referenced in this DrawPass. + + // Use a vector instead of SkTBlockList for the full pipelines so that random access is fast. + std::vector> fullPipelines; + fullPipelines.reserve(fPipelineDescs.count()); + for (const GraphicsPipelineDesc& desc : fPipelineDescs.items()) { + fullPipelines.push_back(resourceProvider->findOrCreateGraphicsPipeline(desc)); + } + + // Set viewport to the entire texture for now (eventually, we may have logically smaller bounds + // within an approx-sized texture). It is assumed that this also configures the sk_rtAdjust + // intrinsic for programs (however the backend chooses to do so). + buffer->setViewport(0, 0, fTarget->dimensions().width(), fTarget->dimensions().height()); + + for (const Command& c : fCommands.items()) { + switch(c.fType) { + case CommandType::kBindGraphicsPipeline: { + auto& d = c.fBindGraphicsPipeline; + buffer->bindGraphicsPipeline(fullPipelines[d.fPipelineIndex]); + break; } + case CommandType::kBindUniformBuffer: { + auto& d = c.fBindUniformBuffer; + buffer->bindUniformBuffer(d.fSlot, sk_ref_sp(d.fInfo.fBuffer), d.fInfo.fOffset); + break; } + case CommandType::kBindDrawBuffers: { + auto& d = c.fBindDrawBuffers; + buffer->bindDrawBuffers(d.fVertices, d.fInstances, d.fIndices); + break; } + case CommandType::kDraw: { + auto& d = c.fDraw; + buffer->draw(d.fType, d.fBaseVertex, d.fVertexCount); + break; } + case CommandType::kDrawIndexed: { + auto& d = c.fDrawIndexed; + buffer->drawIndexed(d.fType, d.fBaseIndex, d.fIndexCount, d.fBaseVertex); + break; } + case CommandType::kDrawInstanced: { + auto& d = c.fDrawInstanced; + buffer->drawInstanced(d.fType, d.fBaseVertex, d.fVertexCount, + d.fBaseInstance, d.fInstanceCount); + break; } + case CommandType::kDrawIndexedInstanced: { + auto& d = c.fDrawIndexedInstanced; + buffer->drawIndexedInstanced(d.fType, d.fBaseIndex, d.fIndexCount, d.fBaseVertex, + d.fBaseInstance, d.fInstanceCount); + break; } + case CommandType::kSetScissor: { + auto& d = c.fSetScissor; + buffer->setScissor(d.fScissor.fLeft, d.fScissor.fTop, + d.fScissor.fRight, d.fScissor.fBottom); + break; + } + } + } } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/DrawPass.h b/third_party/skia/experimental/graphite/src/DrawPass.h index 8e69e93200b5..067927087ef3 100644 --- a/third_party/skia/experimental/graphite/src/DrawPass.h +++ b/third_party/skia/experimental/graphite/src/DrawPass.h @@ -8,8 +8,13 @@ #ifndef skgpu_DrawPass_DEFINED #define skgpu_DrawPass_DEFINED +#include "experimental/graphite/src/DrawTypes.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" +#include "experimental/graphite/src/ResourceTypes.h" +#include "include/core/SkColor.h" #include "include/core/SkRect.h" #include "include/core/SkRefCnt.h" +#include "src/core/SkTBlockList.h" #include @@ -19,7 +24,9 @@ class BoundsManager; class CommandBuffer; class DrawList; class Recorder; +class ResourceProvider; class TextureProxy; +enum class UniformSlot; /** * DrawPass is analogous to a subpass, storing the drawing operations in the order they are stored @@ -41,17 +48,22 @@ class DrawPass { static std::unique_ptr Make(Recorder*, std::unique_ptr, sk_sp, + std::pair, + std::array clearColor, const BoundsManager* occlusionCuller); // Defined relative to the top-left corner of the surface the DrawPass renders to, and is // contained within its dimensions. const SkIRect& bounds() const { return fBounds; } - const TextureProxy* target() const { return fTarget.get(); } + TextureProxy* target() const { return fTarget.get(); } + std::pair ops() const { return fOps; } + std::array clearColor() const { return fClearColor; } bool requiresDstTexture() const { return false; } - bool requiresStencil() const { return fRequiresStencil; } bool requiresMSAA() const { return fRequiresMSAA; } + Mask depthStencilFlags() const { return fDepthStencilFlags; } + size_t vertexBufferSize() const { return 0; } size_t uniformBufferSize() const { return 0; } @@ -64,24 +76,126 @@ class DrawPass { // Transform this DrawPass into commands issued to the CommandBuffer. Assumes that the buffer // has already begun a correctly configured render pass matching this pass's target. - void execute(CommandBuffer* buffer) const; + void addCommands(CommandBuffer* buffer, ResourceProvider*) const; private: class SortKey; + class Drawer; + + struct BindGraphicsPipeline { + // Points to a GraphicsPipelineDesc in DrawPass's fPipelineDescs array. It will also + // index into a parallel array of full GraphicsPipelines when commands are added to the CB. + uint32_t fPipelineIndex; + }; + struct BindUniformBuffer { + BindBufferInfo fInfo; + UniformSlot fSlot; + }; + struct BindDrawBuffers { + BindBufferInfo fVertices; + BindBufferInfo fInstances; + BindBufferInfo fIndices; + }; + struct Draw { + PrimitiveType fType; + uint32_t fBaseVertex; + uint32_t fVertexCount; + }; + struct DrawIndexed { + PrimitiveType fType; + uint32_t fBaseIndex; + uint32_t fIndexCount; + uint32_t fBaseVertex; + }; + struct DrawInstanced { + PrimitiveType fType; + uint32_t fBaseVertex; + uint32_t fVertexCount; + uint32_t fBaseInstance; + uint32_t fInstanceCount; + }; + struct DrawIndexedInstanced { + PrimitiveType fType; + uint32_t fBaseIndex; + uint32_t fIndexCount; + uint32_t fBaseVertex; + uint32_t fBaseInstance; + uint32_t fInstanceCount; + }; + struct SetScissor { + SkIRect fScissor; + }; + + // TODO: BindSampler + + enum class CommandType { + kBindGraphicsPipeline, + kBindUniformBuffer, + kBindDrawBuffers, + kDraw, + kDrawIndexed, + kDrawInstanced, + kDrawIndexedInstanced, + kSetScissor, + // kBindSampler + }; + // TODO: The goal is keep all command data in line, vs. type + void* to another data array, but + // the current union is memory inefficient. It would be better to have a byte buffer with per + // type advances, but then we need to work out alignment etc. so that will be easier to add + // once we have something up and running. + struct Command { + CommandType fType; + union { + BindGraphicsPipeline fBindGraphicsPipeline; + BindUniformBuffer fBindUniformBuffer; + BindDrawBuffers fBindDrawBuffers; + Draw fDraw; + DrawIndexed fDrawIndexed; + DrawInstanced fDrawInstanced; + DrawIndexedInstanced fDrawIndexedInstanced; + SetScissor fSetScissor; + }; + + explicit Command(BindGraphicsPipeline d) + : fType(CommandType::kBindGraphicsPipeline), fBindGraphicsPipeline(d) {} + explicit Command(BindUniformBuffer d) + : fType(CommandType::kBindUniformBuffer), fBindUniformBuffer(d) {} + explicit Command(BindDrawBuffers d) + : fType(CommandType::kBindDrawBuffers), fBindDrawBuffers(d) {} + explicit Command(Draw d) + : fType(CommandType::kDraw), fDraw(d) {} + explicit Command(DrawIndexed d) + : fType(CommandType::kDrawIndexed), fDrawIndexed(d) {} + explicit Command(DrawInstanced d) + : fType(CommandType::kDrawInstanced), fDrawInstanced(d) {} + explicit Command(DrawIndexedInstanced d) + : fType(CommandType::kDrawIndexedInstanced), fDrawIndexedInstanced(d) {} + explicit Command(SetScissor d) + : fType(CommandType::kSetScissor), fSetScissor(d) {} + }; + // Not strictly necessary, but keeping Command trivially destructible means the command list + // can be cleaned up efficiently once it's converted to a command buffer. + static_assert(std::is_trivially_destructible::value); DrawPass(sk_sp target, - const SkIRect& bounds, - bool requiresStencil, - bool requiresMSAA); + std::pair ops, + std::array clearColor, + int renderStepCount); + + SkTBlockList fCommands; + // The pipelines are referenced by index in BindGraphicsPipeline, but that will index into a + // an array of actual GraphicsPipelines. fPipelineDescs only needs to accumulate encountered + // GraphicsPipelineDescs and provide stable pointers, hence SkTBlockList. + SkTBlockList fPipelineDescs; sk_sp fTarget; SkIRect fBounds; - bool fRequiresStencil; - bool fRequiresMSAA; + std::pair fOps; + std::array fClearColor; - // TODO: actually implement this. Will own the results of sorting/culling/merging a DrawList, - // however that is actually specified. + Mask fDepthStencilFlags = DepthStencilFlags::kNone; + bool fRequiresMSAA = false; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/DrawTypes.h b/third_party/skia/experimental/graphite/src/DrawTypes.h new file mode 100644 index 000000000000..3c043b1ca41f --- /dev/null +++ b/third_party/skia/experimental/graphite/src/DrawTypes.h @@ -0,0 +1,301 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_DrawTypes_DEFINED +#define skgpu_DrawTypes_DEFINED + +#include "experimental/graphite/include/GraphiteTypes.h" + +namespace skgpu { + +class Buffer; + +/** + * Types of shader-language-specific boxed variables we can create. + */ +enum class SLType { + kVoid, + kBool, + kBool2, + kBool3, + kBool4, + kShort, + kShort2, + kShort3, + kShort4, + kUShort, + kUShort2, + kUShort3, + kUShort4, + kFloat, + kFloat2, + kFloat3, + kFloat4, + kFloat2x2, + kFloat3x3, + kFloat4x4, + kHalf, + kHalf2, + kHalf3, + kHalf4, + kHalf2x2, + kHalf3x3, + kHalf4x4, + kInt, + kInt2, + kInt3, + kInt4, + kUInt, + kUInt2, + kUInt3, + kUInt4, + kTexture2DSampler, + kTextureExternalSampler, + kTexture2DRectSampler, + kTexture2D, + kSampler, + kInput, + + kLast = kInput +}; +static const int kSLTypeCount = static_cast(SLType::kLast) + 1; + +enum class CType : unsigned { + // Any float/half, vector of floats/half, or matrices of floats/halfs are a tightly + // packed array of floats. Similarly, any bool/shorts/ints are a tightly packed array + // of int32_t. + kDefault, + // Can be used with kFloat3x3 or kHalf3x3 + kSkMatrix, + + kLast = kSkMatrix +}; + +/** + * This enum is used to specify the load operation to be used when a RenderPass begins execution + */ +enum class LoadOp : uint8_t { + kLoad, + kClear, + kDiscard, + + kLast = kDiscard +}; +inline static constexpr int kLoadOpCount = (int)(LoadOp::kLast) + 1; + +/** + * This enum is used to specify the store operation to be used when a RenderPass ends execution. + */ +enum class StoreOp : uint8_t { + kStore, + kDiscard, + + kLast = kDiscard +}; +inline static constexpr int kStoreOpCount = (int)(StoreOp::kLast) + 1; + +/** + * Geometric primitives used for drawing. + */ +enum class PrimitiveType : uint8_t { + kTriangles, + kTriangleStrip, + kPoints, +}; + +/** + * Types used to describe format of vertices in buffers. + */ +enum class VertexAttribType : uint8_t { + kFloat = 0, + kFloat2, + kFloat3, + kFloat4, + kHalf, + kHalf2, + kHalf4, + + kInt2, // vector of 2 32-bit ints + kInt3, // vector of 3 32-bit ints + kInt4, // vector of 4 32-bit ints + + kByte, // signed byte + kByte2, // vector of 2 8-bit signed bytes + kByte4, // vector of 4 8-bit signed bytes + kUByte, // unsigned byte + kUByte2, // vector of 2 8-bit unsigned bytes + kUByte4, // vector of 4 8-bit unsigned bytes + + kUByte_norm, // unsigned byte, e.g. coverage, 0 -> 0.0f, 255 -> 1.0f. + kUByte4_norm, // vector of 4 unsigned bytes, e.g. colors, 0 -> 0.0f, 255 -> 1.0f. + + kShort2, // vector of 2 16-bit shorts. + kShort4, // vector of 4 16-bit shorts. + + kUShort2, // vector of 2 unsigned shorts. 0 -> 0, 65535 -> 65535. + kUShort2_norm, // vector of 2 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. + + kInt, + kUInt, + + kUShort_norm, + + kUShort4_norm, // vector of 4 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. + + kLast = kUShort4_norm +}; +static const int kVertexAttribTypeCount = (int)(VertexAttribType::kLast) + 1; + + +/** + * Returns the size of the attrib type in bytes. + */ +static constexpr inline size_t VertexAttribTypeSize(VertexAttribType type) { + switch (type) { + case VertexAttribType::kFloat: + return sizeof(float); + case VertexAttribType::kFloat2: + return 2 * sizeof(float); + case VertexAttribType::kFloat3: + return 3 * sizeof(float); + case VertexAttribType::kFloat4: + return 4 * sizeof(float); + case VertexAttribType::kHalf: + return sizeof(uint16_t); + case VertexAttribType::kHalf2: + return 2 * sizeof(uint16_t); + case VertexAttribType::kHalf4: + return 4 * sizeof(uint16_t); + case VertexAttribType::kInt2: + return 2 * sizeof(int32_t); + case VertexAttribType::kInt3: + return 3 * sizeof(int32_t); + case VertexAttribType::kInt4: + return 4 * sizeof(int32_t); + case VertexAttribType::kByte: + return 1 * sizeof(char); + case VertexAttribType::kByte2: + return 2 * sizeof(char); + case VertexAttribType::kByte4: + return 4 * sizeof(char); + case VertexAttribType::kUByte: + return 1 * sizeof(char); + case VertexAttribType::kUByte2: + return 2 * sizeof(char); + case VertexAttribType::kUByte4: + return 4 * sizeof(char); + case VertexAttribType::kUByte_norm: + return 1 * sizeof(char); + case VertexAttribType::kUByte4_norm: + return 4 * sizeof(char); + case VertexAttribType::kShort2: + return 2 * sizeof(int16_t); + case VertexAttribType::kShort4: + return 4 * sizeof(int16_t); + case VertexAttribType::kUShort2: [[fallthrough]]; + case VertexAttribType::kUShort2_norm: + return 2 * sizeof(uint16_t); + case VertexAttribType::kInt: + return sizeof(int32_t); + case VertexAttribType::kUInt: + return sizeof(uint32_t); + case VertexAttribType::kUShort_norm: + return sizeof(uint16_t); + case VertexAttribType::kUShort4_norm: + return 4 * sizeof(uint16_t); + } +} + +/* + * Struct returned by the DrawBufferManager that can be passed into bind buffer calls on the + * CommandBuffer. + */ +struct BindBufferInfo { + const Buffer* fBuffer = nullptr; + size_t fOffset = 0; + + operator bool() const { return SkToBool(fBuffer); } + + bool operator==(const BindBufferInfo& o) const { + return fBuffer == o.fBuffer && (!fBuffer || fOffset == o.fOffset); + } + bool operator!=(const BindBufferInfo& o) const { + return !(*this == o); + } +}; + +/* + * Depth and stencil settings + */ +enum class CompareOp : uint8_t { + kAlways, + kNever, + kGreater, + kGEqual, + kLess, + kLEqual, + kEqual, + kNotEqual +}; +static constexpr int kCompareOpCount = 1 + (int)CompareOp::kNotEqual; + +enum class StencilOp : uint8_t { + kKeep, + kZero, + kReplace, // Replace stencil value with reference (only the bits enabled in fWriteMask). + kInvert, + kIncWrap, + kDecWrap, + // NOTE: clamping occurs before the write mask. So if the MSB is zero and masked out, stencil + // values will still wrap when using clamping ops. + kIncClamp, + kDecClamp +}; +static constexpr int kStencilOpCount = 1 + (int)StencilOp::kDecClamp; + +struct DepthStencilSettings { + // Per-face settings for stencil + struct Face { + StencilOp fStencilFailOp = StencilOp::kKeep; + StencilOp fDepthFailOp = StencilOp::kKeep; + StencilOp fDepthStencilPassOp = StencilOp::kKeep; + CompareOp fCompareOp = CompareOp::kAlways; + uint32_t fReadMask = 0xffffffff; + uint32_t fWriteMask = 0xffffffff; + + bool operator==(const Face& that) const { + return this->fStencilFailOp == that.fStencilFailOp && + this->fDepthFailOp == that.fDepthFailOp && + this->fDepthStencilPassOp == that.fDepthStencilPassOp && + this->fCompareOp == that.fCompareOp && + this->fReadMask == that.fReadMask && + this->fWriteMask == that.fWriteMask; + } + }; + + bool operator==(const DepthStencilSettings& that) const { + return this->fFrontStencil == that.fFrontStencil && + this->fBackStencil == that.fBackStencil && + this->fStencilReferenceValue == that.fStencilReferenceValue && + this->fDepthCompareOp == that.fDepthCompareOp && + this->fStencilTestEnabled == that.fStencilTestEnabled && + this->fDepthTestEnabled == that.fDepthTestEnabled && + this->fDepthWriteEnabled == that.fDepthWriteEnabled; + } + + Face fFrontStencil; + Face fBackStencil; + uint32_t fStencilReferenceValue = 0; + CompareOp fDepthCompareOp = CompareOp::kAlways; + bool fStencilTestEnabled = false; + bool fDepthTestEnabled = false; + bool fDepthWriteEnabled = false; +}; + +}; // namespace skgpu + +#endif // skgpu_DrawTypes_DEFINED diff --git a/third_party/skia/experimental/graphite/src/DrawWriter.cpp b/third_party/skia/experimental/graphite/src/DrawWriter.cpp new file mode 100644 index 000000000000..5da16658b607 --- /dev/null +++ b/third_party/skia/experimental/graphite/src/DrawWriter.cpp @@ -0,0 +1,164 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "experimental/graphite/src/DrawWriter.h" + +#include "experimental/graphite/src/DrawBufferManager.h" +#include "src/gpu/BufferWriter.h" + +namespace skgpu { + +DrawWriter::DrawWriter(DrawDispatcher* dispatcher, DrawBufferManager* bufferManager) + : DrawWriter(dispatcher, bufferManager, PrimitiveType::kTriangles, 0, 0) {} + +DrawWriter::DrawWriter(DrawDispatcher* dispatcher, + DrawBufferManager* bufferManager, + PrimitiveType primitiveType, + size_t vertexStride, + size_t instanceStride) + : fDispatcher(dispatcher) + , fManager(bufferManager) + , fPrimitiveType(primitiveType) + , fVertexStride(vertexStride) + , fInstanceStride(instanceStride) { + SkASSERT(dispatcher && bufferManager); +} + +void DrawWriter::setTemplateInternal(BindBufferInfo vertices, + BindBufferInfo indices, + unsigned int count, + bool drawPendingVertices) { + SkASSERT(!vertices || fVertexStride > 0); + if (vertices != fFixedVertexBuffer || + indices != fFixedIndexBuffer || + count != fFixedVertexCount) { + // Issue any accumulated data that referred to the old template. + if (drawPendingVertices) { + this->drawPendingVertices(); + } + + fFixedBuffersDirty = true; + + fFixedVertexBuffer = vertices; + fFixedIndexBuffer = indices; + fFixedVertexCount = count; + } +} + +void DrawWriter::drawInternal(BindBufferInfo instances, + unsigned int base, + unsigned int instanceCount) { + // Draw calls that are only 1 instance and have no extra instance data get routed to + // the simpler draw APIs. + // TODO: Is there any benefit to this? Does it help hint to drivers? Avoid more bugs? + // Or should we always call drawInstanced and drawIndexedInstanced? + const bool useNonInstancedDraw = + !SkToBool(instances) && base == 0 && instanceCount == 1; + SkASSERT(!useNonInstancedDraw || fInstanceStride == 0); + + // Issue new buffer binds only as necessary + // TODO: Should this instead be the responsibility of the CB or DrawDispatcher to remember + // what was last bound? + if (fFixedBuffersDirty || instances != fLastInstanceBuffer) { + fDispatcher->bindDrawBuffers(fFixedVertexBuffer, instances, fFixedIndexBuffer); + fFixedBuffersDirty = false; + fLastInstanceBuffer = instances; + } + + if (useNonInstancedDraw) { + if (fFixedIndexBuffer) { + // Should only get here from a direct draw, in which case base should be 0 and any + // offset needs to be embedded in the BindBufferInfo by caller. + SkASSERT(base == 0); + fDispatcher->drawIndexed(fPrimitiveType, 0, fFixedVertexCount, 0); + } else { + // 'base' offsets accumulated vertex data from another DrawWriter across a state change. + fDispatcher->draw(fPrimitiveType, base, fFixedVertexCount); + } + } else { + // 'base' offsets accumulated instance data (or is 0 for a direct instanced draw). It is + // assumed that any base vertex and index have been folded into the BindBufferInfos already. + if (fFixedIndexBuffer) { + fDispatcher->drawIndexedInstanced(fPrimitiveType, 0, fFixedVertexCount, 0, + base, instanceCount); + } else { + fDispatcher->drawInstanced(fPrimitiveType, 0, fFixedVertexCount, base, instanceCount); + } + } +} + +void DrawWriter::drawPendingVertices() { + if (fPendingCount > 0) { + if (fPendingMode == VertexMode::kInstances) { + // This uses instanced draws, so 'base' will be interpreted in instance units. + this->drawInternal(fPendingAttrs, fPendingBaseVertex, fPendingCount); + } else { + // This triggers a non-instanced draw call so 'base' passed to drawInternal is + // interpreted in vertex units. + this->setTemplateInternal(fPendingAttrs, {}, fPendingCount, /*drawPending=*/false); + this->drawInternal({}, fPendingBaseVertex, 1); + } + + fPendingCount = 0; + fPendingBaseVertex = 0; + fPendingAttrs = {}; + } +} + +VertexWriter DrawWriter::appendData(VertexMode mode, size_t stride, unsigned int count) { + if (fPendingMode != mode) { + // Switched between accumulating vertices and instances, so issue draws for the old data. + this->drawPendingVertices(); + fPendingMode = mode; + } + + auto [writer, nextChunk] = fManager->getVertexWriter(count * stride); + // Check if next chunk's data is contiguous with what's previously been appended + if (nextChunk.fBuffer == fPendingAttrs.fBuffer && + fPendingAttrs.fOffset + (fPendingBaseVertex + fPendingCount) * stride + == nextChunk.fOffset) { + // It is, so the next chunk's vertices that will be written can be folded into the next draw + fPendingCount += count; + } else { + // Alignment mismatch, or the old buffer filled up + this->drawPendingVertices(); + fPendingCount = count; + fPendingBaseVertex = 0; + fPendingAttrs = nextChunk; + } + + return std::move(writer); +} + +void DrawWriter::newDynamicState() { + // Remember where we left off after we draw, since drawPendingVertices() resets all pending data + BindBufferInfo base = fPendingAttrs; + unsigned int baseVertex = fPendingBaseVertex + fPendingCount; + // Draw anything that used the previous dynamic state + this->drawPendingVertices(); + + fPendingAttrs = base; + fPendingBaseVertex = baseVertex; +} + +void DrawWriter::newPipelineState(PrimitiveType type, + size_t vertexStride, + size_t instanceStride) { + // Draw anything that used the previous pipeline + this->drawPendingVertices(); + + // For simplicity, if there's a new pipeline, just forget about any previous buffer bindings, + // in which case the new writer only needs to use the dispatcher and buffer manager. + this->setTemplateInternal({}, {}, 0, false); + fLastInstanceBuffer = {}; + + fPrimitiveType = type; + fVertexStride = vertexStride; + fInstanceStride = instanceStride; +} + +} // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/DrawWriter.h b/third_party/skia/experimental/graphite/src/DrawWriter.h new file mode 100644 index 000000000000..4d6a4e81907e --- /dev/null +++ b/third_party/skia/experimental/graphite/src/DrawWriter.h @@ -0,0 +1,219 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_DrawWriter_DEFINED +#define skgpu_DrawWriter_DEFINED + +#include "experimental/graphite/src/DrawTypes.h" +#include "src/gpu/BufferWriter.h" + +namespace skgpu { + +class DrawBufferManager; + +class DrawDispatcher; // Forward declaration, handles virtual dispatch of binds/draws + +/** + * DrawWriter is a helper around recording draws (to a temporary buffer or directly to a + * CommandBuffer), particularly when the number of draws is not known ahead of time, or the vertex + * and instance data is computed at record time and does not have a known size. + * + * To use, construct the DrawWriter with the current pipeline layout or call newPipelineState() on + * an existing DrawWriter and then bind that matching pipeline. When other dynamic state needs to + * change between draw calls, notify the DrawWriter using newDynamicState() before recording the + * modifications. See the listing below for how to append dynamic data or draw with existing buffers + * + * CommandBuffer::draw(vertices) + * - dynamic vertex data -> DrawWriter::appendVertices(n) + * - fixed vertex data -> DrawWriter::draw(vertices, {}, vertexCount) + * + * CommandBuffer::drawIndexed(vertices, indices) + * - dynamic vertex data -> unsupported + * - fixed vertex,index data -> DrawWriter::draw(vertices, indices, indexCount) + * + * CommandBuffer::drawInstances(vertices, instances) + * - dynamic instance data + fixed vertex data -> + * DrawWriter::setInstanceTemplate(vertices, {}, vertexCount) then + * DrawWriter::appendInstances(n) + * - fixed vertex and instance data -> + * DrawWriter::setInstanceTemplate(vertices, {}, vertexCount) then + * DrawWriter::drawInstanced(instances, instanceCount) + * + * CommandBuffer::drawIndexedInstanced(vertices, indices, instances) + * - dynamic instance data + fixed vertex, index data -> + * DrawWriter::setInstanceTemplate(vertices, indices, indexCount) then + * DrawWriter::appendInstances(n) + * - fixed vertex, index, and instance data -> + * DrawWriter::setInstanceTemplate(vertices, indices, indexCount) then + * DrawWriter::drawInstanced(instances, instanceCount) + */ +class DrawWriter { +public: + // NOTE: This constructor creates a writer that has 0 vertex and instance stride, so can only + // be used to draw triangles with pipelines that rely solely on the vertex and instance ID. + DrawWriter(DrawDispatcher*, DrawBufferManager*); + + DrawWriter(DrawDispatcher*, DrawBufferManager*, + PrimitiveType type, size_t vertexStride, size_t instanceStride); + + // Cannot move or copy + DrawWriter(const DrawWriter&) = delete; + DrawWriter(DrawWriter&&) = delete; + + // flush() should be called before the writer is destroyed + ~DrawWriter() { SkASSERT(fPendingCount == 0); } + + DrawBufferManager* bufferManager() { return fManager; } + + // Notify the DrawWriter that dynamic state that does not affect the pipeline needs to be + // changed. This issues draw calls for pending vertex/instance data that referred to the old + // state, so this must be called *before* changing the dynamic state. + // + // This preserves the last bound buffers and accounts for any offsets using the base vertex or + // base instance passed to draw calls to avoid re-binding buffers unnecessarily. + void newDynamicState(); + + // Notify the DrawWriter that a new pipeline needs to be bound, providing the primitive type and + // attribute strides of that pipeline. This issues draw calls for pending data that relied on + // the old pipeline, so this must be called *before* binding the new pipeline. + void newPipelineState(PrimitiveType type, size_t vertexStride, size_t instanceStride); + + // Issue draw calls for any pending vertex and instance data collected by the writer. + void flush() { this->drawPendingVertices(); } + + // Collects new vertex data for a call to CommandBuffer::draw(). Automatically accumulates + // vertex data into a buffer, issuing draw and bind calls as needed when a new buffer is + // required, so that it is seamless to the caller. + // + // Since this accumulates vertex data (and does not use instances or indices), this overrides + // the instance template when finally drawn. + // + // This should not be used when the vertex stride is 0. + VertexWriter appendVertices(unsigned int numVertices) { + SkASSERT(fVertexStride > 0); + return this->appendData(VertexMode::kVertices, fVertexStride, numVertices); + } + + // Collects new instance data for a call to CommandBuffer::drawInstanced() or + // drawIndexedInstanced(). The specific draw call that's issued depends on the buffers passed to + // setInstanceTemplate(). If the template has a non-null index buffer, the eventual draw calls + // correspond to drawindexedInstanced(), otherwise to drawInstanced(). + // + // Like appendVertices(), this automatically manages an internal instance buffer and merges + // the appended data into as few buffer binds and draw calls as possible, while remaining + // seamless to the caller. + // + // This requires that an instance template be specified before appending instance data. However, + // the fixed vertex buffer can be null (or have a stride of 0) if the vertex shader only relies + // on the vertex ID and no other per-vertex data. + // + // This should not be used when the instance stride is 0. + VertexWriter appendInstances(unsigned int numInstances) { + SkASSERT(fInstanceStride > 0); + return this->appendData(VertexMode::kInstances, fInstanceStride, numInstances); + } + + // Set the fixed vertex and index buffers referenced when appending instance data or calling + // drawIndexed(). 'count' is the number of vertices in the template, which is either the + // vertex count (when 'indices' has a null buffer), or the index count when 'indices' are + // provided. + void setInstanceTemplate(BindBufferInfo vertices, BindBufferInfo indices, unsigned int count) { + this->setTemplateInternal(vertices, indices, count, /*drawPending=*/true); + } + + // Issues a draw with fully specified data. This can be used when all instance data has already + // been written to known buffers, or when the vertex shader only depends on the vertex or + // instance IDs. + // + // The specific draw call issued depends on the buffers set via 'setInstanceTemplate' and the + // 'instances' parameter. If the template has a non-null index buffer, it will use + // drawIndexedInstanced(), otherwise it will use drawInstanced(). + // + // This will not merge with any already appended instance or vertex data, pending data is issued + // in its own draw call first. + void drawInstanced(BindBufferInfo instances, unsigned int count) { + this->drawPendingVertices(); + this->drawInternal(instances, 0, count); + } + + // Issues a non-instanced draw call with existing, fully specified data. The specific draw call + // depends on the buffers passed to this function. If a non-null index buffer is specified, it + // will use drawIndexed(), otherwise it will use the vertex-only draw(). + // + // This will not merge with any existing appended instance or vertex data, which will issue it + // own draw call. This overrides what was last set for the instance template. + void draw(BindBufferInfo vertices, BindBufferInfo indices, unsigned int count) { + this->setInstanceTemplate(vertices, indices, count); // will draw pending if needed + this->drawInstanced({}, 1); + } + +private: + enum class VertexMode : unsigned { + kVertices, kInstances + }; + + // Both of these pointers must outlive the DrawWriter. + DrawDispatcher* fDispatcher; + DrawBufferManager* fManager; + + // Must be constructed to match the pipeline that's bound + PrimitiveType fPrimitiveType; + size_t fVertexStride; + size_t fInstanceStride; + + // State tracking appended vertices or instances + VertexMode fPendingMode = VertexMode::kVertices; + unsigned int fPendingCount = 0; // vertex or instance count depending on mode + unsigned int fPendingBaseVertex = 0; // or instance + BindBufferInfo fPendingAttrs = {}; + + // State to track the instance template that is re-used across drawn instances. These are not + // yet bound if fFixedBuffersDirty is true. Non-instanced draw buffers (e.g. draw() and + // drawIndexed()) are treated as drawing one instance, with no extra instance attributes. + BindBufferInfo fFixedVertexBuffer = {}; + BindBufferInfo fFixedIndexBuffer = {}; + unsigned int fFixedVertexCount = 0; // or index count if fFixedIndexBuffer is non-null + + bool fFixedBuffersDirty = true; + + // Will either be 'fPendingAttrData' or the arg last passed to drawInstanced(), since it may + // change even if the fixed vertex and index buffers have not. + BindBufferInfo fLastInstanceBuffer = {}; + + VertexWriter appendData(VertexMode mode, size_t stride, unsigned int count); + void setTemplateInternal(BindBufferInfo vertices, BindBufferInfo indices, + unsigned int count, bool drawPending); + void drawInternal(BindBufferInfo instances, unsigned int base, unsigned int instanceCount); + void drawPendingVertices(); +}; + +// Mirrors the CommandBuffer API, since a DrawWriter is meant to aggregate and then map onto +// CommandBuffer commands, although these are virtual to allow for recording to intermediate +// storage before a CommandBuffer is available. +class DrawDispatcher { +public: + virtual ~DrawDispatcher() = default; + + virtual void bindDrawBuffers(BindBufferInfo vertexAttribs, + BindBufferInfo instanceAttribs, + BindBufferInfo indices) = 0; + + virtual void draw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) = 0; + virtual void drawIndexed(PrimitiveType type, unsigned int baseIndex, + unsigned int indexCount, unsigned int baseVertex) = 0; + virtual void drawInstanced(PrimitiveType type, + unsigned int baseVertex, unsigned int vertexCount, + unsigned int baseInstance, unsigned int instanceCount) = 0; + virtual void drawIndexedInstanced(PrimitiveType type, + unsigned int baseIndex, unsigned int indexCount, + unsigned int baseVertex, unsigned int baseInstance, + unsigned int instanceCount) = 0; +}; + +} // namespace skgpu + +#endif // skgpu_DrawWriter_DEFINED diff --git a/third_party/skia/experimental/graphite/src/EnumBitMask.h b/third_party/skia/experimental/graphite/src/EnumBitMask.h new file mode 100644 index 000000000000..fba6bf86321d --- /dev/null +++ b/third_party/skia/experimental/graphite/src/EnumBitMask.h @@ -0,0 +1,79 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_EnumBitMask_DEFINED +#define skgpu_EnumBitMask_DEFINED + +#include "experimental/graphite/include/GraphiteTypes.h" + +namespace skgpu { + +/** + * Wraps an enum that is used for flags, and enables masking with type safety. Example: + * + * enum class MyFlags { + * kNone = 0, + * kA = 1, + * kB = 2, + * kC = 4, + * }; + * + * SKGPU_MAKE_MASK_OPS(MyFlags) + * + * ... + * + * Mask flags = MyFlags::kA | MyFlags::kB; + * + * if (flags & MyFlags::kB) {} + * + * ... + */ +template +class Mask { +public: + SK_ALWAYS_INLINE constexpr Mask(E e) : Mask((int)e) {} + + SK_ALWAYS_INLINE constexpr operator bool() const { return fValue; } + + SK_ALWAYS_INLINE bool operator==(Mask m) const { return fValue == m.fValue; } + SK_ALWAYS_INLINE bool operator!=(Mask m) const { return fValue != m.fValue; } + + SK_ALWAYS_INLINE constexpr Mask operator|(Mask m) const { return Mask(fValue | m.fValue); } + SK_ALWAYS_INLINE constexpr Mask operator&(Mask m) const { return Mask(fValue & m.fValue); } + SK_ALWAYS_INLINE constexpr Mask operator^(Mask m) const { return Mask(fValue ^ m.fValue); } + SK_ALWAYS_INLINE constexpr Mask operator~() const { return Mask(~fValue); } + + SK_ALWAYS_INLINE Mask& operator|=(Mask m) { return *this = *this | m; } + SK_ALWAYS_INLINE Mask& operator&=(Mask m) { return *this = *this & m; } + SK_ALWAYS_INLINE Mask& operator^=(Mask m) { return *this = *this ^ m; } + +private: + SK_ALWAYS_INLINE constexpr explicit Mask(int value) : fValue(value) {} + + int fValue; +}; + +/** + * Defines functions that make it possible to use bitwise operators on an enum. + */ +#define SKGPU_MAKE_MASK_OPS(E) \ + SK_MAYBE_UNUSED constexpr skgpu::Mask operator|(E a, E b) { return skgpu::Mask(a) | b; } \ + SK_MAYBE_UNUSED constexpr skgpu::Mask operator&(E a, E b) { return skgpu::Mask(a) & b; } \ + SK_MAYBE_UNUSED constexpr skgpu::Mask operator^(E a, E b) { return skgpu::Mask(a) ^ b; } \ + SK_MAYBE_UNUSED constexpr skgpu::Mask operator~(E e) { return ~skgpu::Mask(e); } \ + +#define SKGPU_DECL_MASK_OPS_FRIENDS(E) \ + friend constexpr skgpu::Mask operator|(E, E); \ + friend constexpr skgpu::Mask operator&(E, E); \ + friend constexpr skgpu::Mask operator^(E, E); \ + friend constexpr skgpu::Mask operator~(E); \ + +}; // namespace skgpu + +#endif // skgpu_EnumBitMask_DEFINED + + diff --git a/third_party/skia/experimental/graphite/src/Gpu.cpp b/third_party/skia/experimental/graphite/src/Gpu.cpp index 974e887e864d..41120f11d778 100644 --- a/third_party/skia/experimental/graphite/src/Gpu.cpp +++ b/third_party/skia/experimental/graphite/src/Gpu.cpp @@ -7,10 +7,13 @@ #include "experimental/graphite/src/Gpu.h" +#include "experimental/graphite/include/BackendTexture.h" +#include "experimental/graphite/include/TextureInfo.h" #include "experimental/graphite/src/Caps.h" #include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/GpuWorkSubmission.h" #include "experimental/graphite/src/ResourceProvider.h" +#include "src/sksl/SkSLCompiler.h" namespace skgpu { @@ -36,6 +39,10 @@ Gpu::~Gpu() { fResourceProvider.reset(); } +void Gpu::initCompiler() { + fCompiler = std::make_unique(fCaps->shaderCaps()); +} + sk_sp Gpu::refCaps() const { return fCaps; } @@ -45,9 +52,7 @@ bool Gpu::submit(sk_sp commandBuffer) { return false; } - if (!commandBuffer->hasWork()) { - return true; - } + SkDEBUGCODE(if (!commandBuffer->hasWork()) SkDebugf("Submitting empty command buffer!\n");) return this->onSubmit(std::move(commandBuffer)); } @@ -78,4 +83,20 @@ void Gpu::checkForFinishedWork(SyncToCpu sync) { SkASSERT(sync == SyncToCpu::kNo || fOutstandingSubmissions.empty()); } +BackendTexture Gpu::createBackendTexture(SkISize dimensions, const TextureInfo& info) { + if (dimensions.isEmpty() || dimensions.width() > this->caps()->maxTextureSize() || + dimensions.height() > this->caps()->maxTextureSize()) { + return {}; + } + + return this->onCreateBackendTexture(dimensions, info); +} + +void Gpu::deleteBackendTexture(BackendTexture& texture) { + this->onDeleteBackendTexture(texture); + // Invalidate the texture; + texture = BackendTexture(); +} + + } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/Gpu.h b/third_party/skia/experimental/graphite/src/Gpu.h index 8cbb7155fe70..9750bb3ef12a 100644 --- a/third_party/skia/experimental/graphite/src/Gpu.h +++ b/third_party/skia/experimental/graphite/src/Gpu.h @@ -9,16 +9,23 @@ #define skgpu_Gpu_DEFINED #include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" #include "include/private/SkDeque.h" #include "experimental/graphite/include/GraphiteTypes.h" +namespace SkSL { + class Compiler; +} + namespace skgpu { +class BackendTexture; class Caps; -class ResourceProvider; class CommandBuffer; class GpuWorkSubmission; +class ResourceProvider; +class TextureInfo; class Gpu : public SkRefCnt { public: @@ -30,11 +37,16 @@ class Gpu : public SkRefCnt { const Caps* caps() const { return fCaps.get(); } sk_sp refCaps() const; + SkSL::Compiler* shaderCompiler() const { return fCompiler.get(); } + ResourceProvider* resourceProvider() const { return fResourceProvider.get(); } bool submit(sk_sp); void checkForFinishedWork(SyncToCpu); + BackendTexture createBackendTexture(SkISize dimensions, const TextureInfo&); + void deleteBackendTexture(BackendTexture&); + #if GRAPHITE_TEST_UTILS virtual void testingOnly_startCapture() {} virtual void testingOnly_endCapture() {} @@ -43,6 +55,9 @@ class Gpu : public SkRefCnt { protected: Gpu(sk_sp); + // Subclass must call this to initialize compiler in its constructor. + void initCompiler(); + std::unique_ptr fResourceProvider; using OutstandingSubmission = std::unique_ptr; @@ -51,7 +66,13 @@ class Gpu : public SkRefCnt { private: virtual bool onSubmit(sk_sp) = 0; + virtual BackendTexture onCreateBackendTexture(SkISize dimensions, const TextureInfo&) = 0; + virtual void onDeleteBackendTexture(BackendTexture&) = 0; + sk_sp fCaps; + // Compiler used for compiling SkSL into backend shader code. We only want to create the + // compiler once, as there is significant overhead to the first compile. + std::unique_ptr fCompiler; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/RenderPipeline.cpp b/third_party/skia/experimental/graphite/src/GraphicsPipeline.cpp similarity index 58% rename from third_party/skia/experimental/graphite/src/RenderPipeline.cpp rename to third_party/skia/experimental/graphite/src/GraphicsPipeline.cpp index 016fcff2ae94..1e5064325d33 100644 --- a/third_party/skia/experimental/graphite/src/RenderPipeline.cpp +++ b/third_party/skia/experimental/graphite/src/GraphicsPipeline.cpp @@ -5,14 +5,14 @@ * found in the LICENSE file. */ -#include "experimental/graphite/src/RenderPipeline.h" +#include "experimental/graphite/src/GraphicsPipeline.h" namespace skgpu { -RenderPipeline::RenderPipeline() { +GraphicsPipeline::GraphicsPipeline() { } -RenderPipeline::~RenderPipeline() { +GraphicsPipeline::~GraphicsPipeline() { } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/GraphicsPipeline.h b/third_party/skia/experimental/graphite/src/GraphicsPipeline.h new file mode 100644 index 000000000000..3480d00a05f2 --- /dev/null +++ b/third_party/skia/experimental/graphite/src/GraphicsPipeline.h @@ -0,0 +1,37 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_GraphicsPipeline_DEFINED +#define skgpu_GraphicsPipeline_DEFINED + +#include "include/core/SkRefCnt.h" + +namespace skgpu { + +/** + * GraphicsPipeline corresponds to a backend specific pipeline used for rendering (vs. compute), + * e.g. MTLRenderPipelineState (Metal), + * CreateRenderPipeline (Dawn), + * CreateGraphicsPipelineState (D3D12), + * or VkGraphicsPipelineCreateInfo (Vulkan). + * + * A GraphicsPipeline is created from the combination of a GraphicsPipelineDesc (representing draw + * specific configuration) and a RenderPassDesc (representing the target of the draw). + */ +class GraphicsPipeline : public SkRefCnt { +public: + ~GraphicsPipeline() override; + +protected: + GraphicsPipeline(); + +private: +}; + +} // namespace skgpu + +#endif // skgpu_GraphicsPipeline_DEFINED diff --git a/third_party/skia/experimental/graphite/src/RenderPipelineDesc.cpp b/third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.cpp similarity index 63% rename from third_party/skia/experimental/graphite/src/RenderPipelineDesc.cpp rename to third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.cpp index d6fe5a333676..09317896138a 100644 --- a/third_party/skia/experimental/graphite/src/RenderPipelineDesc.cpp +++ b/third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.cpp @@ -5,11 +5,11 @@ * found in the LICENSE file. */ -#include "experimental/graphite/src/RenderPipelineDesc.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" namespace skgpu { -RenderPipelineDesc::RenderPipelineDesc() { +GraphicsPipelineDesc::GraphicsPipelineDesc() { } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.h b/third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.h new file mode 100644 index 000000000000..6b900b071cde --- /dev/null +++ b/third_party/skia/experimental/graphite/src/GraphicsPipelineDesc.h @@ -0,0 +1,92 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_GraphicsPipelineDesc_DEFINED +#define skgpu_GraphicsPipelineDesc_DEFINED + +#include "include/core/SkTypes.h" + +#include "experimental/graphite/src/Attribute.h" +#include "experimental/graphite/src/ContextUtils.h" +#include "experimental/graphite/src/DrawTypes.h" +#include "include/core/SkSpan.h" +#include "include/private/SkOpts_spi.h" +#include "include/private/SkTArray.h" + +#include +namespace skgpu { + +class RenderStep; + +/** + * GraphicsPipelineDesc represents the state needed to create a backend specific GraphicsPipeline, + * minus the target-specific properties that can be inferred from the DrawPass and RenderPassTask. + */ +class GraphicsPipelineDesc { +public: + GraphicsPipelineDesc(); + + SkSpan asKey() const { return SkMakeSpan(fKey.data(), fKey.size()); } + + bool operator==(const GraphicsPipelineDesc& that) const { + return this->fKey == that.fKey; + } + + bool operator!=(const GraphicsPipelineDesc& other) const { + return !(*this == other); + } + + // Describes the geometric portion of the pipeline's program and the pipeline's fixed state + // (except for renderpass-level state that will never change between draws). + const RenderStep* renderStep() const { return fRenderStep; } + // Key describing the color shading tree of the pipeline's program + Combination shaderCombo() const { return fCombination; } + + void setProgram(const RenderStep* step, const Combination& shaderCombo) { + SkASSERT(step); + fRenderStep = step; + fCombination = shaderCombo; + + uintptr_t addr = reinterpret_cast(fRenderStep); + memcpy(fKey.data(), &addr, sizeof(uintptr_t)); + fKey[kWords - 1] = shaderCombo.key(); + } + + struct Hash { + uint32_t operator()(const GraphicsPipelineDesc& desc) const { + return SkOpts::hash_fn(desc.fKey.data(), desc.fKey.size() * sizeof(uint32_t), 0); + } + }; + +private: + // The key is the RenderStep address and the uint32_t key from Combination + static constexpr int kWords = sizeof(uintptr_t) / sizeof(uint32_t) + 1; + static_assert(sizeof(uintptr_t) % sizeof(uint32_t) == 0); + + // TODO: I wonder if we could expose the "key" as just a char[] union over the renderstep and + // paint combination? That would avoid extra size, but definitely locks GraphicsPipelineDesc + // keys to the current process, which is probably okay since we can have something a with a more + // stable hash used for the pre-compilation combos. + std::array fKey; + + // Each RenderStep defines a fixed set of attributes and rasterization state, as well as the + // shader fragments that control the geometry and coverage calculations. The RenderStep's shader + // is combined with the rest of the shader generated from the PaintParams. Because each + // RenderStep is fixed, its pointer can be used as a proxy for everything that it specifies in + // the GraphicsPipeline. + const RenderStep* fRenderStep = nullptr; + + // TODO: Right now the Combination is roughly the equivalent of the PaintBlob description, so + // eventually it won't be a fixed size, as it can eventually represent arbitrary shader trees. + // However, in that world, each PaintBlob structure will have a unique ID and a map from ID to + // blob, so the GraphicsPipelineDesc can be reduced to just storing RenderStep + unique ID int. + Combination fCombination; +}; + +} // namespace skgpu + +#endif // skgpu_GraphicsPipelineDesc_DEFINED diff --git a/third_party/skia/experimental/graphite/src/ProgramCache.cpp b/third_party/skia/experimental/graphite/src/ProgramCache.cpp index 93b82633c83b..5b4a2966d193 100644 --- a/third_party/skia/experimental/graphite/src/ProgramCache.cpp +++ b/third_party/skia/experimental/graphite/src/ProgramCache.cpp @@ -46,10 +46,18 @@ std::string ProgramCache::ProgramInfo::getMSL() const { "return result;\n" "}\n"); break; + case ShaderCombo::ShaderType::kNone: + // TODO: kNone is for depth-only draws, so should actually have a fragment output type + // that only defines a [[depth]] attribute but no color calculation. + msl += + "fragment float4 fragmentMain(VertexOutput interpolated [[stage_in]]) {\n" + " return float4(0.0, 0.0, 1.0, 1.0);\n" + "}\n"; + break; case ShaderCombo::ShaderType::kRadialGradient: case ShaderCombo::ShaderType::kSweepGradient: case ShaderCombo::ShaderType::kConicalGradient: - case ShaderCombo::ShaderType::kNone: + case ShaderCombo::ShaderType::kSolidColor: default: msl += std::string( "fragment float4 fragmentShader(VertexOut interpolated [[stage_in]],\n" diff --git a/third_party/skia/experimental/graphite/src/ProgramCache.h b/third_party/skia/experimental/graphite/src/ProgramCache.h deleted file mode 100644 index e93914525813..000000000000 --- a/third_party/skia/experimental/graphite/src/ProgramCache.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_ProgramCache_DEFINED -#define skgpu_ProgramCache_DEFINED - -#include -#include -#include -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" -#include "experimental/graphite/src/ContextUtils.h" -#include "include/core/SkRefCnt.h" - -namespace skgpu { - -class ProgramCache { -public: - ProgramCache(); - - static constexpr uint32_t kInvalidProgramID = 0; - - // TODO: this is a bit underspecified. It still needs the rendering technique info. - // Additionally, it still needs an entry point to generate the text of the program. - class ProgramInfo : public SkRefCnt { - public: - ProgramInfo(uint32_t uniqueID, Combination c); - ~ProgramInfo() override; - - uint32_t id() const { return fID; } - Combination combo() const { return fCombination; } - - std::string getMSL() const; - - private: - const uint32_t fID; - const Combination fCombination; - // TODO: store the rendering technique info from Chris here - }; - - // TODO: we need the rendering technique info from Chris for this look up - sk_sp findOrCreateProgram(Combination); - - sk_sp lookup(uint32_t uniqueID); - - // The number of unique programs in the cache - size_t count() const { - SkASSERT(fProgramHash.size()+1 == fProgramVector.size()); - return fProgramHash.size(); - } - -private: - struct Hash { - size_t operator()(Combination) const; - }; - - std::unordered_map, Hash> fProgramHash; - std::vector> fProgramVector; - // The ProgramInfo's unique ID is only unique w/in a Recorder _not_ globally - uint32_t fNextUniqueID = 1; -}; - -} // namespace skgpu - -#endif // skgpu_ProgramCache_DEFINED diff --git a/third_party/skia/experimental/graphite/src/Recorder.cpp b/third_party/skia/experimental/graphite/src/Recorder.cpp index f44bbffdd834..4f322958d078 100644 --- a/third_party/skia/experimental/graphite/src/Recorder.cpp +++ b/third_party/skia/experimental/graphite/src/Recorder.cpp @@ -5,25 +5,26 @@ * found in the LICENSE file. */ -#include "experimental/graphite/src/Recorder.h" +#include "experimental/graphite/include/Recorder.h" #include "experimental/graphite/include/Context.h" +#include "experimental/graphite/include/Recording.h" +#include "experimental/graphite/src/Caps.h" #include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/ContextPriv.h" #include "experimental/graphite/src/DrawBufferManager.h" #include "experimental/graphite/src/Gpu.h" -#include "experimental/graphite/src/ProgramCache.h" -#include "experimental/graphite/src/Recording.h" +#include "experimental/graphite/src/ResourceProvider.h" #include "experimental/graphite/src/UniformCache.h" namespace skgpu { Recorder::Recorder(sk_sp context) - : fContext(std::move(context)) - , fProgramCache(new ProgramCache) - , fUniformCache(new UniformCache) - // TODO: Is '4' the correct initial alignment? - , fDrawBufferManager(new DrawBufferManager(fContext->priv().gpu()->resourceProvider(), 4)) { + : fContext(std::move(context)) + , fUniformCache(new UniformCache) + , fDrawBufferManager(new DrawBufferManager( + fContext->priv().gpu()->resourceProvider(), + fContext->priv().gpu()->caps()->requiredUniformBufferAlignment())) { } Recorder::~Recorder() {} @@ -32,10 +33,6 @@ Context* Recorder::context() const { return fContext.get(); } -ProgramCache* Recorder::programCache() { - return fProgramCache.get(); -} - UniformCache* Recorder::uniformCache() { return fUniformCache.get(); } @@ -49,10 +46,14 @@ void Recorder::add(sk_sp task) { } std::unique_ptr Recorder::snap() { - // TODO: need to create a CommandBuffer from the Tasks and then we need to call - // fDrawBufferManager::transferBuffers() to pass the buffers to the command buffer. + auto gpu = fContext->priv().gpu(); + auto commandBuffer = gpu->resourceProvider()->createCommandBuffer(); + + fGraph.addCommands(gpu->resourceProvider(), commandBuffer.get()); + fDrawBufferManager->transferToCommandBuffer(commandBuffer.get()); + fGraph.reset(); - return std::unique_ptr(new Recording(nullptr)); + return std::unique_ptr(new Recording(std::move(commandBuffer))); } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/Recording.cpp b/third_party/skia/experimental/graphite/src/Recording.cpp index be276266c39b..9a04fffecf76 100644 --- a/third_party/skia/experimental/graphite/src/Recording.cpp +++ b/third_party/skia/experimental/graphite/src/Recording.cpp @@ -5,7 +5,7 @@ * found in the LICENSE file. */ -#include "experimental/graphite/src/Recording.h" +#include "experimental/graphite/include/Recording.h" #include "experimental/graphite/src/CommandBuffer.h" diff --git a/third_party/skia/experimental/graphite/src/RenderPassTask.cpp b/third_party/skia/experimental/graphite/src/RenderPassTask.cpp index 92766ddd9e4d..51d8d2113b9a 100644 --- a/third_party/skia/experimental/graphite/src/RenderPassTask.cpp +++ b/third_party/skia/experimental/graphite/src/RenderPassTask.cpp @@ -9,43 +9,65 @@ #include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/DrawPass.h" +#include "experimental/graphite/src/ResourceProvider.h" #include "experimental/graphite/src/Texture.h" #include "experimental/graphite/src/TextureProxy.h" namespace skgpu { -sk_sp RenderPassTask::Make(std::vector> passes) { - return sk_sp(new RenderPassTask(std::move(passes))); +sk_sp RenderPassTask::Make(std::vector> passes, + const RenderPassDesc& desc, + sk_sp target) { + // For now we have one DrawPass per RenderPassTask + SkASSERT(passes.size() == 1); + + return sk_sp(new RenderPassTask(std::move(passes), desc, target)); } -RenderPassTask::RenderPassTask(std::vector> passes) - : fDrawPasses(std::move(passes)) {} +RenderPassTask::RenderPassTask(std::vector> passes, + const RenderPassDesc& desc, + sk_sp target) + : fDrawPasses(std::move(passes)) + , fRenderPassDesc(desc) + , fTarget(std::move(target)) {} RenderPassTask::~RenderPassTask() = default; -void RenderPassTask::execute(CommandBuffer* commandBuffer) { +void RenderPassTask::addCommands(ResourceProvider* resourceProvider, CommandBuffer* commandBuffer) { // TBD: Expose the surfaces that will need to be attached within the renderpass? - // TODO: for task execution, iterate the draw passes (can assume just 1 for sprint?) and - // determine RenderPassDesc. Then start the render pass, then iterate passes again and - // possibly(?) start each subpass, and call DrawPass::execute() on the command buffer provided - // to the task. Then close the render pass and we should have pixels.. - - // TODO: For now just generate a renderpass for each draw pass until we start using subpasses - for (const auto& drawPass: fDrawPasses) { - RenderPassDesc desc; + // TODO: for task execution, start the render pass, then iterate passes and + // possibly(?) start each subpass, and call DrawPass::addCommands() on the command buffer + // provided to the task. Then close the render pass and we should have pixels.. - desc.fColorAttachment.fTexture = drawPass->target()->refTexture(); - // TODO: need to get these from the drawPass somehow - desc.fColorAttachment.fLoadOp = LoadOp::kLoad; - desc.fColorAttachment.fStoreOp = StoreOp::kStore; + // Instantiate the target + if (fTarget) { + if (!fTarget->instantiate(resourceProvider)) { + SkDebugf("WARNING: given invalid texture proxy. Will not create renderpass!\n"); + SkDebugf("Dimensions are (%d, %d).\n", fTarget->dimensions().width(), + fTarget->dimensions().height()); + return; + } + } - commandBuffer->beginRenderPass(desc); + sk_sp depthStencilTexture; + if (fRenderPassDesc.fDepthStencilAttachment.fTextureInfo.isValid()) { + // TODO: ensure this is a scratch/recycled texture + depthStencilTexture = resourceProvider->findOrCreateTexture( + fTarget->dimensions(), fRenderPassDesc.fDepthStencilAttachment.fTextureInfo); + SkASSERT(depthStencilTexture); + } - drawPass->execute(commandBuffer); + commandBuffer->beginRenderPass(fRenderPassDesc, fTarget->refTexture(), nullptr, + std::move(depthStencilTexture)); - commandBuffer->endRenderPass(); + // Assuming one draw pass per renderpasstask for now + SkASSERT(fDrawPasses.size() == 1); + for (const auto& drawPass: fDrawPasses) { + drawPass->addCommands(commandBuffer, resourceProvider); } + + commandBuffer->endRenderPass(); } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/RenderPassTask.h b/third_party/skia/experimental/graphite/src/RenderPassTask.h index 8de3c56263bf..1d5ba4e79832 100644 --- a/third_party/skia/experimental/graphite/src/RenderPassTask.h +++ b/third_party/skia/experimental/graphite/src/RenderPassTask.h @@ -8,6 +8,7 @@ #ifndef skgpu_RenderPassTask_DEFINED #define skgpu_RenderPassTask_DEFINED +#include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/Task.h" #include @@ -16,6 +17,7 @@ namespace skgpu { class CommandBuffer; class DrawPass; +class ResourceProvider; /** * RenderPassTask handles preparing and recording DrawLists into a single render pass within a @@ -26,16 +28,22 @@ class DrawPass; */ class RenderPassTask final : public Task { public: - static sk_sp Make(std::vector> passes); + static sk_sp Make(std::vector> passes, + const RenderPassDesc&, + sk_sp target); ~RenderPassTask() override; - void execute(CommandBuffer*) override; + void addCommands(ResourceProvider*, CommandBuffer*) override; private: - RenderPassTask(std::vector> passes); + RenderPassTask(std::vector> passes, + const RenderPassDesc&, + sk_sp target); std::vector> fDrawPasses; + RenderPassDesc fRenderPassDesc; + sk_sp fTarget; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/RenderPipeline.h b/third_party/skia/experimental/graphite/src/RenderPipeline.h deleted file mode 100644 index 728a952562ee..000000000000 --- a/third_party/skia/experimental/graphite/src/RenderPipeline.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_RenderPipeline_DEFINED -#define skgpu_RenderPipeline_DEFINED - -#include "include/core/SkRefCnt.h" - -namespace skgpu { - -class RenderPipeline : public SkRefCnt { -public: - ~RenderPipeline() override; - -protected: - RenderPipeline(); - -private: -}; - -} // namespace skgpu - -#endif // skgpu_RenderPipeline_DEFINED diff --git a/third_party/skia/experimental/graphite/src/RenderPipelineDesc.h b/third_party/skia/experimental/graphite/src/RenderPipelineDesc.h deleted file mode 100644 index 3a4d65a26d0c..000000000000 --- a/third_party/skia/experimental/graphite/src/RenderPipelineDesc.h +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_RenderPipelineDesc_DEFINED -#define skgpu_RenderPipelineDesc_DEFINED - -#include "include/core/SkTypes.h" - -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" -#include "include/private/SkTArray.h" - -namespace skgpu { - -class RenderPipelineDesc { -public: - RenderPipelineDesc(); - - /** Describes a vertex or instance attribute. */ - class Attribute { - public: - constexpr Attribute() = default; - constexpr Attribute(const char* name, - VertexAttribType cpuType, - SLType gpuType) - : fName(name), fCPUType(cpuType), fGPUType(gpuType) { - SkASSERT(name && gpuType != SLType::kVoid); - } - constexpr Attribute(const Attribute&) = default; - - Attribute& operator=(const Attribute&) = default; - - constexpr bool isInitialized() const { return fGPUType != SLType::kVoid; } - - constexpr const char* name() const { return fName; } - constexpr VertexAttribType cpuType() const { return fCPUType; } - constexpr SLType gpuType() const { return fGPUType; } - - inline constexpr size_t size() const; - constexpr size_t sizeAlign4() const { return SkAlign4(this->size()); } - - private: - const char* fName = nullptr; - VertexAttribType fCPUType = VertexAttribType::kFloat; - SLType fGPUType = SLType::kVoid; - }; - - class Iter { - public: - Iter() : fCurr(nullptr), fRemaining(0) {} - Iter(const Iter& iter) : fCurr(iter.fCurr), fRemaining(iter.fRemaining) {} - Iter& operator= (const Iter& iter) { - fCurr = iter.fCurr; - fRemaining = iter.fRemaining; - return *this; - } - Iter(const Attribute* attrs, int count) : fCurr(attrs), fRemaining(count) { - this->skipUninitialized(); - } - - bool operator!=(const Iter& that) const { return fCurr != that.fCurr; } - const Attribute& operator*() const { return *fCurr; } - void operator++() { - if (fRemaining) { - fRemaining--; - fCurr++; - this->skipUninitialized(); - } - } - - private: - void skipUninitialized() { - if (!fRemaining) { - fCurr = nullptr; - } else { - while (!fCurr->isInitialized()) { - ++fCurr; - } - } - } - - const Attribute* fCurr; - int fRemaining; - }; - - class AttributeSet { - public: - Iter begin() const { return Iter(fAttributes, fCount); } - Iter end() const { return Iter(); } - - int count() const { return fCount; } - size_t stride() const { return fStride; } - - private: - friend class RenderPipelineDesc; - void init(const Attribute* attrs, int count) { - fAttributes = attrs; - fRawCount = count; - fCount = 0; - fStride = 0; - for (int i = 0; i < count; ++i) { - if (attrs[i].isInitialized()) { - fCount++; - fStride += attrs[i].sizeAlign4(); - } - } - } - - const Attribute* fAttributes = nullptr; - int fRawCount = 0; - int fCount = 0; - size_t fStride = 0; - }; - - // Returns this as a uint32_t array to be used as a key in the pipeline cache. - // TODO: Do we want to do anything here with a tuple or an SkSpan? - const uint32_t* asKey() const { - return fKey.data(); - } - - // Gets the number of bytes in asKey(). It will be a 4-byte aligned value. - uint32_t keyLength() const { - return fKey.size() * sizeof(uint32_t); - } - - bool operator==(const RenderPipelineDesc& that) const { - return this->fKey == that.fKey; - } - - bool operator!=(const RenderPipelineDesc& other) const { - return !(*this == other); - } - - // TODO: remove this once we have something real working - void setTestingOnlyShaderIndex(int index) { - fTestingOnlyShaderIndex = index; - if (fKey.count() >= 1) { - fKey[0] = index; - } else { - fKey.push_back(index); - } - } - int testingOnlyShaderIndex() const { - return fTestingOnlyShaderIndex; - } - - void setVertexAttributes(const Attribute* attrs, int attrCount) { - fVertexAttributes.init(attrs, attrCount); - } - void setInstanceAttributes(const Attribute* attrs, int attrCount) { - SkASSERT(attrCount >= 0); - fInstanceAttributes.init(attrs, attrCount); - } - - int numVertexAttributes() const { return fVertexAttributes.fCount; } - const AttributeSet& vertexAttributes() const { return fVertexAttributes; } - int numInstanceAttributes() const { return fInstanceAttributes.fCount; } - const AttributeSet& instanceAttributes() const { return fInstanceAttributes; } - - bool hasVertexAttributes() const { return SkToBool(fVertexAttributes.fCount); } - bool hasInstanceAttributes() const { return SkToBool(fInstanceAttributes.fCount); } - - /** - * A common practice is to populate the the vertex/instance's memory using an implicit array of - * structs. In this case, it is best to assert that: - * stride == sizeof(struct) - */ - size_t vertexStride() const { return fVertexAttributes.fStride; } - size_t instanceStride() const { return fInstanceAttributes.fStride; } - -private: - // Estimate of max expected key size - // TODO: flesh this out - inline static constexpr int kPreAllocSize = 1; - - SkSTArray fKey; - - int fTestingOnlyShaderIndex; - - AttributeSet fVertexAttributes; - AttributeSet fInstanceAttributes; -}; - -////////////////////////////////////////////////////////////////////////////// - -/** - * Returns the size of the attrib type in bytes. - * Placed here in service of Skia dependents that build with C++11. - */ -static constexpr inline size_t VertexAttribTypeSize(VertexAttribType type) { - switch (type) { - case VertexAttribType::kFloat: - return sizeof(float); - case VertexAttribType::kFloat2: - return 2 * sizeof(float); - case VertexAttribType::kFloat3: - return 3 * sizeof(float); - case VertexAttribType::kFloat4: - return 4 * sizeof(float); - case VertexAttribType::kHalf: - return sizeof(uint16_t); - case VertexAttribType::kHalf2: - return 2 * sizeof(uint16_t); - case VertexAttribType::kHalf4: - return 4 * sizeof(uint16_t); - case VertexAttribType::kInt2: - return 2 * sizeof(int32_t); - case VertexAttribType::kInt3: - return 3 * sizeof(int32_t); - case VertexAttribType::kInt4: - return 4 * sizeof(int32_t); - case VertexAttribType::kByte: - return 1 * sizeof(char); - case VertexAttribType::kByte2: - return 2 * sizeof(char); - case VertexAttribType::kByte4: - return 4 * sizeof(char); - case VertexAttribType::kUByte: - return 1 * sizeof(char); - case VertexAttribType::kUByte2: - return 2 * sizeof(char); - case VertexAttribType::kUByte4: - return 4 * sizeof(char); - case VertexAttribType::kUByte_norm: - return 1 * sizeof(char); - case VertexAttribType::kUByte4_norm: - return 4 * sizeof(char); - case VertexAttribType::kShort2: - return 2 * sizeof(int16_t); - case VertexAttribType::kShort4: - return 4 * sizeof(int16_t); - case VertexAttribType::kUShort2: // fall through - case VertexAttribType::kUShort2_norm: - return 2 * sizeof(uint16_t); - case VertexAttribType::kInt: - return sizeof(int32_t); - case VertexAttribType::kUInt: - return sizeof(uint32_t); - case VertexAttribType::kUShort_norm: - return sizeof(uint16_t); - case VertexAttribType::kUShort4_norm: - return 4 * sizeof(uint16_t); - } - // GCC fails because SK_ABORT evaluates to non constexpr. clang and cl.exe think this is - // unreachable and don't complain. -#if defined(__clang__) || !defined(__GNUC__) - SK_ABORT("Unsupported type conversion"); -#endif - return 0; -} - -constexpr size_t RenderPipelineDesc::Attribute::size() const { - return VertexAttribTypeSize(fCPUType); -} - -} // namespace skgpu - -#endif // skgpu_RenderPipelineDesc_DEFINED diff --git a/third_party/skia/experimental/graphite/src/Renderer.h b/third_party/skia/experimental/graphite/src/Renderer.h index 7d067c7c0d4d..bbf251236ecb 100644 --- a/third_party/skia/experimental/graphite/src/Renderer.h +++ b/third_party/skia/experimental/graphite/src/Renderer.h @@ -8,43 +8,98 @@ #ifndef skgpu_Renderer_DEFINED #define skgpu_Renderer_DEFINED +#include "experimental/graphite/src/Attribute.h" +#include "experimental/graphite/src/DrawTypes.h" +#include "experimental/graphite/src/EnumBitMask.h" +#include "experimental/graphite/src/ResourceTypes.h" +#include "experimental/graphite/src/Uniform.h" + #include "include/core/SkSpan.h" #include "include/core/SkString.h" #include "include/core/SkTypes.h" #include +#include +#include namespace skgpu { -struct IndexWriter; +class DrawWriter; +class ResourceProvider; class Shape; -struct VertexWriter; +class Transform; +class UniformData; + +enum class Layout; class RenderStep { public: - virtual ~RenderStep() {} + virtual ~RenderStep() = default; + + // The DrawWriter is configured with the vertex and instance strides of the RenderStep, and its + // primitive type. The recorded draws will be executed with a graphics pipeline compatible with + // this RenderStep. + virtual void writeVertices(DrawWriter*, const Transform&, const Shape&) const = 0; + + // Write out the uniform values (aligned for the layout). These values will be de-duplicated + // across all draws using the RenderStep before uploading to the GPU, but it can be assumed the + // uniforms will be bound before the draws recorded in 'writeVertices' are executed. + // TODO: We definitely want this to return CPU memory since it's better for the caller to handle + // the de-duplication and GPU upload/binding (DrawPass tracks all this). However, a RenderStep's + // uniforms aren't going to change, and the Layout won't change during a process, so it would be + // nice if we could remember the offsets for the layout/gpu and reuse them across draws. + // Similarly, it would be nice if this could write into reusable storage and then DrawPass or + // UniformCache handles making an sk_sp if we need to assign a new unique ID to the uniform data + virtual sk_sp writeUniforms(Layout layout, + const Transform&, + const Shape&) const = 0; + + virtual const char* name() const = 0; + + // TODO: This is only temporary. Eventually the RenderStep will define its logic in SkSL and + // be able to have code operate in both the vertex and fragment shaders. Ideally the RenderStep + // will provide two functions that fit some ABI for integrating with the common and paint SkSL, + // although we could go as far as allowing RenderStep to handle composing the final SkSL if + // given the paint combination's SkSL. + + // Returns the body of a vertex function, which must define a float4 devPosition variable. + // It has access to the variables declared by vertexAttributes(), instanceAttributes(), + // and uniforms(). + // + // NOTE: The above contract is mainly so that the entire SkSL program can be created by just str + // concatenating struct definitions generated from the RenderStep and paint Combination + // and then including the function bodies returned here. + virtual const char* vertexSkSL() const = 0; + + bool requiresMSAA() const { return fFlags & Flags::kRequiresMSAA; } + bool performsShading() const { return fFlags & Flags::kPerformsShading; } + + PrimitiveType primitiveType() const { return fPrimitiveType; } + size_t vertexStride() const { return fVertexStride; } + size_t instanceStride() const { return fInstanceStride; } + + const DepthStencilSettings& depthStencilSettings() const { return fDepthStencilSettings; } + + Mask depthStencilFlags() const { + return (fDepthStencilSettings.fStencilTestEnabled + ? DepthStencilFlags::kStencil : DepthStencilFlags::kNone) | + (fDepthStencilSettings.fDepthTestEnabled || fDepthStencilSettings.fDepthWriteEnabled + ? DepthStencilFlags::kDepth : DepthStencilFlags::kNone); + } + + size_t numUniforms() const { return fUniforms.size(); } + size_t numVertexAttributes() const { return fVertexAttrs.size(); } + size_t numInstanceAttributes() const { return fInstanceAttrs.size(); } - virtual const char* name() const = 0; - virtual bool requiresStencil() const = 0; - virtual bool requiresMSAA() const = 0; - virtual bool performsShading() const = 0; + // The uniforms of a RenderStep are bound to the kRenderStep slot, the rest of the pipeline + // may still use uniforms bound to other slots. + SkSpan uniforms() const { return SkMakeSpan(fUniforms); } + SkSpan vertexAttributes() const { return SkMakeSpan(fVertexAttrs); } + SkSpan instanceAttributes() const { return SkMakeSpan(fInstanceAttrs); } - virtual size_t requiredVertexSpace(const Shape&) const = 0; - virtual size_t requiredIndexSpace(const Shape&) const = 0; - virtual void writeVertices(VertexWriter, IndexWriter, const Shape&) const = 0; // TODO: Actual API to do things // 1. Provide stencil settings - // 2. Provide shader key or MSL(?) for the vertex stage - // 3. Write vertex data given a Shape/Transform/Stroke info - // 4. Write uniform data given a Shape/Transform/Stroke info - // 5. Somehow specify the draw call that needs to be made, although this can't just be "record" - // the draw call, since we want multiple draws to accumulate into the same vertex buffer, - // and the final draw totals aren't known until we have done #3 for another draw and it - // requires binding a new vertex buffer/offset. - // - maybe if it just says what it's primitive type is and instanced/indexed/etc. and then - // the DrawPass building is able to track the total number of vertices/indices written for - // the draws in the batch and can handle recording the draw command itself. // 6. Some Renderers benefit from being able to share vertices between RenderSteps. Must find a // way to support that. It may mean that RenderSteps get state per draw. // - Does Renderer make RenderStepFactories that create steps for each DrawList::Draw? @@ -52,12 +107,60 @@ class RenderStep { // stateless Renderstep can refer to for {draw,step} pairs? // - Does each DrawList::Draw have extra space (e.g. 8 bytes) that steps can cache data in? protected: - RenderStep() {} + enum class Flags : unsigned { + kNone = 0b000, + kRequiresMSAA = 0b001, + kPerformsShading = 0b010, + }; + SKGPU_DECL_MASK_OPS_FRIENDS(Flags); + + // While RenderStep does not define the full program that's run for a draw, it defines the + // entire vertex layout of the pipeline. This is not allowed to change, so can be provided to + // the RenderStep constructor by subclasses. + RenderStep(Mask flags, + std::initializer_list uniforms, + PrimitiveType primitiveType, + DepthStencilSettings depthStencilSettings, + std::initializer_list vertexAttrs, + std::initializer_list instanceAttrs) + : fFlags(flags) + , fPrimitiveType(primitiveType) + , fDepthStencilSettings(depthStencilSettings) + , fUniforms(uniforms) + , fVertexAttrs(vertexAttrs) + , fInstanceAttrs(instanceAttrs) + , fVertexStride(0) + , fInstanceStride(0) { + for (auto v : this->vertexAttributes()) { + fVertexStride += v.sizeAlign4(); + } + for (auto i : this->instanceAttributes()) { + fInstanceStride += i.sizeAlign4(); + } + } private: // Cannot copy or move RenderStep(const RenderStep&) = delete; RenderStep(RenderStep&&) = delete; + + Mask fFlags; + PrimitiveType fPrimitiveType; + + DepthStencilSettings fDepthStencilSettings; + + // TODO: When we always use C++17 for builds, we should be able to just let subclasses declare + // constexpr arrays and point to those, but we need explicit storage for C++14. + // Alternatively, if we imposed a max attr count, similar to Renderer's num render steps, we + // could just have this be std::array and keep all attributes inline with the RenderStep memory. + // On the other hand, the attributes are only needed when creating a new pipeline so it's not + // that performance sensitive. + std::vector fUniforms; + std::vector fVertexAttrs; + std::vector fInstanceAttrs; + + size_t fVertexStride; // derived from vertex attribute set + size_t fInstanceStride; // derived from instance attribute set }; /** @@ -96,9 +199,10 @@ class Renderer { const char* name() const { return fName.c_str(); } int numRenderSteps() const { return fStepCount; } - bool requiresStencil() const { return fRequiresStencil; } bool requiresMSAA() const { return fRequiresMSAA; } + Mask depthStencilFlags() const { return fDepthStencilFlags; } + private: // max render steps is 4, so just spell the options out for now... Renderer(const char* name, const RenderStep* s1) @@ -117,15 +221,12 @@ class Renderer { template Renderer(const char* name, std::array steps) : fName(name) - , fStepCount(SkTo(N)) - , fRequiresStencil(false) - , fRequiresMSAA(false) { + , fStepCount(SkTo(N)) { static_assert(N <= kMaxRenderSteps); SkDEBUGCODE(bool performsShading = false;) for (int i = 0 ; i < fStepCount; ++i) { fSteps[i] = steps[i]; - fRequiresStencil |= fSteps[i]->requiresStencil(); - fRequiresMSAA |= fSteps[i]->requiresMSAA(); + fDepthStencilFlags |= fSteps[i]->depthStencilFlags(); SkDEBUGCODE(performsShading |= fSteps[i]->performsShading()); } SkASSERT(performsShading); // at least one step needs to actually shade @@ -139,8 +240,9 @@ class Renderer { SkString fName; int fStepCount; - bool fRequiresStencil; - bool fRequiresMSAA; + bool fRequiresMSAA = false; + + Mask fDepthStencilFlags = DepthStencilFlags::kNone; }; } // skgpu namespace diff --git a/third_party/skia/experimental/graphite/src/ResourceProvider.cpp b/third_party/skia/experimental/graphite/src/ResourceProvider.cpp index 35fda7904f8a..e07b7b50f5a6 100644 --- a/third_party/skia/experimental/graphite/src/ResourceProvider.cpp +++ b/third_party/skia/experimental/graphite/src/ResourceProvider.cpp @@ -9,50 +9,50 @@ #include "experimental/graphite/src/Buffer.h" #include "experimental/graphite/src/CommandBuffer.h" -#include "experimental/graphite/src/RenderPipeline.h" +#include "experimental/graphite/src/GraphicsPipeline.h" #include "experimental/graphite/src/Texture.h" namespace skgpu { ResourceProvider::ResourceProvider(const Gpu* gpu) : fGpu(gpu) { - fRenderPipelineCache.reset(new RenderPipelineCache(this)); + fGraphicsPipelineCache.reset(new GraphicsPipelineCache(this)); } ResourceProvider::~ResourceProvider() { - fRenderPipelineCache.release(); + fGraphicsPipelineCache.release(); } -sk_sp ResourceProvider::findOrCreateRenderPipeline(const RenderPipelineDesc& desc) { - return fRenderPipelineCache->refPipeline(desc); +sk_sp ResourceProvider::findOrCreateGraphicsPipeline( + const GraphicsPipelineDesc& desc) { + return fGraphicsPipelineCache->refPipeline(desc); } //////////////////////////////////////////////////////////////////////////////////////////////// -struct ResourceProvider::RenderPipelineCache::Entry { - Entry(sk_sp pipeline) - : fPipeline(std::move(pipeline)) {} +struct ResourceProvider::GraphicsPipelineCache::Entry { + Entry(sk_sp pipeline) : fPipeline(std::move(pipeline)) {} - sk_sp fPipeline; + sk_sp fPipeline; }; -ResourceProvider::RenderPipelineCache::RenderPipelineCache(ResourceProvider* resourceProvider) +ResourceProvider::GraphicsPipelineCache::GraphicsPipelineCache(ResourceProvider* resourceProvider) : fMap(16) // TODO: find a good value for this , fResourceProvider(resourceProvider) {} -ResourceProvider::RenderPipelineCache::~RenderPipelineCache() { +ResourceProvider::GraphicsPipelineCache::~GraphicsPipelineCache() { SkASSERT(0 == fMap.count()); } -void ResourceProvider::RenderPipelineCache::release() { +void ResourceProvider::GraphicsPipelineCache::release() { fMap.reset(); } -sk_sp ResourceProvider::RenderPipelineCache::refPipeline( - const RenderPipelineDesc& desc) { +sk_sp ResourceProvider::GraphicsPipelineCache::refPipeline( + const GraphicsPipelineDesc& desc) { std::unique_ptr* entry = fMap.find(desc); if (!entry) { - auto pipeline = fResourceProvider->onCreateRenderPipeline(desc); + auto pipeline = fResourceProvider->onCreateGraphicsPipeline(desc); if (!pipeline) { return nullptr; } diff --git a/third_party/skia/experimental/graphite/src/ResourceProvider.h b/third_party/skia/experimental/graphite/src/ResourceProvider.h index ff58d0f5a1a8..954c9903071a 100644 --- a/third_party/skia/experimental/graphite/src/ResourceProvider.h +++ b/third_party/skia/experimental/graphite/src/ResourceProvider.h @@ -8,19 +8,18 @@ #ifndef skgpu_ResourceProvider_DEFINED #define skgpu_ResourceProvider_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" #include "experimental/graphite/src/CommandBuffer.h" -#include "experimental/graphite/src/RenderPipeline.h" -#include "experimental/graphite/src/RenderPipelineDesc.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "include/core/SkSize.h" #include "src/core/SkLRUCache.h" namespace skgpu { +class BackendTexture; class Buffer; -class CommandBuffer; class Gpu; -class RenderPipeline; +class GraphicsPipeline; class Texture; class TextureInfo; @@ -30,9 +29,10 @@ class ResourceProvider { virtual sk_sp createCommandBuffer() = 0; - sk_sp findOrCreateRenderPipeline(const RenderPipelineDesc&); + sk_sp findOrCreateGraphicsPipeline(const GraphicsPipelineDesc&); sk_sp findOrCreateTexture(SkISize, const TextureInfo&); + virtual sk_sp createWrappedTexture(const BackendTexture&) = 0; sk_sp findOrCreateBuffer(size_t size, BufferType type, PrioritizeGpuReads); @@ -42,34 +42,30 @@ class ResourceProvider { const Gpu* fGpu; private: - virtual sk_sp onCreateRenderPipeline(const RenderPipelineDesc&) = 0; + virtual sk_sp onCreateGraphicsPipeline(const GraphicsPipelineDesc&) = 0; virtual sk_sp createTexture(SkISize, const TextureInfo&) = 0; virtual sk_sp createBuffer(size_t size, BufferType type, PrioritizeGpuReads) = 0; - class RenderPipelineCache { + class GraphicsPipelineCache { public: - RenderPipelineCache(ResourceProvider* resourceProvider); - ~RenderPipelineCache(); + GraphicsPipelineCache(ResourceProvider* resourceProvider); + ~GraphicsPipelineCache(); void release(); - sk_sp refPipeline(const RenderPipelineDesc&); + sk_sp refPipeline(const GraphicsPipelineDesc&); private: struct Entry; - struct DescHash { - uint32_t operator()(const RenderPipelineDesc& desc) const { - return SkOpts::hash_fn(desc.asKey(), desc.keyLength(), 0); - } - }; - - SkLRUCache, DescHash> fMap; + SkLRUCache, + GraphicsPipelineDesc::Hash> fMap; ResourceProvider* fResourceProvider; }; - // Cache of RenderPipelines - std::unique_ptr fRenderPipelineCache; + // Cache of GraphicsPipelines + std::unique_ptr fGraphicsPipelineCache; }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/ResourceTypes.h b/third_party/skia/experimental/graphite/src/ResourceTypes.h new file mode 100644 index 000000000000..60a2c65c7c49 --- /dev/null +++ b/third_party/skia/experimental/graphite/src/ResourceTypes.h @@ -0,0 +1,61 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_ResourceTypes_DEFINED +#define skgpu_ResourceTypes_DEFINED + +#include "experimental/graphite/include/GraphiteTypes.h" +#include "experimental/graphite/src/EnumBitMask.h" + +namespace skgpu { + +/** + * Is the Texture renderable or not + */ +enum class Renderable : bool { + kNo = false, + kYes = true, +}; + +enum class DepthStencilFlags : int { + kNone = 0b000, + kDepth = 0b001, + kStencil = 0b010, + kDepthStencil = kDepth | kStencil, +}; +SKGPU_MAKE_MASK_OPS(DepthStencilFlags); + +/** + * What a GPU buffer will be used for + */ +enum class BufferType { + kVertex, + kIndex, + kXferCpuToGpu, + kXferGpuToCpu, + kUniform, +}; +static const int kBufferTypeCount = static_cast(BufferType::kUniform) + 1; + +/** + * When creating the memory for a resource should we use a memory type that prioritizes the + * effeciency of GPU reads even if it involves extra work to write CPU data to it. For example, we + * would want this for buffers that we cache to read the same data many times on the GPU. + */ +enum class PrioritizeGpuReads : bool { + kNo = false, + kYes = true, +}; + +enum class Ownership { + kOwned, + kWrapped, +}; + +}; // namespace skgpu + +#endif // skgpu_ResourceTypes_DEFINED diff --git a/third_party/skia/experimental/graphite/src/SkStuff.cpp b/third_party/skia/experimental/graphite/src/SkStuff.cpp index 74d4c24dcffe..40dfdfc02c21 100644 --- a/third_party/skia/experimental/graphite/src/SkStuff.cpp +++ b/third_party/skia/experimental/graphite/src/SkStuff.cpp @@ -7,8 +7,8 @@ #include "experimental/graphite/include/SkStuff.h" +#include "experimental/graphite/include/Recorder.h" #include "experimental/graphite/src/Device.h" -#include "experimental/graphite/src/Recorder.h" #include "experimental/graphite/src/Surface_Graphite.h" sk_sp MakeGraphite(sk_sp recorder, const SkImageInfo& ii) { diff --git a/third_party/skia/experimental/graphite/src/Surface_Graphite.cpp b/third_party/skia/experimental/graphite/src/Surface_Graphite.cpp index 46918042b24c..e2a814b4b51f 100644 --- a/third_party/skia/experimental/graphite/src/Surface_Graphite.cpp +++ b/third_party/skia/experimental/graphite/src/Surface_Graphite.cpp @@ -7,10 +7,10 @@ #include "experimental/graphite/src/Surface_Graphite.h" +#include "experimental/graphite/include/Recorder.h" #include "experimental/graphite/include/SkStuff.h" #include "experimental/graphite/src/Device.h" #include "experimental/graphite/src/Image_Graphite.h" -#include "experimental/graphite/src/Recorder.h" namespace skgpu { diff --git a/third_party/skia/experimental/graphite/src/Task.h b/third_party/skia/experimental/graphite/src/Task.h index 23ccdd763e8a..15643cfb0abd 100644 --- a/third_party/skia/experimental/graphite/src/Task.h +++ b/third_party/skia/experimental/graphite/src/Task.h @@ -13,12 +13,13 @@ namespace skgpu { class CommandBuffer; +class ResourceProvider; class Task : public SkRefCnt { public: ~Task() override; - virtual void execute(CommandBuffer*) = 0; + virtual void addCommands(ResourceProvider*, CommandBuffer*) = 0; protected: Task(); diff --git a/third_party/skia/experimental/graphite/src/TaskGraph.cpp b/third_party/skia/experimental/graphite/src/TaskGraph.cpp index c6ddf781f5fe..3f8ecc576205 100644 --- a/third_party/skia/experimental/graphite/src/TaskGraph.cpp +++ b/third_party/skia/experimental/graphite/src/TaskGraph.cpp @@ -16,6 +16,12 @@ void TaskGraph::add(sk_sp task) { fTasks.emplace_back(std::move(task)); } +void TaskGraph::addCommands(ResourceProvider* resourceProvider, CommandBuffer* commandBuffer) { + for (const auto& task: fTasks) { + task->addCommands(resourceProvider, commandBuffer); + } +} + void TaskGraph::reset() { fTasks.clear(); } diff --git a/third_party/skia/experimental/graphite/src/TaskGraph.h b/third_party/skia/experimental/graphite/src/TaskGraph.h index 49a1d6e51736..9111be7a2d1a 100644 --- a/third_party/skia/experimental/graphite/src/TaskGraph.h +++ b/third_party/skia/experimental/graphite/src/TaskGraph.h @@ -12,6 +12,8 @@ #include "experimental/graphite/src/Task.h" namespace skgpu { +class CommandBuffer; +class ResourceProvider; class TaskGraph { public: @@ -19,6 +21,7 @@ class TaskGraph { ~TaskGraph(); void add(sk_sp); + void addCommands(ResourceProvider*, CommandBuffer*); void reset(); protected: diff --git a/third_party/skia/experimental/graphite/src/Texture.cpp b/third_party/skia/experimental/graphite/src/Texture.cpp index 80361ec4c7b1..0f7a092de1b3 100644 --- a/third_party/skia/experimental/graphite/src/Texture.cpp +++ b/third_party/skia/experimental/graphite/src/Texture.cpp @@ -9,8 +9,8 @@ namespace skgpu { -Texture::Texture(SkISize dimensions, const TextureInfo& info) - : fDimensions(dimensions), fInfo(info) {} +Texture::Texture(SkISize dimensions, const TextureInfo& info, Ownership ownership) + : fDimensions(dimensions), fInfo(info), fOwnership(ownership) {} Texture::~Texture() {} diff --git a/third_party/skia/experimental/graphite/src/Texture.h b/third_party/skia/experimental/graphite/src/Texture.h index 4cb53ca50314..9a197f668179 100644 --- a/third_party/skia/experimental/graphite/src/Texture.h +++ b/third_party/skia/experimental/graphite/src/Texture.h @@ -9,6 +9,7 @@ #define skgpu_Texture_DEFINED #include "experimental/graphite/include/TextureInfo.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSize.h" @@ -25,11 +26,14 @@ class Texture : public SkRefCnt { const TextureInfo& textureInfo() const { return fInfo; } protected: - Texture(SkISize dimensions, const TextureInfo& info); + Texture(SkISize dimensions, const TextureInfo& info, Ownership); + + Ownership ownership() const { return fOwnership; } private: SkISize fDimensions; TextureInfo fInfo; + Ownership fOwnership; }; } // namepsace skgpu diff --git a/third_party/skia/experimental/graphite/src/TextureInfo.cpp b/third_party/skia/experimental/graphite/src/TextureInfo.cpp index 1c631c63b4a5..5db2eabe0f00 100644 --- a/third_party/skia/experimental/graphite/src/TextureInfo.cpp +++ b/third_party/skia/experimental/graphite/src/TextureInfo.cpp @@ -9,6 +9,30 @@ namespace skgpu { +TextureInfo& TextureInfo::operator=(const TextureInfo& that) { + if (!that.isValid()) { + fValid = false; + return *this; + } + fBackend = that.fBackend; + fSampleCount = that.fSampleCount; + fLevelCount = that.fLevelCount; + fProtected = that.fProtected; + + switch (that.backend()) { +#ifdef SK_METAL + case BackendApi::kMetal: + fMtlSpec = that.fMtlSpec; + break; +#endif + default: + SK_ABORT("Unsupport Backend"); + } + + fValid = true; + return *this; +} + bool TextureInfo::operator==(const TextureInfo& that) const { if (!this->isValid() || !that.isValid()) { return false; diff --git a/third_party/skia/experimental/graphite/src/TextureProxy.cpp b/third_party/skia/experimental/graphite/src/TextureProxy.cpp index f8a5280e6328..9e77456acc30 100644 --- a/third_party/skia/experimental/graphite/src/TextureProxy.cpp +++ b/third_party/skia/experimental/graphite/src/TextureProxy.cpp @@ -33,6 +33,10 @@ sk_sp TextureProxy::refTexture() const { return fTexture; } +const Texture* TextureProxy::texture() const { + return fTexture.get(); +} + #ifdef SK_DEBUG void TextureProxy::validateTexture(const Texture* texture) { SkASSERT(fDimensions == texture->dimensions()); diff --git a/third_party/skia/experimental/graphite/src/TextureProxy.h b/third_party/skia/experimental/graphite/src/TextureProxy.h index 6d84f5050a4d..2a740d6c6a6a 100644 --- a/third_party/skia/experimental/graphite/src/TextureProxy.h +++ b/third_party/skia/experimental/graphite/src/TextureProxy.h @@ -31,6 +31,7 @@ class TextureProxy : public SkRefCnt { bool instantiate(ResourceProvider*); sk_sp refTexture() const; + const Texture* texture() const; private: #ifdef SK_DEBUG diff --git a/third_party/skia/experimental/graphite/src/Uniform.h b/third_party/skia/experimental/graphite/src/Uniform.h index 9e070b2028a7..65e2e4d58bf1 100644 --- a/third_party/skia/experimental/graphite/src/Uniform.h +++ b/third_party/skia/experimental/graphite/src/Uniform.h @@ -8,7 +8,7 @@ #ifndef skgpu_Uniform_DEFINED #define skgpu_Uniform_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/DrawTypes.h" namespace skgpu { diff --git a/third_party/skia/experimental/graphite/src/UniformCache.cpp b/third_party/skia/experimental/graphite/src/UniformCache.cpp index af8b5c212261..87b0b8ce55f9 100644 --- a/third_party/skia/experimental/graphite/src/UniformCache.cpp +++ b/third_party/skia/experimental/graphite/src/UniformCache.cpp @@ -7,17 +7,22 @@ #include "experimental/graphite/src/UniformCache.h" -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" #include "experimental/graphite/src/ContextUtils.h" #include "src/core/SkOpts.h" namespace skgpu { -size_t UniformCache::Hash::operator()(sk_sp ud) const { +size_t UniformCache::Hash::operator()(UniformData* ud) const { + if (!ud) { + return 0; + } return SkOpts::hash_fn(ud->data(), ud->dataSize(), 0); } -bool UniformCache::Eq::operator()(sk_sp a, sk_sp b) const { +bool UniformCache::Eq::operator()(UniformData* a, UniformData* b) const { + if (!a || !b) { + return !a && !b; + } if (a->count() != b->count() || a->uniforms() != b->uniforms() || a->dataSize() != b->dataSize()) { @@ -29,28 +34,41 @@ bool UniformCache::Eq::operator()(sk_sp a, sk_sp b) co }; UniformCache::UniformCache() { - // kInvalidUniformID (aka 0) is reserved - fUniformDataVector.push_back(nullptr); + // kInvalidUniformID is reserved + static_assert(kInvalidUniformID == 0); + fUniformData.push_back(nullptr); + fUniformDataIDs.insert({nullptr, 0}); } -sk_sp UniformCache::findOrCreate(sk_sp ud) { +#ifdef SK_DEBUG +void UniformCache::validate() const { + for (size_t i = 0; i < fUniformData.size(); ++i) { + auto kv = fUniformDataIDs.find(fUniformData[i].get()); + SkASSERT(kv != fUniformDataIDs.end()); + SkASSERT(kv->first == fUniformData[i].get()); + SkASSERT(SkTo(i) == kv->second); + } +} +#endif - auto iter = fUniformDataHash.find(ud); - if (iter != fUniformDataHash.end()) { - SkASSERT((*iter)->id() != UniformData::kInvalidUniformID); - return *iter; +uint32_t UniformCache::insert(sk_sp data) { + auto kv = fUniformDataIDs.find(data.get()); + if (kv != fUniformDataIDs.end()) { + return kv->second; } - ud->setID(fNextUniqueID++); - fUniformDataHash.insert(ud); - fUniformDataVector.push_back(ud); - SkASSERT(fUniformDataVector[ud->id()] == ud); - return ud; + uint32_t id = SkTo(fUniformData.size()); + SkASSERT(data && id != kInvalidUniformID); + + fUniformDataIDs.insert({data.get(), id}); + fUniformData.push_back(std::move(data)); + this->validate(); + return id; } sk_sp UniformCache::lookup(uint32_t uniqueID) { - SkASSERT(uniqueID < fUniformDataVector.size()); - return fUniformDataVector[uniqueID]; + SkASSERT(uniqueID < fUniformData.size()); + return fUniformData[uniqueID]; } } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/UniformCache.h b/third_party/skia/experimental/graphite/src/UniformCache.h index f4b52af76fc2..6aa4ae9b15e3 100644 --- a/third_party/skia/experimental/graphite/src/UniformCache.h +++ b/third_party/skia/experimental/graphite/src/UniformCache.h @@ -8,41 +8,71 @@ #ifndef skgpu_UniformCache_DEFINED #define skgpu_UniformCache_DEFINED -#include -#include #include "include/core/SkRefCnt.h" +#include +#include + namespace skgpu { class UniformData; class UniformCache { public: + static constexpr uint32_t kInvalidUniformID = 0; + UniformCache(); - sk_sp findOrCreate(sk_sp); + // TODO: Revisit the UniformCache::insert and UniformData::Make APIs: + // 1. UniformData::Make requires knowing the data size up front, which involves two invocations + // of the UniformManager. Ideally, we could align uniforms on the fly into a dynamic buffer. + // 2. UniformData stores the offsets for each uniform, but these aren't needed after we've + // filled out the buffer. If we remember layout offsets, it should be stored per Combination + // or RenderStep that defines the uniform set. + // 3. UniformCache's ids are only fundamentally limited by the number of draws that can be + // recorded into a DrawPass, which means a very large recording with multiple passes could + // exceed uint32_t across all the passes. + // 4. The check to know if a UniformData is present in the cache is practically the same for + // checking if the data needs to be uploaded to the GPU, so UniformCache could remember the + // associated BufferBindInfos as well. + // 5. Because UniformCache only cares about the content byte hash/equality, and can memcpy to + // the GPU buffer, the cached data contents could all go into a shared byte array, instead of + // needing to extend SkRefCnt. + // 6. insert() as a name can imply that the value is always added, so we may want a better one. + // It can be a little less generic if UniformCache returns id and bind buffer info. On the + // other hand unordered_map::insert has the same semantics as this insert, so maybe it's fine + + // Add the block of uniform data to the cache and return a unique ID that corresponds to its + // contents. If an identical block of data is already in the cache, that unique ID is returned. + uint32_t insert(sk_sp); sk_sp lookup(uint32_t uniqueID); // The number of unique uniformdata objects in the cache size_t count() const { - SkASSERT(fUniformDataHash.size()+1 == fUniformDataVector.size()); - return fUniformDataHash.size(); + SkASSERT(fUniformData.size() == fUniformDataIDs.size() && fUniformData.size() > 0); + return fUniformData.size() - 1; } private: struct Hash { - size_t operator()(sk_sp) const; + // This hash operator de-references and hashes the data contents + size_t operator()(UniformData*) const; }; struct Eq { - // This equality operator doesn't compare the UniformData's ids - bool operator()(sk_sp, sk_sp) const; + // This equality operator de-references and compares the actual data contents + bool operator()(UniformData*, UniformData*) const; }; - std::unordered_set, Hash, Eq> fUniformDataHash; - std::vector> fUniformDataVector; // The UniformData's unique ID is only unique w/in a Recorder _not_ globally - uint32_t fNextUniqueID = 1; + std::unordered_map fUniformDataIDs; + std::vector> fUniformData; + +#ifdef SK_DEBUG + void validate() const; +#else + void validate() const {} +#endif }; } // namespace skgpu diff --git a/third_party/skia/experimental/graphite/src/UniformManager.cpp b/third_party/skia/experimental/graphite/src/UniformManager.cpp index c6f8a388a9df..0b1dd18da549 100644 --- a/third_party/skia/experimental/graphite/src/UniformManager.cpp +++ b/third_party/skia/experimental/graphite/src/UniformManager.cpp @@ -491,7 +491,7 @@ SLType UniformManager::getUniformTypeForLayout(SLType type) { } uint32_t UniformManager::writeUniforms(SkSpan uniforms, - void** srcs, + const void** srcs, uint32_t* offsets, void *dst) { decltype(&Writer::WriteUniform) write; diff --git a/third_party/skia/experimental/graphite/src/UniformManager.h b/third_party/skia/experimental/graphite/src/UniformManager.h index a9f6a97a4919..76ec4e50db13 100644 --- a/third_party/skia/experimental/graphite/src/UniformManager.h +++ b/third_party/skia/experimental/graphite/src/UniformManager.h @@ -8,7 +8,7 @@ #ifndef skgpu_UniformManager_DEFINED #define skgpu_UniformManager_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/DrawTypes.h" #include "experimental/graphite/src/Uniform.h" #include "include/core/SkSpan.h" @@ -34,7 +34,7 @@ class UniformManager { * writeUniforms(definitions, src, offsets, dst); */ uint32_t writeUniforms(SkSpan definitions, - void** srcs, + const void** srcs, uint32_t* offsets, void *dst); diff --git a/third_party/skia/experimental/graphite/src/geom/Rect.h b/third_party/skia/experimental/graphite/src/geom/Rect.h index 5e8039f0034d..a063fd617f30 100644 --- a/third_party/skia/experimental/graphite/src/geom/Rect.h +++ b/third_party/skia/experimental/graphite/src/geom/Rect.h @@ -8,7 +8,7 @@ #ifndef skgpu_geom_Rect_DEFINED #define skgpu_geom_Rect_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/geom/VectorTypes.h" #include "include/core/SkRect.h" namespace skgpu { diff --git a/third_party/skia/experimental/graphite/src/geom/VectorTypes.h b/third_party/skia/experimental/graphite/src/geom/VectorTypes.h new file mode 100644 index 000000000000..c0b35a9f6112 --- /dev/null +++ b/third_party/skia/experimental/graphite/src/geom/VectorTypes.h @@ -0,0 +1,31 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_geom_VectorTypes_DEFINED +#define skgpu_geom_VectorTypes_DEFINED + +#include "experimental/graphite/include/GraphiteTypes.h" + +namespace skgpu { + +// Use familiar type names from SkSL. +template using vec = skvx::Vec; +using float2 = vec<2>; +using float4 = vec<4>; + +template using ivec = skvx::Vec; +using int2 = ivec<2>; +using int4 = ivec<4>; + +template using uvec = skvx::Vec; +using uint2 = uvec<2>; +using uint4 = uvec<4>; + +}; // namespace skgpu + +#endif // skgpu_geom_VectorTypes_DEFINED + diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlBuffer.mm b/third_party/skia/experimental/graphite/src/mtl/MtlBuffer.mm index 05ff8a554cc5..7d4c8bd3350e 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlBuffer.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlBuffer.mm @@ -49,7 +49,7 @@ } } - size = AlignTo(size, mtlCaps.getMinBufferAlignment()); + size = SkAlignTo(size, mtlCaps.getMinBufferAlignment()); sk_cfp> buffer([gpu->device() newBufferWithLength: size options: options]); #ifdef SK_ENABLE_MTL_DEBUG_INFO (*buffer).label = kBufferTypeNames[(int)type]; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlCaps.h b/third_party/skia/experimental/graphite/src/mtl/MtlCaps.h index b30dcc8454f9..ba612fd451f8 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlCaps.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlCaps.h @@ -28,7 +28,7 @@ class Caps final : public skgpu::Caps { uint32_t sampleCount, Protected) const override; - skgpu::TextureInfo getDefaultDepthStencilTextureInfo(DepthStencilType, + skgpu::TextureInfo getDefaultDepthStencilTextureInfo(Mask, uint32_t sampleCount, Protected) const override; @@ -37,6 +37,9 @@ class Caps final : public skgpu::Caps { size_t getMinBufferAlignment() const { return this->isMac() ? 4 : 1; } + bool isTexturable(const skgpu::TextureInfo&) const override; + bool isRenderable(const skgpu::TextureInfo&) const override; + private: void initGPUFamily(const id); @@ -52,6 +55,11 @@ class Caps final : public skgpu::Caps { static bool GetGPUFamilyFromFeatureSet(id device, GPUFamily* gpuFamily, int* group); + bool onAreColorTypeAndTextureInfoCompatible(SkColorType, + const skgpu::TextureInfo&) const override; + bool isTexturable(MTLPixelFormat) const; + bool isRenderable(MTLPixelFormat, uint32_t numSamples) const; + GPUFamily fGPUFamily; int fFamilyGroup; }; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlCaps.mm b/third_party/skia/experimental/graphite/src/mtl/MtlCaps.mm index c1c0d8356e36..c4628830a73d 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlCaps.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlCaps.mm @@ -10,12 +10,13 @@ #include "experimental/graphite/include/TextureInfo.h" #include "experimental/graphite/include/mtl/MtlTypes.h" #include "experimental/graphite/src/mtl/MtlUtils.h" +#include "src/sksl/SkSLUtil.h" namespace skgpu::mtl { Caps::Caps(const id device) : skgpu::Caps() { - // TODO: allocate shadercaps + fShaderCaps = std::make_unique(); this->initGPUFamily(device); this->initCaps(device); @@ -211,11 +212,49 @@ } void Caps::initCaps(const id device) { - // TODO + if (this->isMac() || fFamilyGroup >= 3) { + fMaxTextureSize = 16384; + } else { + fMaxTextureSize = 8192; + } + + // We use constant address space for our uniform buffers which has various alignment + // requirements for the offset when binding the buffer. On MacOS the offset must align to 256. + // On iOS we must align to the max of the data type consumed by the vertex function or 4 bytes. + // We can ignore the data type and just always use 16 bytes on iOS. + if (this->isMac()) { + fRequiredUniformBufferAlignment = 256; + } else { + fRequiredUniformBufferAlignment = 16; + } } void Caps::initShaderCaps() { - // TODO + SkSL::ShaderCaps* shaderCaps = fShaderCaps.get(); + + // Setting this true with the assumption that this cap will eventually mean we support varying + // precisions and not just via modifiers. + shaderCaps->fUsesPrecisionModifiers = true; + shaderCaps->fFlatInterpolationSupport = true; + + shaderCaps->fShaderDerivativeSupport = true; + + // TODO(skia:8270): Re-enable this once bug 8270 is fixed +#if 0 + if (this->isApple()) { + shaderCaps->fFBFetchSupport = true; + shaderCaps->fFBFetchNeedsCustomOutput = true; // ?? + shaderCaps->fFBFetchColorName = ""; // Somehow add [[color(0)]] to arguments to frag shader + } +#endif + + shaderCaps->fIntegerSupport = true; + shaderCaps->fNonsquareMatrixSupport = true; + shaderCaps->fInverseHyperbolicSupport = true; + + // Metal uses IEEE floats so assuming those values here. + // TODO: add fHalfIs32Bits? + shaderCaps->fFloatIs32Bits = true; } void Caps::initFormatTable() { @@ -237,6 +276,7 @@ info.fFormat = SkColorTypeToFormat(colorType); info.fUsage = usage; info.fStorageMode = MTLStorageModePrivate; + info.fFramebufferOnly = false; return info; } @@ -252,24 +292,60 @@ info.fFormat = SkColorTypeToFormat(colorType); info.fUsage = usage; info.fStorageMode = MTLStorageModePrivate; + info.fFramebufferOnly = false; return info; } -skgpu::TextureInfo Caps::getDefaultDepthStencilTextureInfo(DepthStencilType depthStencilType, +skgpu::TextureInfo Caps::getDefaultDepthStencilTextureInfo(Mask depthStencilType, uint32_t sampleCount, Protected) const { TextureInfo info; info.fSampleCount = sampleCount; info.fLevelCount = 1; - info.fFormat = DepthStencilTypeToFormat(depthStencilType); + info.fFormat = DepthStencilFlagsToFormat(depthStencilType); info.fUsage = MTLTextureUsageRenderTarget; info.fStorageMode = MTLStorageModePrivate; + info.fFramebufferOnly = false; return info; } +bool Caps::isTexturable(const skgpu::TextureInfo& info) const { + return info.mtlTextureSpec().fUsage & MTLTextureUsageShaderRead && + this->isTexturable((MTLPixelFormat)info.mtlTextureSpec().fFormat); +} + +bool Caps::isTexturable(MTLPixelFormat format) const { + // TODO: Fill out format table so that we can query all formats. For now we only support RGBA8 + // which is supported everywhere. + if (format != MTLPixelFormatRGBA8Unorm) { + return false; + } + return true; +} +bool Caps::isRenderable(const skgpu::TextureInfo& info) const { + return info.mtlTextureSpec().fUsage & MTLTextureUsageRenderTarget && + this->isRenderable((MTLPixelFormat)info.mtlTextureSpec().fFormat, info.numSamples()); +} +bool Caps::isRenderable(MTLPixelFormat format, uint32_t numSamples) const { + // TODO: Fill out format table so that we can query all formats. For now we only support RGBA8 + // with a sampleCount of 1 which is supported everywhere. + if (format != MTLPixelFormatRGBA8Unorm || numSamples != 1) { + return false; + } + return true; +} + + +bool Caps::onAreColorTypeAndTextureInfoCompatible(SkColorType type, + const skgpu::TextureInfo& info) const { + // TODO: Fill out format table so that we can query all formats. For now we only support RGBA8 + // for both the color type and format. + return type == kRGBA_8888_SkColorType && + info.mtlTextureSpec().fFormat == MTLPixelFormatRGBA8Unorm; +} } // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.h b/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.h index f67e2b2e0f75..51a697a42893 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.h @@ -35,24 +35,39 @@ class CommandBuffer final : public skgpu::CommandBuffer { } void waitUntilFinished() { // TODO: it's not clear what do to if status is Enqueued. Commit and then wait? - if ((*fCommandBuffer).status == MTLCommandBufferStatusCommitted) { + if ((*fCommandBuffer).status == MTLCommandBufferStatusScheduled || + (*fCommandBuffer).status == MTLCommandBufferStatusCommitted) { [(*fCommandBuffer) waitUntilCompleted]; } + if (!this->isFinished()) { + SkDebugf("Unfinished command buffer status: %d\n", + (int)(*fCommandBuffer).status); + SkASSERT(false); + } } bool commit(); private: CommandBuffer(sk_cfp> cmdBuffer, const Gpu* gpu); - void onBeginRenderPass(const RenderPassDesc&) override; + void onBeginRenderPass(const RenderPassDesc&, + const skgpu::Texture* colorTexture, + const skgpu::Texture* resolveTexture, + const skgpu::Texture* depthStencilTexture) override; void endRenderPass() override; - void onBindRenderPipeline(const skgpu::RenderPipeline*) override; - void onBindUniformBuffer(const skgpu::Buffer*, size_t offset) override; - void onBindVertexBuffers(const skgpu::Buffer* vertexBuffer, - const skgpu::Buffer* instanceBuffer) override; + void onBindGraphicsPipeline(const skgpu::GraphicsPipeline*) override; + void onBindUniformBuffer(UniformSlot, const skgpu::Buffer*, size_t offset) override; + void onBindVertexBuffers(const skgpu::Buffer* vertexBuffer, size_t vertexOffset, + const skgpu::Buffer* instanceBuffer, size_t instanceOffset) override; void onBindIndexBuffer(const skgpu::Buffer* indexBuffer, size_t offset) override; + void onSetScissor(unsigned int left, unsigned int top, + unsigned int width, unsigned int height) override; + void onSetViewport(float x, float y, float width, float height, + float minDepth, float maxDepth) override; + void onSetBlendConstants(std::array blendConstants) override; + void onDraw(PrimitiveType type, unsigned int baseVertex, unsigned int vertexCount) override; void onDrawIndexed(PrimitiveType type, unsigned int baseIndex, unsigned int indexCount, unsigned int baseVertex) override; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.mm b/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.mm index 644ccc2a40eb..802878da28d8 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlCommandBuffer.mm @@ -7,12 +7,15 @@ #include "experimental/graphite/src/mtl/MtlCommandBuffer.h" +#include "experimental/graphite/src/TextureProxy.h" #include "experimental/graphite/src/mtl/MtlBlitCommandEncoder.h" #include "experimental/graphite/src/mtl/MtlBuffer.h" +#include "experimental/graphite/src/mtl/MtlCaps.h" #include "experimental/graphite/src/mtl/MtlGpu.h" +#include "experimental/graphite/src/mtl/MtlGraphicsPipeline.h" #include "experimental/graphite/src/mtl/MtlRenderCommandEncoder.h" -#include "experimental/graphite/src/mtl/MtlRenderPipeline.h" #include "experimental/graphite/src/mtl/MtlTexture.h" +#include "experimental/graphite/src/mtl/MtlUtils.h" namespace skgpu::mtl { @@ -62,12 +65,13 @@ return ((*fCommandBuffer).status != MTLCommandBufferStatusError); } -void CommandBuffer::onBeginRenderPass(const RenderPassDesc& renderPassDesc) { +void CommandBuffer::onBeginRenderPass(const RenderPassDesc& renderPassDesc, + const skgpu::Texture* colorTexture, + const skgpu::Texture* resolveTexture, + const skgpu::Texture* depthStencilTexture) { SkASSERT(!fActiveRenderCommandEncoder); this->endBlitCommandEncoder(); - auto& colorInfo = renderPassDesc.fColorAttachment; - const static MTLLoadAction mtlLoadAction[] { MTLLoadActionLoad, MTLLoadActionClear, @@ -88,18 +92,64 @@ sk_cfp descriptor([[MTLRenderPassDescriptor alloc] init]); // Set up color attachment. - auto colorAttachment = (*descriptor).colorAttachments[0]; - Texture* colorTexture = (Texture*)colorInfo.fTexture.get(); - colorAttachment.texture = colorTexture->mtlTexture(); - const std::array& clearColor = renderPassDesc.fClearColor; - colorAttachment.clearColor = - MTLClearColorMake(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); - colorAttachment.loadAction = mtlLoadAction[static_cast(colorInfo.fLoadOp)]; - colorAttachment.storeAction = mtlStoreAction[static_cast(colorInfo.fStoreOp)]; - - // TODO: - // * setup resolve - // * set up stencil and depth + auto& colorInfo = renderPassDesc.fColorAttachment; + if (colorTexture) { + // TODO: check Texture matches RenderPassDesc + auto colorAttachment = (*descriptor).colorAttachments[0]; + colorAttachment.texture = ((Texture*)colorTexture)->mtlTexture(); + const std::array& clearColor = renderPassDesc.fClearColor; + colorAttachment.clearColor = + MTLClearColorMake(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); + colorAttachment.loadAction = mtlLoadAction[static_cast(colorInfo.fLoadOp)]; + colorAttachment.storeAction = mtlStoreAction[static_cast(colorInfo.fStoreOp)]; + // Set up resolve attachment + if (resolveTexture) { + SkASSERT(renderPassDesc.fColorResolveAttachment.fStoreOp == StoreOp::kStore); + // TODO: check Texture matches RenderPassDesc + colorAttachment.resolveTexture = ((Texture*)resolveTexture)->mtlTexture(); + // Inclusion of a resolve texture implies the client wants to finish the + // renderpass with a resolve. + if (@available(macOS 10.12, iOS 10.0, *)) { + if (colorAttachment.storeAction == MTLStoreActionStore) { + colorAttachment.storeAction = MTLStoreActionStoreAndMultisampleResolve; + } else { + SkASSERT(colorAttachment.storeAction == MTLStoreActionDontCare); + colorAttachment.storeAction = MTLStoreActionMultisampleResolve; + } + } else { + // We expect at least Metal 2 + // TODO: Add error output + SkASSERT(false); + } + } + } + + // Set up stencil/depth attachment + auto& depthStencilInfo = renderPassDesc.fDepthStencilAttachment; + if (depthStencilTexture) { + // TODO: check Texture matches RenderPassDesc + id mtlTexture = ((Texture*)depthStencilTexture)->mtlTexture(); + if (FormatIsDepth(mtlTexture.pixelFormat)) { + auto depthAttachment = (*descriptor).depthAttachment; + depthAttachment.texture = mtlTexture; + depthAttachment.clearDepth = renderPassDesc.fClearDepth; + depthAttachment.loadAction = + mtlLoadAction[static_cast(depthStencilInfo.fLoadOp)]; + depthAttachment.storeAction = + mtlStoreAction[static_cast(depthStencilInfo.fStoreOp)]; + } + if (FormatIsStencil(mtlTexture.pixelFormat)) { + auto stencilAttachment = (*descriptor).stencilAttachment; + stencilAttachment.texture = mtlTexture; + stencilAttachment.clearStencil = renderPassDesc.fClearStencil; + stencilAttachment.loadAction = + mtlLoadAction[static_cast(depthStencilInfo.fLoadOp)]; + stencilAttachment.storeAction = + mtlStoreAction[static_cast(depthStencilInfo.fStoreOp)]; + } + } else { + SkASSERT(!depthStencilInfo.fTextureInfo.isValid()); + } fActiveRenderCommandEncoder = RenderCommandEncoder::Make(fCommandBuffer.get(), descriptor.get()); @@ -137,41 +187,60 @@ } } -void CommandBuffer::onBindRenderPipeline(const skgpu::RenderPipeline* renderPipeline) { +void CommandBuffer::onBindGraphicsPipeline(const skgpu::GraphicsPipeline* graphicsPipeline) { SkASSERT(fActiveRenderCommandEncoder); - auto mtlRenderPipeline = static_cast(renderPipeline); - auto pipelineState = mtlRenderPipeline->mtlPipelineState(); + auto mtlPipeline = static_cast(graphicsPipeline); + auto pipelineState = mtlPipeline->mtlPipelineState(); fActiveRenderCommandEncoder->setRenderPipelineState(pipelineState); - fCurrentVertexStride = mtlRenderPipeline->vertexStride(); - fCurrentInstanceStride = mtlRenderPipeline->instanceStride(); + auto depthStencilState = mtlPipeline->mtlDepthStencilState(); + fActiveRenderCommandEncoder->setDepthStencilState(depthStencilState); + uint32_t stencilRefValue = mtlPipeline->stencilReferenceValue(); + fActiveRenderCommandEncoder->setStencilReferenceValue(stencilRefValue); + + fCurrentVertexStride = mtlPipeline->vertexStride(); + fCurrentInstanceStride = mtlPipeline->instanceStride(); } -void CommandBuffer::onBindUniformBuffer(const skgpu::Buffer* uniformBuffer, +void CommandBuffer::onBindUniformBuffer(UniformSlot slot, + const skgpu::Buffer* uniformBuffer, size_t uniformOffset) { SkASSERT(fActiveRenderCommandEncoder); - id mtlBuffer = static_cast(uniformBuffer)->mtlBuffer(); + id mtlBuffer = uniformBuffer ? static_cast(uniformBuffer)->mtlBuffer() + : nullptr; + + unsigned int bufferIndex; + switch(slot) { + case UniformSlot::kRenderStep: + bufferIndex = GraphicsPipeline::kRenderStepUniformBufferIndex; + break; + case UniformSlot::kPaint: + bufferIndex = GraphicsPipeline::kPaintUniformBufferIndex; + break; + } - fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, uniformOffset, - RenderPipeline::kUniformBufferIndex); - fActiveRenderCommandEncoder->setFragmentBuffer(mtlBuffer, uniformOffset, - RenderPipeline::kUniformBufferIndex); + fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, uniformOffset, bufferIndex); + fActiveRenderCommandEncoder->setFragmentBuffer(mtlBuffer, uniformOffset, bufferIndex); } void CommandBuffer::onBindVertexBuffers(const skgpu::Buffer* vertexBuffer, - const skgpu::Buffer* instanceBuffer) { + size_t vertexOffset, + const skgpu::Buffer* instanceBuffer, + size_t instanceOffset) { SkASSERT(fActiveRenderCommandEncoder); if (vertexBuffer) { id mtlBuffer = static_cast(vertexBuffer)->mtlBuffer(); - fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, 0, - RenderPipeline::kVertexBufferIndex); + SkASSERT((vertexOffset & 0xF) == 0); + fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, vertexOffset, + GraphicsPipeline::kVertexBufferIndex); } if (instanceBuffer) { id mtlBuffer = static_cast(instanceBuffer)->mtlBuffer(); - fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, 0, - RenderPipeline::kInstanceBufferIndex); + SkASSERT((instanceOffset & 0xF) == 0); + fActiveRenderCommandEncoder->setVertexBuffer(mtlBuffer, instanceOffset, + GraphicsPipeline::kInstanceBufferIndex); } } @@ -185,6 +254,35 @@ } } +void CommandBuffer::onSetScissor(unsigned int left, unsigned int top, + unsigned int width, unsigned int height) { + SkASSERT(fActiveRenderCommandEncoder); + MTLScissorRect scissorRect = { left, top, width, height }; + fActiveRenderCommandEncoder->setScissorRect(scissorRect); +} + +void CommandBuffer::onSetViewport(float x, float y, float width, float height, + float minDepth, float maxDepth) { + SkASSERT(fActiveRenderCommandEncoder); + MTLViewport viewport = { x, y, width, height, minDepth, maxDepth }; + fActiveRenderCommandEncoder->setViewport(viewport); + + float invTwoW = 2.f / width; + float invTwoH = 2.f / height; + // Metal's framebuffer space has (0, 0) at the top left. This agrees with Skia's device coords. + // However, in NDC (-1, -1) is the bottom left. So we flip the origin here (assuming all + // surfaces we have are TopLeft origin). + float rtAdjust[4] = {invTwoW, -invTwoH, -1.f - x * invTwoW, 1.f + y * invTwoH}; + fActiveRenderCommandEncoder->setVertexBytes(rtAdjust, 4 * sizeof(float), + GraphicsPipeline::kIntrinsicUniformBufferIndex); +} + +void CommandBuffer::onSetBlendConstants(std::array blendConstants) { + SkASSERT(fActiveRenderCommandEncoder); + + fActiveRenderCommandEncoder->setBlendColor(blendConstants.data()); +} + static MTLPrimitiveType graphite_to_mtl_primitive(PrimitiveType primitiveType) { const static MTLPrimitiveType mtlPrimitiveType[] { MTLPrimitiveTypeTriangle, @@ -211,14 +309,19 @@ static MTLPrimitiveType graphite_to_mtl_primitive(PrimitiveType primitiveType) { unsigned int indexCount, unsigned int baseVertex) { SkASSERT(fActiveRenderCommandEncoder); - auto mtlPrimitiveType = graphite_to_mtl_primitive(type); + if (@available(macOS 10.11, iOS 9.0, *)) { + auto mtlPrimitiveType = graphite_to_mtl_primitive(type); + size_t indexOffset = fCurrentIndexBufferOffset + sizeof(uint16_t )* baseIndex; + // Use the "instance" variant witha count of 1 so that we can pass in a base vertex + // instead of rebinding a vertex buffer offset. + fActiveRenderCommandEncoder->drawIndexedPrimitives(mtlPrimitiveType, indexCount, + MTLIndexTypeUInt16, fCurrentIndexBuffer, + indexOffset, 1, baseVertex, 0); - fActiveRenderCommandEncoder->setVertexBufferOffset(baseVertex * fCurrentVertexStride, - RenderPipeline::kVertexBufferIndex); - size_t indexOffset = fCurrentIndexBufferOffset + sizeof(uint16_t )* baseIndex; - fActiveRenderCommandEncoder->drawIndexedPrimitives(mtlPrimitiveType, indexCount, - MTLIndexTypeUInt16, fCurrentIndexBuffer, - indexOffset); + } else { + // TODO: Do nothing, fatal failure, or just the regular graphite error reporting overhaul? + SkDebugf("[graphite] WARNING - Skipping unsupported draw call.\n"); + } } void CommandBuffer::onDrawInstanced(PrimitiveType type, unsigned int baseVertex, @@ -238,17 +341,17 @@ static MTLPrimitiveType graphite_to_mtl_primitive(PrimitiveType primitiveType) { unsigned int baseInstance, unsigned int instanceCount) { SkASSERT(fActiveRenderCommandEncoder); - auto mtlPrimitiveType = graphite_to_mtl_primitive(type); - - fActiveRenderCommandEncoder->setVertexBufferOffset(baseVertex * fCurrentVertexStride, - RenderPipeline::kVertexBufferIndex); - fActiveRenderCommandEncoder->setVertexBufferOffset(baseInstance * fCurrentInstanceStride, - RenderPipeline::kInstanceBufferIndex); - size_t indexOffset = fCurrentIndexBufferOffset + sizeof(uint16_t) * baseIndex; - fActiveRenderCommandEncoder->drawIndexedPrimitives(mtlPrimitiveType, indexCount, - MTLIndexTypeUInt16, fCurrentIndexBuffer, - indexOffset, instanceCount, - baseVertex, baseInstance); + if (@available(macOS 10.11, iOS 9.0, *)) { + auto mtlPrimitiveType = graphite_to_mtl_primitive(type); + size_t indexOffset = fCurrentIndexBufferOffset + sizeof(uint16_t) * baseIndex; + fActiveRenderCommandEncoder->drawIndexedPrimitives(mtlPrimitiveType, indexCount, + MTLIndexTypeUInt16, fCurrentIndexBuffer, + indexOffset, instanceCount, + baseVertex, baseInstance); + } else { + // TODO: Do nothing, fatal failure, or just the regular graphite error reporting overhaul? + SkDebugf("[graphite] WARNING - Skipping unsupported draw call.\n"); + } } void CommandBuffer::onCopyTextureToBuffer(const skgpu::Texture* texture, diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlGpu.h b/third_party/skia/experimental/graphite/src/mtl/MtlGpu.h index b63efdb0d9d2..19cd403c27fb 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlGpu.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlGpu.h @@ -34,6 +34,9 @@ class Gpu final : public skgpu::Gpu { bool onSubmit(sk_sp) override; + BackendTexture onCreateBackendTexture(SkISize dimensions, const skgpu::TextureInfo&) override; + void onDeleteBackendTexture(BackendTexture&) override; + #if GRAPHITE_TEST_UTILS void testingOnly_startCapture() override; void testingOnly_endCapture() override; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlGpu.mm b/third_party/skia/experimental/graphite/src/mtl/MtlGpu.mm index 2eed30a3ce26..d1a6346f169a 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlGpu.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlGpu.mm @@ -7,13 +7,29 @@ #include "experimental/graphite/src/mtl/MtlGpu.h" +#include "experimental/graphite/include/BackendTexture.h" +#include "experimental/graphite/include/TextureInfo.h" #include "experimental/graphite/src/Caps.h" #include "experimental/graphite/src/mtl/MtlCommandBuffer.h" #include "experimental/graphite/src/mtl/MtlResourceProvider.h" +#include "experimental/graphite/src/mtl/MtlTexture.h" namespace skgpu::mtl { sk_sp Gpu::Make(const BackendContext& context) { + // TODO: This was taken from GrMtlGpu.mm's Make, does graphite deserve a higher version? + if (@available(macOS 10.14, iOS 11.0, *)) { + // no warning needed + } else { + SkDebugf("*** Error ***: Skia's Graphite backend no longer supports this OS version.\n"); +#ifdef SK_BUILD_FOR_IOS + SkDebugf("Minimum supported version is iOS 11.0.\n"); +#else + SkDebugf("Minimum supported version is MacOS 10.14.\n"); +#endif + return nullptr; + } + sk_cfp> device = sk_ret_cfp((id)(context.fDevice.get())); sk_cfp> queue = sk_ret_cfp((id)(context.fQueue.get())); @@ -26,6 +42,7 @@ : skgpu::Gpu(std::move(caps)) , fDevice(std::move(device)) , fQueue(std::move(queue)) { + this->initCompiler(); fResourceProvider.reset(new ResourceProvider(this)); } @@ -62,6 +79,20 @@ void waitUntilFinished(const skgpu::Gpu*) override { return true; } +BackendTexture Gpu::onCreateBackendTexture(SkISize dimensions, const skgpu::TextureInfo& info) { + sk_cfp> texture = Texture::MakeMtlTexture(this, dimensions, info); + if (!texture) { + return {}; + } + return BackendTexture(dimensions, (Handle)texture.release()); +} + +void Gpu::onDeleteBackendTexture(BackendTexture& texture) { + SkASSERT(texture.backend() == BackendApi::kMetal); + Handle texHandle = texture.getMtlTexture(); + SkCFSafeRelease(texHandle); +} + #if GRAPHITE_TEST_UTILS void Gpu::testingOnly_startCapture() { if (@available(macOS 10.13, iOS 11.0, *)) { diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.h b/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.h new file mode 100644 index 000000000000..c98a7afd67ff --- /dev/null +++ b/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.h @@ -0,0 +1,63 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_MtlGraphicsPipeline_DEFINED +#define skgpu_MtlGraphicsPipeline_DEFINED + +#include "experimental/graphite/src/GraphicsPipeline.h" + +#include "include/ports/SkCFObject.h" +#include + +#import + +namespace skgpu { +class GraphicsPipelineDesc; +} // namespace skgpu + +namespace skgpu::mtl { +class Gpu; + +class GraphicsPipeline final : public skgpu::GraphicsPipeline { +public: + inline static constexpr unsigned int kIntrinsicUniformBufferIndex = 0; + inline static constexpr unsigned int kRenderStepUniformBufferIndex = 1; + inline static constexpr unsigned int kPaintUniformBufferIndex = 2; + inline static constexpr unsigned int kVertexBufferIndex = 3; + inline static constexpr unsigned int kInstanceBufferIndex = 4; + + static sk_sp Make(const Gpu*, const skgpu::GraphicsPipelineDesc&); + ~GraphicsPipeline() override {} + + id mtlPipelineState() const { return fPipelineState.get(); } + id mtlDepthStencilState() const { return fDepthStencilState; } + uint32_t stencilReferenceValue() const { return fStencilReferenceValue; } + size_t vertexStride() const { return fVertexStride; } + size_t instanceStride() const { return fInstanceStride; } + +private: + GraphicsPipeline(sk_cfp> pso, + id dss, + uint32_t refValue, + size_t vertexStride, + size_t instanceStride) + : fPipelineState(std::move(pso)) + , fDepthStencilState(dss) + , fStencilReferenceValue(refValue) + , fVertexStride(vertexStride) + , fInstanceStride(instanceStride) {} + + sk_cfp> fPipelineState; + id fDepthStencilState; + uint32_t fStencilReferenceValue; + size_t fVertexStride = 0; + size_t fInstanceStride = 0; +}; + +} // namespace skgpu::mtl + +#endif // skgpu_MtlGraphicsPipeline_DEFINED diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.mm b/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.mm new file mode 100644 index 000000000000..603e1dc11faf --- /dev/null +++ b/third_party/skia/experimental/graphite/src/mtl/MtlGraphicsPipeline.mm @@ -0,0 +1,410 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "experimental/graphite/src/mtl/MtlGraphicsPipeline.h" + +#include "experimental/graphite/include/TextureInfo.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" +#include "experimental/graphite/src/Renderer.h" +#include "experimental/graphite/src/mtl/MtlGpu.h" +#include "experimental/graphite/src/mtl/MtlResourceProvider.h" +#include "experimental/graphite/src/mtl/MtlUtils.h" +#include "include/core/SkSpan.h" +#include "include/private/SkSLString.h" + +namespace skgpu::mtl { + +namespace { + +SkSL::String emit_SKSL_uniforms(int bufferID, const char* name, SkSpan uniforms) { + SkSL::String result; + + result.appendf("layout (binding=%d) uniform %sUniforms {\n", bufferID, name); + + int offset = 0; + for (auto u : uniforms) { + int count = u.count() ? u.count() : 1; + // TODO: this is sufficient for the sprint but should be changed to use SkSL's + // machinery + result.appendf(" layout(offset=%d) ", offset); + switch (u.type()) { + case SLType::kFloat4: + result.append("float4"); + offset += 16 * count; + break; + case SLType::kFloat2: + result.append("float2"); + offset += 8 * count; + break; + case SLType::kFloat: + result.append("float"); + offset += 4 * count; + break; + case SLType::kFloat4x4: + result.append("float4x4"); + offset += 64 * count; + break; + case SLType::kHalf4: + result.append("half4"); + offset += 8 * count; + break; + default: + SkASSERT(0); + } + + result.append(" "); + result.append(u.name()); + if (u.count()) { + result.append("["); + result.append(std::to_string(u.count())); + result.append("]"); + } + result.append(";\n"); + } + result.append("};\n\n"); + return result; +} + +SkSL::String emit_SkSL_attributes(SkSpan vertexAttrs, + SkSpan instanceAttrs) { + SkSL::String result; + + int attr = 0; + auto add_attrs = [&](SkSpan attrs) { + for (auto a : attrs) { + // TODO: this is sufficient for the sprint but should be changed to use SkSL's + // machinery + result.appendf(" layout(location=%d) in ", attr++); + switch (a.gpuType()) { + case SLType::kFloat4: + result.append("float4"); + break; + case SLType::kFloat2: + result.append("float2"); + break; + case SLType::kFloat: + result.append("float"); + break; + case SLType::kHalf4: + result.append("half4"); + break; + default: + SkASSERT(0); + } + + result.appendf(" %s;\n", a.name()); + } + }; + + if (!vertexAttrs.empty()) { + result.append("// vertex attrs\n"); + add_attrs(vertexAttrs); + } + if (!instanceAttrs.empty()) { + result.append("// instance attrs\n"); + add_attrs(instanceAttrs); + } + + return result; +} + +SkSL::String get_sksl_vs(const GraphicsPipelineDesc& desc) { + const RenderStep* step = desc.renderStep(); + // TODO: To more completely support end-to-end rendering, this will need to be updated so that + // the RenderStep shader snippet can produce a device coord, a local coord, and depth. + // If the paint combination doesn't need the local coord it can be ignored, otherwise we need + // a varying for it. The fragment function's output will need to be updated to have a color and + // the depth, or when there's no combination, just the depth. Lastly, we also should add the + // static/intrinsic uniform binding point so that we can handle normalizing the device position + // produced by the RenderStep automatically. + + // Fixed program header + SkSL::String sksl = + "layout (binding=0) uniform intrinsicUniforms {\n" + " layout(offset=0) float4 rtAdjust;\n" + "};\n" + "\n"; + + if (step->numVertexAttributes() > 0 || step->numInstanceAttributes() > 0) { + sksl += emit_SkSL_attributes(step->vertexAttributes(), step->instanceAttributes()); + } + + // Uniforms needed by RenderStep + if (step->numUniforms() > 0) { + sksl += emit_SKSL_uniforms(1, "Step", step->uniforms()); + } + + // Vertex shader function declaration + sksl += "void main() {\n"; + // Vertex shader body + sksl += step->vertexSkSL(); + sksl += "sk_Position = float4(devPosition.xy * rtAdjust.xy + rtAdjust.zw, devPosition.zw);\n" + "}\n"; + + return sksl; +} + +SkSL::String get_sksl_fs(const GraphicsPipelineDesc& desc) { + SkSL::String sksl; + + // Typedefs needed for painting + auto paintUniforms = GetUniforms(desc.shaderCombo().fShaderType); + if (!paintUniforms.empty()) { + sksl += emit_SKSL_uniforms(2, "FS", paintUniforms); + } + + sksl += "layout(location = 0, index = 0) out half4 sk_FragColor;\n"; + sksl += "void main() {\n" + " half4 outColor;\n"; + sksl += GetShaderSkSL(desc.shaderCombo().fShaderType); + sksl += " sk_FragColor = outColor;\n" + "}\n"; + + return sksl; +} + +inline MTLVertexFormat attribute_type_to_mtlformat(VertexAttribType type) { + switch (type) { + case VertexAttribType::kFloat: + return MTLVertexFormatFloat; + case VertexAttribType::kFloat2: + return MTLVertexFormatFloat2; + case VertexAttribType::kFloat3: + return MTLVertexFormatFloat3; + case VertexAttribType::kFloat4: + return MTLVertexFormatFloat4; + case VertexAttribType::kHalf: + if (@available(macOS 10.13, iOS 11.0, *)) { + return MTLVertexFormatHalf; + } else { + return MTLVertexFormatInvalid; + } + case VertexAttribType::kHalf2: + return MTLVertexFormatHalf2; + case VertexAttribType::kHalf4: + return MTLVertexFormatHalf4; + case VertexAttribType::kInt2: + return MTLVertexFormatInt2; + case VertexAttribType::kInt3: + return MTLVertexFormatInt3; + case VertexAttribType::kInt4: + return MTLVertexFormatInt4; + case VertexAttribType::kByte: + if (@available(macOS 10.13, iOS 11.0, *)) { + return MTLVertexFormatChar; + } else { + return MTLVertexFormatInvalid; + } + case VertexAttribType::kByte2: + return MTLVertexFormatChar2; + case VertexAttribType::kByte4: + return MTLVertexFormatChar4; + case VertexAttribType::kUByte: + if (@available(macOS 10.13, iOS 11.0, *)) { + return MTLVertexFormatUChar; + } else { + return MTLVertexFormatInvalid; + } + case VertexAttribType::kUByte2: + return MTLVertexFormatUChar2; + case VertexAttribType::kUByte4: + return MTLVertexFormatUChar4; + case VertexAttribType::kUByte_norm: + if (@available(macOS 10.13, iOS 11.0, *)) { + return MTLVertexFormatUCharNormalized; + } else { + return MTLVertexFormatInvalid; + } + case VertexAttribType::kUByte4_norm: + return MTLVertexFormatUChar4Normalized; + case VertexAttribType::kShort2: + return MTLVertexFormatShort2; + case VertexAttribType::kShort4: + return MTLVertexFormatShort4; + case VertexAttribType::kUShort2: + return MTLVertexFormatUShort2; + case VertexAttribType::kUShort2_norm: + return MTLVertexFormatUShort2Normalized; + case VertexAttribType::kInt: + return MTLVertexFormatInt; + case VertexAttribType::kUInt: + return MTLVertexFormatUInt; + case VertexAttribType::kUShort_norm: + if (@available(macOS 10.13, iOS 11.0, *)) { + return MTLVertexFormatUShortNormalized; + } else { + return MTLVertexFormatInvalid; + } + case VertexAttribType::kUShort4_norm: + return MTLVertexFormatUShort4Normalized; + } + SK_ABORT("Unknown vertex attribute type"); +} + +MTLVertexDescriptor* create_vertex_descriptor(const RenderStep* step) { + auto vertexDescriptor = [[MTLVertexDescriptor alloc] init]; + int attributeIndex = 0; + + int vertexAttributeCount = step->numVertexAttributes(); + size_t vertexAttributeOffset = 0; + for (const auto& attribute : step->vertexAttributes()) { + MTLVertexAttributeDescriptor* mtlAttribute = vertexDescriptor.attributes[attributeIndex]; + MTLVertexFormat format = attribute_type_to_mtlformat(attribute.cpuType()); + SkASSERT(MTLVertexFormatInvalid != format); + mtlAttribute.format = format; + mtlAttribute.offset = vertexAttributeOffset; + mtlAttribute.bufferIndex = GraphicsPipeline::kVertexBufferIndex; + + vertexAttributeOffset += attribute.sizeAlign4(); + attributeIndex++; + } + SkASSERT(vertexAttributeOffset == step->vertexStride()); + + if (vertexAttributeCount) { + MTLVertexBufferLayoutDescriptor* vertexBufferLayout = + vertexDescriptor.layouts[GraphicsPipeline::kVertexBufferIndex]; + vertexBufferLayout.stepFunction = MTLVertexStepFunctionPerVertex; + vertexBufferLayout.stepRate = 1; + vertexBufferLayout.stride = vertexAttributeOffset; + } + + int instanceAttributeCount = step->numInstanceAttributes(); + size_t instanceAttributeOffset = 0; + for (const auto& attribute : step->instanceAttributes()) { + MTLVertexAttributeDescriptor* mtlAttribute = vertexDescriptor.attributes[attributeIndex]; + MTLVertexFormat format = attribute_type_to_mtlformat(attribute.cpuType()); + SkASSERT(MTLVertexFormatInvalid != format); + mtlAttribute.format = format; + mtlAttribute.offset = instanceAttributeOffset; + mtlAttribute.bufferIndex = GraphicsPipeline::kInstanceBufferIndex; + + instanceAttributeOffset += attribute.sizeAlign4(); + attributeIndex++; + } + SkASSERT(instanceAttributeOffset == step->instanceStride()); + + if (instanceAttributeCount) { + MTLVertexBufferLayoutDescriptor* instanceBufferLayout = + vertexDescriptor.layouts[GraphicsPipeline::kInstanceBufferIndex]; + instanceBufferLayout.stepFunction = MTLVertexStepFunctionPerInstance; + instanceBufferLayout.stepRate = 1; + instanceBufferLayout.stride = instanceAttributeOffset; + } + return vertexDescriptor; +} + +} // anonymous namespace + +enum ShaderType { + kVertex_ShaderType = 0, + kFragment_ShaderType = 1, + + kLast_ShaderType = kFragment_ShaderType +}; +static const int kShaderTypeCount = kLast_ShaderType + 1; + +sk_sp GraphicsPipeline::Make(const Gpu* gpu, + const skgpu::GraphicsPipelineDesc& desc) { + sk_cfp psoDescriptor([[MTLRenderPipelineDescriptor alloc] init]); + + SkSL::String msl[kShaderTypeCount]; + SkSL::Program::Inputs inputs[kShaderTypeCount]; + SkSL::Program::Settings settings; + + if (!SkSLToMSL(gpu, + get_sksl_vs(desc), + SkSL::ProgramKind::kVertex, + settings, + &msl[kVertex_ShaderType], + &inputs[kVertex_ShaderType])) { + return nullptr; + } + + if (!SkSLToMSL(gpu, + get_sksl_fs(desc), + SkSL::ProgramKind::kFragment, + settings, + &msl[kFragment_ShaderType], + &inputs[kFragment_ShaderType])) { + return nullptr; + } + + sk_cfp> shaderLibraries[kShaderTypeCount]; + + shaderLibraries[kVertex_ShaderType] = CompileShaderLibrary(gpu, + msl[kVertex_ShaderType]); + shaderLibraries[kFragment_ShaderType] = CompileShaderLibrary(gpu, + msl[kFragment_ShaderType]); + if (!shaderLibraries[kVertex_ShaderType] || !shaderLibraries[kFragment_ShaderType]) { + return nullptr; + } + + (*psoDescriptor).label = @(desc.renderStep()->name()); + + (*psoDescriptor).vertexFunction = + [shaderLibraries[kVertex_ShaderType].get() newFunctionWithName: @"vertexMain"]; + (*psoDescriptor).fragmentFunction = + [shaderLibraries[kFragment_ShaderType].get() newFunctionWithName: @"fragmentMain"]; + + // TODO: I *think* this gets cleaned up by the pipelineDescriptor? + (*psoDescriptor).vertexDescriptor = create_vertex_descriptor(desc.renderStep()); + + // TODO: I *think* this gets cleaned up by the pipelineDescriptor as well? + auto mtlColorAttachment = [[MTLRenderPipelineColorAttachmentDescriptor alloc] init]; + + mtlColorAttachment.pixelFormat = MTLPixelFormatRGBA8Unorm; + mtlColorAttachment.blendingEnabled = FALSE; + mtlColorAttachment.writeMask = MTLColorWriteMaskAll; + + (*psoDescriptor).colorAttachments[0] = mtlColorAttachment; + + Mask depthStencilFlags = desc.renderStep()->depthStencilFlags(); + if (depthStencilFlags != DepthStencilFlags::kNone) { + skgpu::TextureInfo texInfo = + gpu->caps()->getDefaultDepthStencilTextureInfo(depthStencilFlags, + 1 /*sampleCount*/, // TODO: MSAA + Protected::kNo); + mtl::TextureInfo mtlTexInfo; + texInfo.getMtlTextureInfo(&mtlTexInfo); + if (depthStencilFlags & DepthStencilFlags::kStencil) { + (*psoDescriptor).stencilAttachmentPixelFormat = (MTLPixelFormat)mtlTexInfo.fFormat; + } else { + (*psoDescriptor).stencilAttachmentPixelFormat = MTLPixelFormatInvalid; + } + if (depthStencilFlags & DepthStencilFlags::kDepth) { + (*psoDescriptor).depthAttachmentPixelFormat = (MTLPixelFormat)mtlTexInfo.fFormat; + } else { + (*psoDescriptor).depthAttachmentPixelFormat = MTLPixelFormatInvalid; + } + } else { + (*psoDescriptor).stencilAttachmentPixelFormat = MTLPixelFormatInvalid; + (*psoDescriptor).depthAttachmentPixelFormat = MTLPixelFormatInvalid; + } + + NSError* error; + sk_cfp> pso( + [gpu->device() newRenderPipelineStateWithDescriptor:psoDescriptor.get() + error:&error]); + if (!pso) { + SkDebugf("Pipeline creation failure\n"); + SkDebugf("Errors:\n%s", error.debugDescription.UTF8String); + return nullptr; + } + + auto resourceProvider = (skgpu::mtl::ResourceProvider*) gpu->resourceProvider(); + const DepthStencilSettings& depthStencilSettings = desc.renderStep()->depthStencilSettings(); + id dss = resourceProvider->findOrCreateCompatibleDepthStencilState( + depthStencilSettings); + + return sk_sp(new GraphicsPipeline(std::move(pso), + dss, + depthStencilSettings.fStencilReferenceValue, + desc.renderStep()->vertexStride(), + desc.renderStep()->instanceStride())); +} + +} // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlRenderCommandEncoder.h b/third_party/skia/experimental/graphite/src/mtl/MtlRenderCommandEncoder.h index d754ef346d08..52a40462f501 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlRenderCommandEncoder.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlRenderCommandEncoder.h @@ -153,15 +153,11 @@ class RenderCommandEncoder : public SkRefCnt { alpha: blendConst[3]]; } - void setStencilFrontBackReferenceValues(uint32_t frontReferenceValue, - uint32_t backReferenceValue) - SK_API_AVAILABLE(macos(10.11), ios(9.0)) { - [(*fCommandEncoder) - setStencilFrontReferenceValue:frontReferenceValue - backReferenceValue:backReferenceValue]; - } void setStencilReferenceValue(uint32_t referenceValue) { - [(*fCommandEncoder) setStencilReferenceValue:referenceValue]; + if (referenceValue != fCurrentStencilReferenceValue) { + [(*fCommandEncoder) setStencilReferenceValue:referenceValue]; + fCurrentStencilReferenceValue = referenceValue; + } } void setDepthStencilState(id depthStencilState) { if (depthStencilState != fCurrentDepthStencilState) { @@ -251,8 +247,9 @@ class RenderCommandEncoder : public SkRefCnt { id fCurrentRenderPipelineState = nil; id fCurrentDepthStencilState = nil; + uint32_t fCurrentStencilReferenceValue = 0; // Metal default value - inline static constexpr int kMaxExpectedBuffers = 4; + inline static constexpr int kMaxExpectedBuffers = 5; id fCurrentVertexBuffer[kMaxExpectedBuffers]; NSUInteger fCurrentVertexOffset[kMaxExpectedBuffers]; id fCurrentFragmentBuffer[kMaxExpectedBuffers]; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.h b/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.h deleted file mode 100644 index 68fd2e35ed42..000000000000 --- a/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef skgpu_MtlRenderPipeline_DEFINED -#define skgpu_MtlRenderPipeline_DEFINED - -#include "experimental/graphite/src/RenderPipeline.h" - -#include "include/ports/SkCFObject.h" -#include - -#import - -namespace skgpu { -class RenderPipeline; -class RenderPipelineDesc; -} // namespace skgpu - -namespace skgpu::mtl { -class Gpu; - -class RenderPipeline final : public skgpu::RenderPipeline { -public: - inline static constexpr unsigned int kUniformBufferIndex = 0; - inline static constexpr unsigned int kVertexBufferIndex = 1; - inline static constexpr unsigned int kInstanceBufferIndex = 2; - - static sk_sp Make(const Gpu*, const skgpu::RenderPipelineDesc&); - ~RenderPipeline() override {} - - id mtlPipelineState() const { return fPipelineState.get(); } - size_t vertexStride() const { return fVertexStride; } - size_t instanceStride() const { return fInstanceStride; } - -private: - RenderPipeline(sk_cfp> pso, - size_t vertexStride, - size_t instanceStride) - : fPipelineState(std::move(pso)) - , fVertexStride(vertexStride) - , fInstanceStride(instanceStride) {} - - sk_cfp> fPipelineState; - size_t fVertexStride = 0; - size_t fInstanceStride = 0; -}; - -} // namespace skgpu::mtl - -#endif // skgpu_MtlRenderPipeline_DEFINED diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.mm b/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.mm deleted file mode 100644 index 2749245ffc03..000000000000 --- a/third_party/skia/experimental/graphite/src/mtl/MtlRenderPipeline.mm +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright 2021 Google LLC - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "experimental/graphite/src/mtl/MtlRenderPipeline.h" - -#include "experimental/graphite/src/RenderPipelineDesc.h" -#include "experimental/graphite/src/mtl/MtlGpu.h" -#include "experimental/graphite/src/mtl/MtlUtils.h" -#include "include/private/SkSLString.h" - -namespace skgpu::mtl { - -static const char* kTestingOnlyShaders[] = { - // clear viewport to blue - "#include \n" - "#include \n" - "using namespace metal;\n" - "\n" - "typedef struct {\n" - " float4 position [[position]];\n" - "} VertexOutput;\n" - "\n" - "vertex VertexOutput vertexMain(uint vertexID [[vertex_id]]) {\n" - " VertexOutput out;\n" - " float2 position = float2(float(vertexID >> 1), float(vertexID & 1));\n" - " out.position.xy = position * 2 - 1;\n" - " out.position.zw = float2(0.0, 1.0);\n" - " return out;\n" - "}\n" - "\n" - "fragment float4 fragmentMain(VertexOutput in [[stage_in]]) {\n" - " return float4(0.0, 0.0, 1.0, 1.0);\n" - "}", - - // clear subarea to given color, using uniform buffer - "#include \n" - "#include \n" - "using namespace metal;\n" - "\n" - "typedef struct {\n" - " float4 position [[position]];\n" - "} VertexOutput;\n" - "\n" - "typedef struct {\n" - " float4 uPosXform;\n" - " float4 uColor;\n" - "} UniformData;\n" - "\n" - "vertex VertexOutput vertexMain(constant UniformData& uniforms [[buffer(0)]],\n" - " uint vertexID [[vertex_id]]) {\n" - " VertexOutput out;\n" - " float2 position = float2(float(vertexID >> 1), float(vertexID & 1));\n" - " out.position.xy = position * uniforms.uPosXform.xy + uniforms.uPosXform.zw;\n" - " out.position.zw = float2(0.0, 1.0);\n" - " return out;\n" - "}\n" - "\n" - "fragment float4 fragmentMain(constant UniformData& uniforms [[buffer(0)]],\n" - " VertexOutput in [[stage_in]]) {\n" - " return uniforms.uColor;\n" - "}", - - // draw triangles with given color, using uniform buffer and vertex data - "#include \n" - "#include \n" - "using namespace metal;\n" - "\n" - "typedef struct {\n" - " float2 position [[attribute(0)]];\n" - "} VertexInput;\n" - "\n" - "typedef struct {\n" - " float4 position [[position]];\n" - "} VertexOutput;\n" - "\n" - "typedef struct {\n" - " float4 uPosXform;\n" - " float4 uColor;\n" - "} UniformData;\n" - "\n" - "vertex VertexOutput vertexMain(VertexInput in [[stage_in]],\n" - " constant UniformData& uniforms [[buffer(0)]],\n" - " uint vertexID [[vertex_id]]) {\n" - " VertexOutput out;\n" - " float2 position = in.position;\n" - " out.position.xy = position * uniforms.uPosXform.xy + uniforms.uPosXform.zw;\n" - " out.position.zw = float2(0.0, 1.0);\n" - " return out;\n" - "}\n" - "\n" - "fragment float4 fragmentMain(constant UniformData& uniforms [[buffer(0)]],\n" - " VertexOutput in [[stage_in]]) {\n" - " return uniforms.uColor;\n" - "}", - - // draw triangles with vertex ID and instance buffer - "#include \n" - "#include \n" - "using namespace metal;\n" - "\n" - "typedef struct {\n" - " float2 position [[attribute(0)]];\n" - " float2 dims [[attribute(1)]];\n" - " float4 color [[attribute(2)]];\n" - "} InstanceInput;\n" - "\n" - "typedef struct {\n" - " float4 position [[position]];\n" - " float4 color;\n" - "} VertexOutput;\n" - "\n" - "vertex VertexOutput vertexMain(InstanceInput in [[stage_in]],\n" - " uint vertexID [[vertex_id]]) {\n" - " VertexOutput out;\n" - " float2 position = float2(float(vertexID >> 1), float(vertexID & 1));\n" - " out.position.xy = position * in.dims + in.position;\n" - " out.position.zw = float2(0.0, 1.0);\n" - " out.color = in.color;" - " return out;\n" - "}\n" - "\n" - "fragment float4 fragmentMain(VertexOutput in [[stage_in]]) {\n" - " return in.color;\n" - "}", -}; - -static constexpr NSString* kTestingOnlyShaderLabels[] = { - @"Clear viewport to blue", - @"Clear rect with uniforms", - @"Draw triangles with uniform color", - @"Draw triangles with instance buffer" -}; - -static inline MTLVertexFormat attribute_type_to_mtlformat(VertexAttribType type) { - switch (type) { - case VertexAttribType::kFloat: - return MTLVertexFormatFloat; - case VertexAttribType::kFloat2: - return MTLVertexFormatFloat2; - case VertexAttribType::kFloat3: - return MTLVertexFormatFloat3; - case VertexAttribType::kFloat4: - return MTLVertexFormatFloat4; - case VertexAttribType::kHalf: - if (@available(macOS 10.13, iOS 11.0, *)) { - return MTLVertexFormatHalf; - } else { - return MTLVertexFormatInvalid; - } - case VertexAttribType::kHalf2: - return MTLVertexFormatHalf2; - case VertexAttribType::kHalf4: - return MTLVertexFormatHalf4; - case VertexAttribType::kInt2: - return MTLVertexFormatInt2; - case VertexAttribType::kInt3: - return MTLVertexFormatInt3; - case VertexAttribType::kInt4: - return MTLVertexFormatInt4; - case VertexAttribType::kByte: - if (@available(macOS 10.13, iOS 11.0, *)) { - return MTLVertexFormatChar; - } else { - return MTLVertexFormatInvalid; - } - case VertexAttribType::kByte2: - return MTLVertexFormatChar2; - case VertexAttribType::kByte4: - return MTLVertexFormatChar4; - case VertexAttribType::kUByte: - if (@available(macOS 10.13, iOS 11.0, *)) { - return MTLVertexFormatUChar; - } else { - return MTLVertexFormatInvalid; - } - case VertexAttribType::kUByte2: - return MTLVertexFormatUChar2; - case VertexAttribType::kUByte4: - return MTLVertexFormatUChar4; - case VertexAttribType::kUByte_norm: - if (@available(macOS 10.13, iOS 11.0, *)) { - return MTLVertexFormatUCharNormalized; - } else { - return MTLVertexFormatInvalid; - } - case VertexAttribType::kUByte4_norm: - return MTLVertexFormatUChar4Normalized; - case VertexAttribType::kShort2: - return MTLVertexFormatShort2; - case VertexAttribType::kShort4: - return MTLVertexFormatShort4; - case VertexAttribType::kUShort2: - return MTLVertexFormatUShort2; - case VertexAttribType::kUShort2_norm: - return MTLVertexFormatUShort2Normalized; - case VertexAttribType::kInt: - return MTLVertexFormatInt; - case VertexAttribType::kUInt: - return MTLVertexFormatUInt; - case VertexAttribType::kUShort_norm: - if (@available(macOS 10.13, iOS 11.0, *)) { - return MTLVertexFormatUShortNormalized; - } else { - return MTLVertexFormatInvalid; - } - case VertexAttribType::kUShort4_norm: - return MTLVertexFormatUShort4Normalized; - } - SK_ABORT("Unknown vertex attribute type"); -} - -static MTLVertexDescriptor* create_vertex_descriptor(const RenderPipelineDesc& desc) { - auto vertexDescriptor = [[MTLVertexDescriptor alloc] init]; - int attributeIndex = 0; - - int vertexAttributeCount = desc.numVertexAttributes(); - size_t vertexAttributeOffset = 0; - for (const auto& attribute : desc.vertexAttributes()) { - MTLVertexAttributeDescriptor* mtlAttribute = vertexDescriptor.attributes[attributeIndex]; - MTLVertexFormat format = attribute_type_to_mtlformat(attribute.cpuType()); - SkASSERT(MTLVertexFormatInvalid != format); - mtlAttribute.format = format; - mtlAttribute.offset = vertexAttributeOffset; - mtlAttribute.bufferIndex = RenderPipeline::kVertexBufferIndex; - - vertexAttributeOffset += attribute.sizeAlign4(); - attributeIndex++; - } - SkASSERT(vertexAttributeOffset == desc.vertexStride()); - - if (vertexAttributeCount) { - MTLVertexBufferLayoutDescriptor* vertexBufferLayout = - vertexDescriptor.layouts[RenderPipeline::kVertexBufferIndex]; - vertexBufferLayout.stepFunction = MTLVertexStepFunctionPerVertex; - vertexBufferLayout.stepRate = 1; - vertexBufferLayout.stride = vertexAttributeOffset; - } - - int instanceAttributeCount = desc.numInstanceAttributes(); - size_t instanceAttributeOffset = 0; - for (const auto& attribute : desc.instanceAttributes()) { - MTLVertexAttributeDescriptor* mtlAttribute = vertexDescriptor.attributes[attributeIndex]; - MTLVertexFormat format = attribute_type_to_mtlformat(attribute.cpuType()); - SkASSERT(MTLVertexFormatInvalid != format); - mtlAttribute.format = format; - mtlAttribute.offset = instanceAttributeOffset; - mtlAttribute.bufferIndex = RenderPipeline::kInstanceBufferIndex; - - instanceAttributeOffset += attribute.sizeAlign4(); - attributeIndex++; - } - SkASSERT(instanceAttributeOffset == desc.instanceStride()); - - if (instanceAttributeCount) { - MTLVertexBufferLayoutDescriptor* instanceBufferLayout = - vertexDescriptor.layouts[RenderPipeline::kInstanceBufferIndex]; - instanceBufferLayout.stepFunction = MTLVertexStepFunctionPerInstance; - instanceBufferLayout.stepRate = 1; - instanceBufferLayout.stride = instanceAttributeOffset; - } - return vertexDescriptor; -} - -sk_sp RenderPipeline::Make(const Gpu* gpu, const skgpu::RenderPipelineDesc& desc) { - sk_cfp psoDescriptor([[MTLRenderPipelineDescriptor alloc] init]); - - // Temp pipeline for now that just fills the viewport with blue - int shaderIndex = desc.testingOnlyShaderIndex(); - SkSL::String shaderText; - shaderText.append(kTestingOnlyShaders[shaderIndex]); - - auto metallib = CompileShaderLibrary(gpu, shaderText); - if (!metallib) { - return nullptr; - } - - (*psoDescriptor).label = kTestingOnlyShaderLabels[shaderIndex]; - - (*psoDescriptor).vertexFunction = - [*metallib newFunctionWithName: @"vertexMain"]; - (*psoDescriptor).fragmentFunction = - [*metallib newFunctionWithName: @"fragmentMain"]; - - // TODO: I *think* this gets cleaned up by the pipelineDescriptor? - (*psoDescriptor).vertexDescriptor = create_vertex_descriptor(desc); - - // TODO: I *think* this gets cleaned up by the pipelineDescriptor as well? - auto mtlColorAttachment = [[MTLRenderPipelineColorAttachmentDescriptor alloc] init]; - - mtlColorAttachment.pixelFormat = MTLPixelFormatRGBA8Unorm; - mtlColorAttachment.blendingEnabled = FALSE; - mtlColorAttachment.writeMask = MTLColorWriteMaskAll; - - (*psoDescriptor).colorAttachments[0] = mtlColorAttachment; - (*psoDescriptor).sampleCount = 1; - - NSError* error; - sk_cfp> pso( - [gpu->device() newRenderPipelineStateWithDescriptor:psoDescriptor.get() - error:&error]); - if (!pso) { - SkDebugf("Pipeline creation failure\n"); - SkDebugf("Errors:\n%s", error.debugDescription.UTF8String); - return nullptr; - } - return sk_sp(new RenderPipeline(std::move(pso), desc.vertexStride(), - desc.instanceStride())); -} - -} // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.h b/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.h index 795cfa25ac62..3c6f359d30ab 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.h @@ -8,7 +8,9 @@ #ifndef skgpu_MtlResourceProvider_DEFINED #define skgpu_MtlResourceProvider_DEFINED +#include "experimental/graphite/src/DrawTypes.h" #include "experimental/graphite/src/ResourceProvider.h" +#include "include/private/SkTHash.h" #import @@ -25,13 +27,20 @@ class ResourceProvider final : public skgpu::ResourceProvider { ResourceProvider(const skgpu::Gpu* gpu); ~ResourceProvider() override {} + sk_sp createWrappedTexture(const BackendTexture&) override; + + // Finds or creates a compatible DepthStencilState based on the enum + id findOrCreateCompatibleDepthStencilState(const DepthStencilSettings&); + private: const Gpu* mtlGpu(); sk_sp createCommandBuffer() override; - sk_sp onCreateRenderPipeline(const RenderPipelineDesc&) override; + sk_sp onCreateGraphicsPipeline(const GraphicsPipelineDesc&) override; sk_sp createTexture(SkISize, const skgpu::TextureInfo&) override; sk_sp createBuffer(size_t size, BufferType type, PrioritizeGpuReads) override; + + SkTHashMap>> fDepthStencilStates; }; } // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.mm b/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.mm index 38a1e7662d4c..84c21eb1b126 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlResourceProvider.mm @@ -7,13 +7,15 @@ #include "experimental/graphite/src/mtl/MtlResourceProvider.h" +#include "experimental/graphite/include/BackendTexture.h" +#include "experimental/graphite/src/GraphicsPipelineDesc.h" #include "experimental/graphite/src/mtl/MtlBuffer.h" #include "experimental/graphite/src/mtl/MtlCommandBuffer.h" #include "experimental/graphite/src/mtl/MtlGpu.h" +#include "experimental/graphite/src/mtl/MtlGraphicsPipeline.h" #include "experimental/graphite/src/mtl/MtlTexture.h" -#include "experimental/graphite/src/RenderPipelineDesc.h" -#include "experimental/graphite/src/mtl/MtlRenderPipeline.h" +#import namespace skgpu::mtl { @@ -29,9 +31,9 @@ return CommandBuffer::Make(this->mtlGpu()); } -sk_sp ResourceProvider::onCreateRenderPipeline( - const RenderPipelineDesc& desc) { - return RenderPipeline::Make(this->mtlGpu(), desc); +sk_sp ResourceProvider::onCreateGraphicsPipeline( + const GraphicsPipelineDesc& desc) { + return GraphicsPipeline::Make(this->mtlGpu(), desc); } sk_sp ResourceProvider::createTexture(SkISize dimensions, @@ -39,10 +41,99 @@ return Texture::Make(this->mtlGpu(), dimensions, info); } +sk_sp ResourceProvider::createWrappedTexture(const BackendTexture& texture) { + mtl::Handle mtlHandleTexture = texture.getMtlTexture(); + if (!mtlHandleTexture) { + return nullptr; + } + sk_cfp> mtlTexture = sk_ret_cfp((id)mtlHandleTexture); + return Texture::MakeWrapped(texture.dimensions(), texture.info(), std::move(mtlTexture)); +} + sk_sp ResourceProvider::createBuffer(size_t size, BufferType type, PrioritizeGpuReads prioritizeGpuReads) { return Buffer::Make(this->mtlGpu(), size, type, prioritizeGpuReads); } +namespace { +MTLCompareFunction compare_op_to_mtl(CompareOp op) { + switch (op) { + case CompareOp::kAlways: + return MTLCompareFunctionAlways; + case CompareOp::kNever: + return MTLCompareFunctionNever; + case CompareOp::kGreater: + return MTLCompareFunctionGreater; + case CompareOp::kGEqual: + return MTLCompareFunctionGreaterEqual; + case CompareOp::kLess: + return MTLCompareFunctionLess; + case CompareOp::kLEqual: + return MTLCompareFunctionLessEqual; + case CompareOp::kEqual: + return MTLCompareFunctionEqual; + case CompareOp::kNotEqual: + return MTLCompareFunctionNotEqual; + } +} + +MTLStencilOperation stencil_op_to_mtl(StencilOp op) { + switch (op) { + case StencilOp::kKeep: + return MTLStencilOperationKeep; + case StencilOp::kZero: + return MTLStencilOperationZero; + case StencilOp::kReplace: + return MTLStencilOperationReplace; + case StencilOp::kInvert: + return MTLStencilOperationInvert; + case StencilOp::kIncWrap: + return MTLStencilOperationIncrementWrap; + case StencilOp::kDecWrap: + return MTLStencilOperationDecrementWrap; + case StencilOp::kIncClamp: + return MTLStencilOperationIncrementClamp; + case StencilOp::kDecClamp: + return MTLStencilOperationDecrementClamp; + } +} + +MTLStencilDescriptor* stencil_face_to_mtl(DepthStencilSettings::Face face) { + MTLStencilDescriptor* result = [[MTLStencilDescriptor alloc] init]; + result.stencilCompareFunction = compare_op_to_mtl(face.fCompareOp); + result.readMask = face.fReadMask; + result.writeMask = face.fWriteMask; + result.depthStencilPassOperation = stencil_op_to_mtl(face.fDepthStencilPassOp); + result.stencilFailureOperation = stencil_op_to_mtl(face.fStencilFailOp); + return result; +} +} // anonymous namespace + +id ResourceProvider::findOrCreateCompatibleDepthStencilState( + const DepthStencilSettings& depthStencilSettings) { + sk_cfp>* depthStencilState; + depthStencilState = fDepthStencilStates.find(depthStencilSettings); + if (!depthStencilState) { + MTLDepthStencilDescriptor* desc = [[MTLDepthStencilDescriptor alloc] init]; + SkASSERT(depthStencilSettings.fDepthTestEnabled || + depthStencilSettings.fDepthCompareOp == CompareOp::kAlways); + desc.depthCompareFunction = compare_op_to_mtl(depthStencilSettings.fDepthCompareOp); + if (depthStencilSettings.fDepthTestEnabled) { + desc.depthWriteEnabled = depthStencilSettings.fDepthWriteEnabled; + } + if (depthStencilSettings.fStencilTestEnabled) { + desc.frontFaceStencil = stencil_face_to_mtl(depthStencilSettings.fFrontStencil); + desc.backFaceStencil = stencil_face_to_mtl(depthStencilSettings.fBackStencil); + } + + sk_cfp> dss( + [this->mtlGpu()->device() newDepthStencilStateWithDescriptor: desc]); + depthStencilState = fDepthStencilStates.set(depthStencilSettings, std::move(dss)); + } + + SkASSERT(depthStencilState); + return depthStencilState->get(); +} + } // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlTexture.h b/third_party/skia/experimental/graphite/src/mtl/MtlTexture.h index f909f49f4872..64880397c5c6 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlTexture.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlTexture.h @@ -18,10 +18,18 @@ class Gpu; class Texture : public skgpu::Texture { public: + static sk_cfp> MakeMtlTexture(const Gpu*, + SkISize dimensions, + const skgpu::TextureInfo&); + static sk_sp Make(const Gpu* gpu, SkISize dimensions, const skgpu::TextureInfo&); + static sk_sp MakeWrapped(SkISize dimensions, + const skgpu::TextureInfo&, + sk_cfp>); + ~Texture() override {} id mtlTexture() const { return fTexture.get(); } @@ -29,7 +37,8 @@ class Texture : public skgpu::Texture { private: Texture(SkISize dimensions, const skgpu::TextureInfo& info, - sk_cfp> texture); + sk_cfp>, + Ownership); sk_cfp> fTexture; }; diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlTexture.mm b/third_party/skia/experimental/graphite/src/mtl/MtlTexture.mm index 7360928c38c4..589cc77a91b7 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlTexture.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlTexture.mm @@ -9,21 +9,32 @@ #include "experimental/graphite/include/mtl/MtlTypes.h" #include "experimental/graphite/include/private/MtlTypesPriv.h" +#include "experimental/graphite/src/mtl/MtlCaps.h" #include "experimental/graphite/src/mtl/MtlGpu.h" #include "experimental/graphite/src/mtl/MtlUtils.h" namespace skgpu::mtl { -Texture::Texture(SkISize dimensions, - const skgpu::TextureInfo& info, - sk_cfp> texture) - : skgpu::Texture(dimensions, info) - , fTexture(std::move(texture)) {} +sk_cfp> Texture::MakeMtlTexture(const Gpu* gpu, + SkISize dimensions, + const skgpu::TextureInfo& info) { + const skgpu::Caps* caps = gpu->caps(); + if (dimensions.width() > caps->maxTextureSize() || + dimensions.height() > caps->maxTextureSize()) { + return nullptr; + } -sk_sp Texture::Make(const Gpu* gpu, - SkISize dimensions, - const skgpu::TextureInfo& info) { const TextureSpec& mtlSpec = info.mtlTextureSpec(); + SkASSERT(!mtlSpec.fFramebufferOnly); + + if (mtlSpec.fUsage & MTLTextureUsageShaderRead && !caps->isTexturable(info)) { + return nullptr; + } + + if (mtlSpec.fUsage & MTLTextureUsageRenderTarget && + !(caps->isRenderable(info) || FormatIsDepthOrStencil((MTLPixelFormat)mtlSpec.fFormat))) { + return nullptr; + } sk_cfp desc([[MTLTextureDescriptor alloc] init]); (*desc).textureType = (info.numSamples() > 1) ? MTLTextureType2DMultisample : MTLTextureType2D; @@ -63,7 +74,30 @@ } #endif - return sk_sp(new Texture(dimensions, info, std::move(texture))); + return texture; +} + +Texture::Texture(SkISize dimensions, + const skgpu::TextureInfo& info, + sk_cfp> texture, + Ownership ownership) + : skgpu::Texture(dimensions, info, ownership) + , fTexture(std::move(texture)) {} + +sk_sp Texture::Make(const Gpu* gpu, + SkISize dimensions, + const skgpu::TextureInfo& info) { + sk_cfp> texture = MakeMtlTexture(gpu, dimensions, info); + if (!texture) { + return nullptr; + } + return sk_sp(new Texture(dimensions, info, std::move(texture), Ownership::kOwned)); +} + +sk_sp Texture::MakeWrapped(SkISize dimensions, + const skgpu::TextureInfo& info, + sk_cfp> texture) { + return sk_sp(new Texture(dimensions, info, std::move(texture), Ownership::kWrapped)); } } // namespace skgpu::mtl diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlTypesPriv.mm b/third_party/skia/experimental/graphite/src/mtl/MtlTypesPriv.mm index 1cb2225e616a..6d070c7cd38c 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlTypesPriv.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlTypesPriv.mm @@ -7,8 +7,23 @@ #include "experimental/graphite/include/private/MtlTypesPriv.h" +#import + namespace skgpu::mtl { +TextureInfo::TextureInfo(Handle texture) { + SkASSERT(texture); + id mtlTex = (id)texture; + + fSampleCount = mtlTex.sampleCount; + fLevelCount = mtlTex.mipmapLevelCount; + + fFormat = mtlTex.pixelFormat; + fUsage = mtlTex.usage; + fStorageMode = mtlTex.storageMode; + fFramebufferOnly = mtlTex.framebufferOnly; +} + TextureInfo TextureSpecToTextureInfo(const TextureSpec& mtlSpec, uint32_t sampleCount, uint32_t levelCount) { @@ -21,6 +36,7 @@ TextureInfo TextureSpecToTextureInfo(const TextureSpec& mtlSpec, info.fFormat = mtlSpec.fFormat; info.fUsage = mtlSpec.fUsage; info.fStorageMode = mtlSpec.fStorageMode; + info.fFramebufferOnly = mtlSpec.fFramebufferOnly; return info; } diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlUtils.h b/third_party/skia/experimental/graphite/src/mtl/MtlUtils.h index e70fe9166cd8..6b36117b4e99 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlUtils.h +++ b/third_party/skia/experimental/graphite/src/mtl/MtlUtils.h @@ -8,9 +8,10 @@ #ifndef skgpu_MtlUtils_DEFINED #define skgpu_MtlUtils_DEFINED -#include "experimental/graphite/include/private/GraphiteTypesPriv.h" +#include "experimental/graphite/src/ResourceTypes.h" #include "include/core/SkImageInfo.h" #include "include/ports/SkCFObject.h" +#include "src/sksl/ir/SkSLProgram.h" #import @@ -23,10 +24,22 @@ namespace skgpu::mtl { class Gpu; bool FormatIsDepthOrStencil(MTLPixelFormat); +bool FormatIsDepth(MTLPixelFormat); +bool FormatIsStencil(MTLPixelFormat); MTLPixelFormat SkColorTypeToFormat(SkColorType); -MTLPixelFormat DepthStencilTypeToFormat(DepthStencilType); +MTLPixelFormat DepthStencilFlagsToFormat(Mask); + +/** + * Produces MSL code generated by SkSLC + */ +bool SkSLToMSL(const Gpu* gpu, + const SkSL::String& sksl, + SkSL::ProgramKind kind, + const SkSL::Program::Settings& settings, + SkSL::String* msl, + SkSL::Program::Inputs* outInputs); sk_cfp> CompileShaderLibrary(const Gpu* gpu, const SkSL::String& msl); diff --git a/third_party/skia/experimental/graphite/src/mtl/MtlUtils.mm b/third_party/skia/experimental/graphite/src/mtl/MtlUtils.mm index c83105f202f2..07a64152470b 100644 --- a/third_party/skia/experimental/graphite/src/mtl/MtlUtils.mm +++ b/third_party/skia/experimental/graphite/src/mtl/MtlUtils.mm @@ -10,6 +10,7 @@ #include "experimental/graphite/src/mtl/MtlGpu.h" #include "include/private/SkSLString.h" #include "src/core/SkTraceEvent.h" +#include "src/sksl/SkSLCompiler.h" namespace skgpu::mtl { @@ -23,6 +24,25 @@ bool FormatIsDepthOrStencil(MTLPixelFormat format) { } } +bool FormatIsDepth(MTLPixelFormat format) { + switch (format) { + case MTLPixelFormatDepth32Float_Stencil8: + return true; + default: + return false; + } +} + +bool FormatIsStencil(MTLPixelFormat format) { + switch (format) { + case MTLPixelFormatStencil8: // fallthrough + case MTLPixelFormatDepth32Float_Stencil8: + return true; + default: + return false; + } +} + MTLPixelFormat SkColorTypeToFormat(SkColorType colorType) { switch (colorType) { case kRGBA_8888_SkColorType: @@ -37,19 +57,68 @@ MTLPixelFormat SkColorTypeToFormat(SkColorType colorType) { } } -MTLPixelFormat DepthStencilTypeToFormat(DepthStencilType type) { +MTLPixelFormat DepthStencilFlagsToFormat(Mask mask) { // TODO: Decide if we want to change this to always return a combined depth and stencil format // to allow more sharing of depth stencil allocations. - switch (type) { - case DepthStencilType::kDepthOnly: - // MTLPixelFormatDepth16Unorm is also a universally supported option here - return MTLPixelFormatDepth32Float; - case DepthStencilType::kStencilOnly: - return MTLPixelFormatStencil8; - case DepthStencilType::kDepthStencil: - // MTLPixelFormatDepth24Unorm_Stencil8 is supported on Mac family GPUs. - return MTLPixelFormatDepth32Float_Stencil8; + if (mask == DepthStencilFlags::kDepth) { + // MTLPixelFormatDepth16Unorm is also a universally supported option here + return MTLPixelFormatDepth32Float; + } else if (mask == DepthStencilFlags::kStencil) { + return MTLPixelFormatStencil8; + } else if (mask == DepthStencilFlags::kDepthStencil) { + // MTLPixelFormatDepth24Unorm_Stencil8 is supported on Mac family GPUs. + return MTLPixelFormatDepth32Float_Stencil8; } + SkASSERT(false); + return MTLPixelFormatInvalid; +} + +// Print the source code for all shaders generated. +static const bool gPrintSKSL = false; +static const bool gPrintMSL = false; + +// TODO: add errorHandler support +static void compile_error(const char* shaderSource, const char* errorText) { + SkDebugf("Shader compilation error\n" + "------------------------\n"); + SkDebugf("%s", shaderSource); + SkDebugf("Errors:\n%s", errorText); +} + +bool SkSLToMSL(const Gpu* gpu, + const SkSL::String& sksl, + SkSL::ProgramKind programKind, + const SkSL::Program::Settings& settings, + SkSL::String* msl, + SkSL::Program::Inputs* outInputs) { + const SkSL::String& src = sksl; + SkSL::Compiler* compiler = gpu->shaderCompiler(); + std::unique_ptr program = + gpu->shaderCompiler()->convertProgram(programKind, + src, + settings); + if (!program || !compiler->toMetal(*program, msl)) { + compile_error(src.c_str(), compiler->errorText().c_str()); + return false; + } + + if (gPrintSKSL || gPrintMSL) { + // TODO: add GrShaderUtils support + SkDebugf("------- Shader --------\n"); + if (gPrintSKSL) { + SkDebugf("SKSL:\n"); + // TODO: add GrShaderUtils support + SkDebugf("%s\n", sksl.c_str()); + } + if (gPrintMSL) { + SkDebugf("MSL:\n"); + // TODO: add GrShaderUtils support + SkDebugf("%s\n", msl->c_str()); + } + } + + *outInputs = program->fInputs; + return true; } sk_cfp> CompileShaderLibrary(const Gpu* gpu, @@ -76,11 +145,7 @@ MTLPixelFormat DepthStencilTypeToFormat(DepthStencilType type) { options:options error:&error]); if (!compiledLibrary) { - SkDebugf("Shader compilation error\n" - "------------------------\n"); - SkDebugf("%s", msl.c_str()); - SkDebugf("Errors:\n%s", error.debugDescription.UTF8String); - + compile_error(msl.c_str(), error.debugDescription.UTF8String); return nil; } diff --git a/third_party/skia/experimental/graphite/src/render/StencilAndFillPathRenderer.cpp b/third_party/skia/experimental/graphite/src/render/StencilAndFillPathRenderer.cpp index b4c55af7d61e..767ccbdae0a9 100644 --- a/third_party/skia/experimental/graphite/src/render/StencilAndFillPathRenderer.cpp +++ b/third_party/skia/experimental/graphite/src/render/StencilAndFillPathRenderer.cpp @@ -7,7 +7,11 @@ #include "experimental/graphite/src/Renderer.h" +#include "experimental/graphite/src/ContextUtils.h" +#include "experimental/graphite/src/DrawWriter.h" +#include "experimental/graphite/src/UniformManager.h" #include "experimental/graphite/src/geom/Shape.h" +#include "experimental/graphite/src/geom/Transform_graphite.h" #include "src/gpu/BufferWriter.h" namespace skgpu { @@ -52,34 +56,57 @@ class StencilCurvesRenderStep : public RenderStep { // TODO: Hand off to csmartdalton, this should roughly correspond to the fCoverBBoxProgram stage // of skgpu::v1::PathStencilCoverOp. -class FillBoundsRenderStep : public RenderStep { +class FillBoundsRenderStep final : public RenderStep { public: - FillBoundsRenderStep() {} + // TODO: Will need to add kRequiresStencil when we support specifying stencil settings and + // the Renderer includes the stenciling step first. + FillBoundsRenderStep() + : RenderStep(Flags::kPerformsShading, + /*uniforms=*/{{"localToDevice", SLType::kFloat4x4}}, + PrimitiveType::kTriangleStrip, + DepthStencilSettings(), + /*vertexAttrs=*/{{"position", VertexAttribType::kFloat2, SLType::kFloat2}}, + /*instanceAttrs=*/{}) {} ~FillBoundsRenderStep() override {} - const char* name() const override { return "fill-bounds"; } - // TODO: true when combined with a stencil step - bool requiresStencil() const override { return false; } - bool requiresMSAA() const override { return false; } - bool performsShading() const override { return true; } + const char* name() const override { return "fill-bounds"; } - size_t requiredVertexSpace(const Shape&) const override { - return 8 * sizeof(float); + const char* vertexSkSL() const override { + // TODO: RenderSteps should not worry about RTAdjust, but currently the mtl pipeline does + // account for it, so this geometry won't be in the right coordinate system yet. + return " float4 devPosition = localToDevice * float4(position, 0.0, 1.0);\n"; } - size_t requiredIndexSpace(const Shape&) const override { - return 0; + void writeVertices(DrawWriter* writer, const Transform&, const Shape& shape) const override { + // TODO: For now the transform is handled as a uniform so writeVertices ignores it, but + // for something as simple as the bounding box, CPU transformation might be best. + writer->appendVertices(4) + .writeQuad(VertexWriter::TriStripFromRect(shape.bounds().asSkRect())); + // Since we upload 4 dynamic verts as a triangle strip, we need to actually draw them + // otherwise the next writeVertices() call would get connected to our verts. + // TODO: Primitive restart? Just use indexed drawing? Just write 6 verts? + writer->flush(); } - void writeVertices(VertexWriter vertexWriter, - IndexWriter indexWriter, - const Shape& shape) const override { - vertexWriter.writeQuad(VertexWriter::TriStripFromRect(shape.bounds().asSkRect())); + sk_sp writeUniforms(Layout layout, + const Transform& localToDevice, + const Shape&) const override { + // TODO: Given that a RenderStep has its own uniform binding slot, these offsets never + // change so we could cache them per layout. + UniformManager mgr(layout); + size_t dataSize = mgr.writeUniforms(this->uniforms(), nullptr, nullptr, nullptr); + sk_sp transformData = UniformData::Make((int) this->numUniforms(), + this->uniforms().data(), + dataSize); + + const void* transform[1] = {&localToDevice.matrix()}; + mgr.writeUniforms(this->uniforms(), + transform, + transformData->offsets(), + transformData->data()); + return transformData; } - - -private: }; } // anonymous namespace diff --git a/third_party/skia/experimental/skottiekit/compile.sh b/third_party/skia/experimental/skottiekit/compile.sh index 68da194b0a46..51a5c1bb23a0 100755 --- a/third_party/skia/experimental/skottiekit/compile.sh +++ b/third_party/skia/experimental/skottiekit/compile.sh @@ -163,7 +163,6 @@ echo "Compiling bitcode" ${GN_GPU} \ \ skia_enable_skshaper=true \ - skia_enable_skgpu_v2=false \ skia_enable_pdf=false" # Build all the libs we will need below diff --git a/third_party/skia/experimental/wasm-skp-debugger/compile.sh b/third_party/skia/experimental/wasm-skp-debugger/compile.sh index 8890b07dedb3..478d291d2eab 100755 --- a/third_party/skia/experimental/wasm-skp-debugger/compile.sh +++ b/third_party/skia/experimental/wasm-skp-debugger/compile.sh @@ -48,8 +48,7 @@ python tools/embed_resources.py \ --output $BASE_DIR/fonts/NotoMono-Regular.ttf.cpp \ --align 4 -GN_GPU_FLAGS="\"-DSK_DISABLE_LEGACY_SHADERCONTEXT\"," -WASM_GPU="-lEGL -lGL -lGLESv2 -DSK_SUPPORT_GPU=1 -DSK_GL \ +WASM_GPU="-lEGL -lGL -lGLESv2 -DSK_SUPPORT_GPU=1 -DSK_GL -DSK_ENABLE_DUMP_GPU \ -DSK_DISABLE_LEGACY_SHADERCONTEXT --pre-js $BASE_DIR/cpu.js --pre-js $BASE_DIR/gpu.js" # Turn off exiting while we check for ninja (which may not be on PATH) @@ -74,7 +73,7 @@ echo "Compiling bitcode" extra_cflags=[\"-s\", \"MAIN_MODULE=1\", \"-DSKNX_NO_SIMD\", \"-DSK_DISABLE_AAA\", \"-DSK_FORCE_8_BYTE_ALIGNMENT\", - ${GN_GPU_FLAGS} + \"-DSK_ENABLE_DUMP_GPU\", \"-DSK_DISABLE_LEGACY_SHADERCONTEXT\", ${EXTRA_CFLAGS} ] \ is_debug=false \ @@ -110,7 +109,6 @@ echo "Compiling bitcode" skia_gl_standard=\"webgl\" \ skia_enable_tools=false \ skia_enable_skshaper=false \ - skia_enable_skgpu_v2=false \ skia_enable_fontmgr_custom_directory=false \ skia_enable_fontmgr_custom_embedded=true \ skia_enable_fontmgr_custom_empty=false \ diff --git a/third_party/skia/experimental/webgpu-bazel/Makefile b/third_party/skia/experimental/webgpu-bazel/Makefile index 292b667b3dcc..e0bb608a32f0 100644 --- a/third_party/skia/experimental/webgpu-bazel/Makefile +++ b/third_party/skia/experimental/webgpu-bazel/Makefile @@ -1,16 +1,16 @@ release: - bazel build //src:hello-world-wasm --compilation_mode opt + bazel build //experimental/webgpu-bazel/src:hello-world-wasm --compilation_mode opt - rm -rf build/ mkdir build - cp bazel-bin/src/hello-world-wasm/hello-world.js build/hello-world.js - cp bazel-bin/src/hello-world-wasm/hello-world.wasm build/hello-world.wasm + cp ../../bazel-bin/experimental/webgpu-bazel/src/hello-world-wasm/hello-world.js build/hello-world.js + cp ../../bazel-bin/experimental/webgpu-bazel/src/hello-world-wasm/hello-world.wasm build/hello-world.wasm debug: - bazel build //src:hello-world-wasm --compilation_mode dbg + bazel build //experimental/webgpu-bazel/src:hello-world-wasm --compilation_mode dbg - rm -rf build/ mkdir build - cp bazel-bin/src/hello-world-wasm/hello-world.js build/hello-world.js - cp bazel-bin/src/hello-world-wasm/hello-world.wasm build/hello-world.wasm + cp ../../bazel-bin/experimental/webgpu-bazel/src/hello-world-wasm/hello-world.js build/hello-world.js + cp ../../bazel-bin/experimental/webgpu-bazel/src/hello-world-wasm/hello-world.wasm build/hello-world.wasm serve: python3 ../../tools/serve_wasm.py \ No newline at end of file diff --git a/third_party/skia/experimental/webgpu-bazel/WORKSPACE b/third_party/skia/experimental/webgpu-bazel/WORKSPACE deleted file mode 100644 index bee39dcfbd9a..000000000000 --- a/third_party/skia/experimental/webgpu-bazel/WORKSPACE +++ /dev/null @@ -1,27 +0,0 @@ -workspace(name = "bazel_webgpu_example") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -# Loading in the emscripten toolchain is documented at https://github.com/emscripten-core/emsdk/tree/3891e7b04bf8cbb3bc62758e9c575ae096a9a518/bazel -# The hash in the http_archive URL corresponds to https://github.com/emscripten-core/emsdk/commit/3891e7b04bf8cbb3bc62758e9c575ae096a9a518 -# AKA the 2.0.31 release. The sha256 sum came from a manual inspection of that archive. -http_archive( - name = "emsdk", - sha256 = "d55e3c73fc4f8d1fecb7aabe548de86bdb55080fe6b12ce593d63b8bade54567", - strip_prefix = "emsdk-3891e7b04bf8cbb3bc62758e9c575ae096a9a518/bazel", - url = "https://github.com/emscripten-core/emsdk/archive/3891e7b04bf8cbb3bc62758e9c575ae096a9a518.tar.gz", -) - -# Working around https://github.com/emscripten-core/emsdk/issues/907 -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "3635797a96c7bfcd0d265dacd722a07335e64d6ded9834af8d3f1b7ba5a25bba", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.3.0/rules_nodejs-4.3.0.tar.gz"], -) -# Once the workaround is no longer needed, we should be able to uncomment below -# load("@emsdk//:deps.bzl", emsdk_deps = "deps") -# emsdk_deps() - -load("@emsdk//:emscripten_deps.bzl", emsdk_emscripten_deps = "emscripten_deps") - -emsdk_emscripten_deps(emscripten_version = "2.0.31") diff --git a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp index cb7ca5cc1910..7262707bec60 100644 --- a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp +++ b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2GLSL.cpp @@ -11,7 +11,7 @@ #include "fuzz/Fuzz.h" bool FuzzSKSL2GLSL(sk_sp bytes) { - std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); + std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); SkSL::Compiler compiler(caps.get()); SkSL::String output; SkSL::Program::Settings settings; diff --git a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp index 2d912f798bcc..13e1f6934a4f 100644 --- a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp +++ b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Metal.cpp @@ -11,7 +11,7 @@ #include "fuzz/Fuzz.h" bool FuzzSKSL2Metal(sk_sp bytes) { - std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); + std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); SkSL::Compiler compiler(caps.get()); SkSL::String output; SkSL::Program::Settings settings; diff --git a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp index 6a14eb9498b6..546c77be2468 100644 --- a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp +++ b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2Pipeline.cpp @@ -14,7 +14,7 @@ #include "fuzz/Fuzz.h" bool FuzzSKSL2Pipeline(sk_sp bytes) { - std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); + std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); SkSL::Compiler compiler(caps.get()); SkSL::Program::Settings settings; std::unique_ptr program = compiler.convertProgram( diff --git a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp index 7787f84ad4ca..902838ef3e92 100644 --- a/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp +++ b/third_party/skia/fuzz/oss_fuzz/FuzzSKSL2SPIRV.cpp @@ -11,7 +11,7 @@ #include "fuzz/Fuzz.h" bool FuzzSKSL2SPIRV(sk_sp bytes) { - std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); + std::unique_ptr caps = SkSL::ShaderCapsFactory::Default(); SkSL::Compiler compiler(caps.get()); SkSL::String output; SkSL::Program::Settings settings; diff --git a/third_party/skia/gm/BUILD.bazel b/third_party/skia/gm/BUILD.bazel new file mode 100644 index 000000000000..60d92892bc77 --- /dev/null +++ b/third_party/skia/gm/BUILD.bazel @@ -0,0 +1,21 @@ +package(default_visibility = ["//:__subpackages__"]) + +filegroup( + name = "hdrs", + srcs = [ + "gm.h", + "verifiers/gmverifier.h", + ], +) + +filegroup( + name = "srcs", + srcs = [ + "gm.cpp", + ], +) + +filegroup( + name = "gms", + srcs = ["dashing.cpp"], +) diff --git a/third_party/skia/gm/all_bitmap_configs.cpp b/third_party/skia/gm/all_bitmap_configs.cpp index e72b4b87a005..62badb74d331 100644 --- a/third_party/skia/gm/all_bitmap_configs.cpp +++ b/third_party/skia/gm/all_bitmap_configs.cpp @@ -173,15 +173,12 @@ sk_sp make_not_native32_color_wheel() { n32bitmap.eraseColor(SK_ColorTRANSPARENT); SkCanvas n32canvas(n32bitmap); color_wheel_native(&n32canvas); - SkColorType ct; - if (SK_PMCOLOR_BYTE_ORDER(B, G, R, A)) { - ct = kRGBA_8888_SkColorType; - } else if (SK_PMCOLOR_BYTE_ORDER(R, G, B, A)) { - ct = kBGRA_8888_SkColorType; - } else { - NOTREACHED() << "Byte order must be BGRA or RGBA."; - } - DCHECK(ct != kN32_SkColorType) << "BRGA!=RGBA"; + #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A) + const SkColorType ct = kRGBA_8888_SkColorType; + #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A) + const SkColorType ct = kBGRA_8888_SkColorType; + #endif + static_assert(ct != kN32_SkColorType, "BRGA!=RGBA"); SkAssertResult(ToolUtils::copy_to(¬N32bitmap, ct, n32bitmap)); SkASSERT(notN32bitmap.colorType() == ct); return notN32bitmap.asImage(); diff --git a/third_party/skia/gm/batchedconvexpaths.cpp b/third_party/skia/gm/batchedconvexpaths.cpp new file mode 100644 index 000000000000..b9552b3078aa --- /dev/null +++ b/third_party/skia/gm/batchedconvexpaths.cpp @@ -0,0 +1,59 @@ +/* + * Copyright 2021 Google LLC. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm/gm.h" + +#include "include/core/SkCanvas.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPath.h" +#include "include/gpu/GrContextOptions.h" + +namespace skiagm { + +class BatchedConvexPathsGM : public GM { +private: + SkString onShortName() override { return SkString("batchedconvexpaths"); } + SkISize onISize() override { return SkISize::Make(512, 512); } + + void modifyGrContextOptions(GrContextOptions* ctxOptions) override { + // Ensure our paths don't go through the atlas path renderer. + ctxOptions->fGpuPathRenderers &= ~GpuPathRenderers::kAtlas; + } + + DrawResult onDraw(SkCanvas* canvas, SkString* errorMsg) override { + canvas->clear(SK_ColorBLACK); + for (uint32_t i = 0; i < 10; ++i) { + SkAutoCanvasRestore acr(canvas, true); + + int numPoints = (i + 3) * 3; + SkPath path; + path.moveTo(1, 0); + for (float j = 1; j < numPoints; j += 3) { + constexpr float k2PI = SK_ScalarPI * 2; + path.cubicTo(cosf(j/numPoints * k2PI), sinf(j/numPoints * k2PI), + cosf((j+1)/numPoints * k2PI), sinf((j+1)/numPoints * k2PI), + j+2 == numPoints ? 1 : cosf((j+2)/numPoints * k2PI), + j+2 == numPoints ? 0 : sinf((j+2)/numPoints * k2PI)); + } + float scale = 256 - i*24; + canvas->translate(scale + (256 - scale) * .33f, scale + (256 - scale) * .33f); + canvas->scale(scale, scale); + + SkPaint paint; + paint.setColor(((i + 123458383u) * 285018463u) | 0xff808080); + paint.setAlphaf(0.3f); + paint.setAntiAlias(true); + + canvas->drawPath(path, paint); + } + return DrawResult::kOk; + } +}; + +DEF_GM( return new BatchedConvexPathsGM; ) + +} // namespace skiagm diff --git a/third_party/skia/gm/colorwheel.cpp b/third_party/skia/gm/colorwheel.cpp index 41265f5d4e5f..b4f5c1fc1adc 100644 --- a/third_party/skia/gm/colorwheel.cpp +++ b/third_party/skia/gm/colorwheel.cpp @@ -59,3 +59,32 @@ DEF_SIMPLE_GM(colorwheelnative, canvas, 128, 28) { canvas->drawString("Y", 88.0f, 20.0f, font, SkPaint(SkColors::kYellow)); canvas->drawString("K", 104.0f, 20.0f, font, SkPaint(SkColors::kBlack)); } + +/** + * This GM tests decoding images with non-default (overridden) alpha types. + */ +DEF_SIMPLE_GM(colorwheel_alphatypes, canvas, 256, 128) { + canvas->clear(SK_ColorWHITE); + + sk_sp imgData = GetResourceAsData("images/color_wheel.png"); + + auto pmImg = SkImage::MakeFromEncoded(imgData, kPremul_SkAlphaType); + auto upmImg = SkImage::MakeFromEncoded(imgData, kUnpremul_SkAlphaType); + + SkSamplingOptions linear{SkFilterMode::kLinear}; + + // We draw a tiny (8x8) section of the image that falls right on the edge of transparency, + // and blow it up so we can really see the impact of filtering in premul or unpremul. + SkRect srcRect = SkRect::MakeXYWH(12, 102, 8, 8); + SkRect dstRect = SkRect::MakeLTRB(0, 0, 128, 128); + + // First, we draw the normal (premul-then-filter) image, which looks good. The yellow image + // transitions to the white background like you'd expect. + canvas->drawImageRect(pmImg, srcRect, dstRect, + linear, nullptr, SkCanvas::kFast_SrcRectConstraint); + // Next, we draw the unpremul (filter-then-premul) image, which looks bad. Filtering in unpremul + // causes the implicit black of the transparent pixels to be bleed into the filtered edge, + // creating a dark "fringe" at the boundary between the yellow image and white background. + canvas->drawImageRect(upmImg, srcRect, dstRect.makeOffset(128, 0), + linear, nullptr, SkCanvas::kFast_SrcRectConstraint); +} diff --git a/third_party/skia/gm/colrv1.cpp b/third_party/skia/gm/colrv1.cpp index 82aefa348a57..0270cd8ea9e3 100644 --- a/third_party/skia/gm/colrv1.cpp +++ b/third_party/skia/gm/colrv1.cpp @@ -37,7 +37,8 @@ class ColrV1GM : public GM { kColorFontsRepoSkew, kColorFontsRepoTransform, kColorFontsRepoClipBox, - kColorFontsRepoComposite + kColorFontsRepoComposite, + kColorFontsRepoForeground }; ColrV1GM(ColrV1TestType testType, SkScalar skewX, SkScalar rotateDeg) @@ -64,6 +65,8 @@ class ColrV1GM : public GM { return SkString("clipbox"); case kColorFontsRepoComposite: return SkString("composite"); + case kColorFontsRepoForeground: + return SkString("foreground"); } SkASSERT(false); /* not reached */ return SkString(); @@ -89,7 +92,7 @@ class ColrV1GM : public GM { SkASSERT(false); break; case kColorFontsRepoGradients: - fEmojiFont.fGlyphs = {2, 5, 6, 7, 8}; + fEmojiFont.fGlyphs = {2, 5, 6, 7, 8, 55}; break; case kColorFontsRepoScaling: fEmojiFont.fGlyphs = {9, 10, 11, 12, 13, 14}; @@ -112,6 +115,9 @@ class ColrV1GM : public GM { case kColorFontsRepoComposite: fEmojiFont.fGlyphs = {40, 41, 42, 43, 44, 45, 46}; break; + case kColorFontsRepoForeground: + fEmojiFont.fGlyphs = {47, 48, 49, 50, 51, 52, 53, 54}; + break; } } @@ -148,15 +154,20 @@ class ColrV1GM : public GM { SkFontMetrics metrics; SkScalar y = 0; + std::vector paint_colors = { + SK_ColorBLACK, SK_ColorGREEN, SK_ColorRED, SK_ColorBLUE}; + auto paint_color_iterator = paint_colors.begin(); for (SkScalar textSize : { 12, 18, 30, 120 }) { font.setSize(textSize); font.getMetrics(&metrics); y += -metrics.fAscent; + paint.setColor(*paint_color_iterator); canvas->drawSimpleText(fEmojiFont.fGlyphs.data(), fEmojiFont.bytesize(), SkTextEncoding::kGlyphID, 10, y, font, paint); y += metrics.fDescent + metrics.fLeading; + paint_color_iterator++; } return DrawResult::kOk; } @@ -181,5 +192,6 @@ DEF_GM(return new ColrV1GM(ColrV1GM::kColorFontsRepoTransform, 0.f, 0.f);) DEF_GM(return new ColrV1GM(ColrV1GM::kColorFontsRepoClipBox, 0.f, 0.f);) DEF_GM(return new ColrV1GM(ColrV1GM::kColorFontsRepoClipBox, -0.5f, 20.f);) DEF_GM(return new ColrV1GM(ColrV1GM::kColorFontsRepoComposite, 0.f, 0.f);) +DEF_GM(return new ColrV1GM(ColrV1GM::kColorFontsRepoForeground, 0.f, 0.f);) } // namespace skiagm diff --git a/third_party/skia/gm/constcolorprocessor.cpp b/third_party/skia/gm/constcolorprocessor.cpp index d5602ebb8773..e40821ef1278 100644 --- a/third_party/skia/gm/constcolorprocessor.cpp +++ b/third_party/skia/gm/constcolorprocessor.cpp @@ -43,14 +43,13 @@ namespace skiagm { /** - * This GM directly exercises Color, ModulateRGBA and ModulateAlpha. + * This GM directly exercises Color and ModulateRGBA. */ class ColorProcessor : public GpuGM { public: enum class TestMode { kConstColor, - kModulateRGBA, - kModulateAlpha + kModulateRGBA }; ColorProcessor(TestMode mode) : fMode(mode) { @@ -62,7 +61,6 @@ class ColorProcessor : public GpuGM { switch (fMode) { case TestMode::kConstColor: return SkString("const_color_processor"); case TestMode::kModulateRGBA: return SkString("modulate_rgba"); - case TestMode::kModulateAlpha: return SkString("modulate_alpha"); } SkUNREACHABLE; } @@ -115,7 +113,7 @@ class ColorProcessor : public GpuGM { std::unique_ptr baseFP; if (paintType >= SK_ARRAY_COUNT(kPaintColors)) { GrColorInfo colorInfo; - GrFPArgs args(rContext, SkSimpleMatrixProvider(SkMatrix::I()), &colorInfo); + GrFPArgs args(rContext, SkMatrixProvider(SkMatrix::I()), &colorInfo); baseFP = as_SB(fShader)->asFragmentProcessor(args); } else { baseFP = GrFragmentProcessor::MakeColor( @@ -134,11 +132,6 @@ class ColorProcessor : public GpuGM { colorFP = GrFragmentProcessor::ModulateRGBA( std::move(baseFP), SkPMColor4f::FromBytes_RGBA(kColors[procColor])); break; - - case TestMode::kModulateAlpha: - colorFP = GrFragmentProcessor::ModulateAlpha( - std::move(baseFP), SkPMColor4f::FromBytes_RGBA(kColors[procColor])); - break; } // Render the FP tree. @@ -222,6 +215,5 @@ class ColorProcessor : public GpuGM { DEF_GM(return new ColorProcessor{ColorProcessor::TestMode::kConstColor};) DEF_GM(return new ColorProcessor{ColorProcessor::TestMode::kModulateRGBA};) -DEF_GM(return new ColorProcessor{ColorProcessor::TestMode::kModulateAlpha};) } // namespace skiagm diff --git a/third_party/skia/gm/drawquadset.cpp b/third_party/skia/gm/drawquadset.cpp index 2bf8c11b5a1e..ed4798f47583 100644 --- a/third_party/skia/gm/drawquadset.cpp +++ b/third_party/skia/gm/drawquadset.cpp @@ -84,7 +84,7 @@ static void draw_gradient_tiles(SkCanvas* canvas, bool alignGradients) { if (sdc) { // Use non-public API to leverage general GrPaint capabilities SkMatrix view = canvas->getTotalMatrix(); - SkSimpleMatrixProvider matrixProvider(view); + SkMatrixProvider matrixProvider(view); GrPaint grPaint; SkPaintToGrPaint(rContext, sdc->colorInfo(), paint, matrixProvider, &grPaint); sdc->fillRectWithEdgeAA(nullptr, std::move(grPaint), GrAA::kYes, diff --git a/third_party/skia/gm/image_shader.cpp b/third_party/skia/gm/image_shader.cpp index 547af5d2f867..e614bf21bd49 100644 --- a/third_party/skia/gm/image_shader.cpp +++ b/third_party/skia/gm/image_shader.cpp @@ -204,3 +204,37 @@ DEF_SIMPLE_GM(drawimage_sampling, canvas, 500, 500) { } } + +// Test case for skbug.com/12685 (texture-backed image shaders silently fail drawing to CPU canvas) +DEF_SIMPLE_GM(textureimage_and_shader, canvas, 100, 50) { + canvas->clear(SK_ColorGREEN); + + sk_sp image; + if (canvas->getSurface()) { + image = canvas->getSurface()->makeImageSnapshot(); + canvas->clear(SK_ColorRED); + } else { + auto greenSurface = SkSurface::MakeRasterN32Premul(50, 50); + greenSurface->getCanvas()->clear(SK_ColorGREEN); + image = greenSurface->makeImageSnapshot(); + } + + // At this point, 'image' contains a green image. If our original canvas is GPU-backed, then + // the snapped image will be a (GPU) texture. We will try to draw that image to a non-GPU + // surface, to ensure that we get automatic read-back. If all goes well, we will get a pure + // green result. If either draw fails, we'll get red (most likely). + + auto surface = SkSurface::MakeRasterN32Premul(50, 50); + + // First, use drawImage: + surface->getCanvas()->clear(SK_ColorRED); + surface->getCanvas()->drawImage(image, 0, 0); + canvas->drawImage(surface->makeImageSnapshot(), 0, 0); + + // Now, use an image shader: + SkPaint paint; + paint.setShader(image->makeShader(SkSamplingOptions())); + surface->getCanvas()->clear(SK_ColorRED); + surface->getCanvas()->drawPaint(paint); + canvas->drawImage(surface->makeImageSnapshot(), 50, 0); +} diff --git a/third_party/skia/gm/imagefiltersbase.cpp b/third_party/skia/gm/imagefiltersbase.cpp index ec0299986454..ab75a2594e46 100644 --- a/third_party/skia/gm/imagefiltersbase.cpp +++ b/third_party/skia/gm/imagefiltersbase.cpp @@ -179,7 +179,7 @@ static void draw_patch(SkCanvas* canvas, SkImage*, const SkRect& r, sk_sptranslate(-r.fLeft, -r.fTop); canvas->scale(r.width() / 400.0, r.height() / 400.0); - canvas->drawPatch(gCubics, colors, /*texCoords=*/nullptr, SkBlendMode::kSrc, paint); + canvas->drawPatch(gCubics, colors, /*texCoords=*/nullptr, SkBlendMode::kDst, paint); } static void draw_atlas(SkCanvas* canvas, SkImage* atlas, const SkRect& r, diff --git a/third_party/skia/gm/patch.cpp b/third_party/skia/gm/patch.cpp index b5f430a6efea..97b05e86bd99 100644 --- a/third_party/skia/gm/patch.cpp +++ b/third_party/skia/gm/patch.cpp @@ -96,11 +96,12 @@ const SkPoint gTexCoords[SkPatchUtils::kNumCorners] = { static void dopatch(SkCanvas* canvas, const SkColor colors[], sk_sp img, const SkMatrix* localMatrix) { SkPaint paint; + paint.setColor(SK_ColorGREEN); const SkBlendMode modes[] = { SkBlendMode::kSrc, SkBlendMode::kDst, - SkBlendMode::kModulate, + SkBlendMode::kColorDodge, }; SkPoint texStorage[4]; @@ -189,7 +190,7 @@ DEF_SIMPLE_GM(patch_alpha_test, canvas, 550, 250) { 0x80FF0000, 0x80FF0000, 0x80FF0000, 0x80FF0000, }; SkPaint paint; - canvas->drawPatch(gCubics, colors, nullptr, SkBlendMode::kModulate, paint); + canvas->drawPatch(gCubics, colors, nullptr, SkBlendMode::kDst, paint); canvas->translate(300, 0); diff --git a/third_party/skia/gm/pathmeasure.cpp b/third_party/skia/gm/pathmeasure.cpp index 25b36114a7c0..13f69c186b27 100644 --- a/third_party/skia/gm/pathmeasure.cpp +++ b/third_party/skia/gm/pathmeasure.cpp @@ -13,7 +13,7 @@ #include "include/effects/SkDashPathEffect.h" // Repro case for skia:7674. Requires lots of RAM to run, and currently triggers UB: -// ../include/private/SkTDArray.h:382:26: +// //include/private/SkTDArray.h:382:26: // runtime error: signed integer overflow: 2147483644 + 4 cannot be represented in type 'int' static SK_UNUSED void path_measure_explosion(SkCanvas* canvas) { diff --git a/third_party/skia/gm/runtimecolorfilter.cpp b/third_party/skia/gm/runtimecolorfilter.cpp index d55319dab1ec..8a105de235e6 100644 --- a/third_party/skia/gm/runtimecolorfilter.cpp +++ b/third_party/skia/gm/runtimecolorfilter.cpp @@ -11,9 +11,12 @@ #include "include/core/SkData.h" #include "include/core/SkImage.h" #include "include/core/SkPaint.h" +#include "include/core/SkRSXform.h" #include "include/core/SkRefCnt.h" #include "include/core/SkSize.h" #include "include/core/SkString.h" +#include "include/core/SkSurface.h" +#include "include/core/SkVertices.h" #include "include/effects/SkRuntimeEffect.h" #include "tools/Resources.h" @@ -105,3 +108,92 @@ DEF_SIMPLE_GM(runtimecolorfilter, canvas, 256 * 3, 256 * 2) { draw_filter(src); } } + +DEF_SIMPLE_GM(runtimecolorfilter_vertices_atlas_and_patch, canvas, 404, 404) { + constexpr SkRect r = SkRect::MakeWH(128, 128); + + // Make a vertices that draws the same as SkRect 'r'. + SkPoint pos[4]; + r.toQuad(pos); + constexpr SkColor kColors[] = {SK_ColorBLUE, SK_ColorGREEN, SK_ColorCYAN, SK_ColorYELLOW}; + auto verts = SkVertices::MakeCopy(SkVertices::kTriangleFan_VertexMode, 4, pos, pos, kColors); + + // Make an image from the vertices to do equivalent drawAtlas, drawPatch using an image shader. + auto info = SkImageInfo::Make({128, 128}, + kRGBA_8888_SkColorType, + kPremul_SkAlphaType, + canvas->imageInfo().refColorSpace()); + auto surf = SkSurface::MakeRaster(info); + surf->getCanvas()->drawVertices(verts, SkBlendMode::kDst, SkPaint()); + auto atlas = surf->makeImageSnapshot(); + auto xform = SkRSXform::Make(1, 0, 0, 0); + + // Make a patch that draws the same as the SkRect 'r' + SkVector vx = pos[1] - pos[0]; + SkVector vy = pos[3] - pos[0]; + vx.setLength(vx.length()/3.f); + vy.setLength(vy.length()/3.f); + const SkPoint cubics[12] = { + pos[0], pos[0] + vx, pos[1] - vx, + pos[1], pos[1] + vy, pos[2] - vy, + pos[2], pos[2] - vx, pos[3] + vx, + pos[3], pos[3] - vy, pos[0] + vy + }; + + auto [effect, err] = SkRuntimeEffect::MakeForColorFilter(SkString(gLumaSrc)); + if (!effect) { + SkDebugf("%s\n%s\n", gLumaSrc, err.c_str()); + } + SkASSERT(effect); + sk_sp colorfilter = effect->makeColorFilter(nullptr); + + auto makePaint = [&](bool useCF, bool useShader) { + SkPaint paint; + paint.setColorFilter(useCF ? colorfilter : nullptr); + paint.setShader(useShader ? atlas->makeShader(SkSamplingOptions{}) : nullptr); + return paint; + }; + + auto drawVertices = [&](float x, bool useCF, bool useShader) { + SkAutoCanvasRestore acr(canvas, /*doSave=*/true); + canvas->translate(x, 0); + // Use just the shader or just the vertex colors. + auto mode = useShader ? SkBlendMode::kSrc : SkBlendMode::kDst; + canvas->drawVertices(verts, mode, makePaint(useCF, useShader)); + }; + + auto drawAtlas = [&](float x, bool useCF) { + SkAutoCanvasRestore acr(canvas, /*doSave=*/true); + canvas->translate(x, 0); + SkPaint paint = makePaint(useCF, /*useShader=*/false); + constexpr SkColor kColor = SK_ColorWHITE; + canvas->drawAtlas(atlas.get(), + &xform, + &r, + &kColor, + 1, + SkBlendMode::kModulate, + SkSamplingOptions{}, + nullptr, + &paint); + }; + + auto drawPatch = [&](float x, bool useCF) { + SkAutoCanvasRestore acr(canvas, true); + canvas->translate(x, 0); + SkPaint paint = makePaint(useCF, /*useShader=*/true); + canvas->drawPatch(cubics, nullptr, pos, SkBlendMode::kModulate, paint); + }; + + drawVertices( 0, /*useCF=*/false, /*useShader=*/false); + drawVertices( r.width() + 10, /*useCF=*/ true, /*useShader=*/false); + drawVertices(2*(r.width() + 10), /*useCF=*/ true, /*useShader=*/ true); + + canvas->translate(0, r.height() + 10); + drawAtlas( 0, /*useCF=*/false); + drawAtlas(r.width() + 10, /*useCF=*/ true); + + canvas->translate(0, r.height() + 10); + drawPatch( 0, /*useCF=*/false); + drawPatch(r.width() + 10, /*useCF=*/ true); +} diff --git a/third_party/skia/gm/runtimeimagefilter.cpp b/third_party/skia/gm/runtimeimagefilter.cpp index e5189766cf4c..75522b394fdb 100644 --- a/third_party/skia/gm/runtimeimagefilter.cpp +++ b/third_party/skia/gm/runtimeimagefilter.cpp @@ -30,9 +30,8 @@ static sk_sp make_filter() { return child.eval(coord); } )")).effect; - return SkMakeRuntimeImageFilter(std::move(effect), - /*uniforms=*/nullptr, - /*input=*/nullptr); + SkRuntimeShaderBuilder builder(std::move(effect)); + return SkImageFilters::RuntimeShader(builder, /*childShaderName=*/nullptr, /*input=*/nullptr); } DEF_SIMPLE_GM_BG(rtif_distort, canvas, 500, 750, SK_ColorBLACK) { diff --git a/third_party/skia/gm/runtimeshader.cpp b/third_party/skia/gm/runtimeshader.cpp index 7e78f53ec811..bc60222412ee 100644 --- a/third_party/skia/gm/runtimeshader.cpp +++ b/third_party/skia/gm/runtimeshader.cpp @@ -189,8 +189,8 @@ class SpiralRT : public RuntimeShaderGM { SpiralRT() : RuntimeShaderGM("spiral_rt", {512, 512}, R"( uniform float rad_scale; uniform float2 in_center; - layout(srgb_unpremul) uniform float4 in_colors0; - layout(srgb_unpremul) uniform float4 in_colors1; + layout(color) uniform float4 in_colors0; + layout(color) uniform float4 in_colors1; half4 main(float2 p) { float2 pp = p - in_center; @@ -209,8 +209,8 @@ class SpiralRT : public RuntimeShaderGM { builder.uniform("rad_scale") = std::sin(fSecs * 0.5f + 2.0f) / 5; builder.uniform("in_center") = SkV2{256, 256}; - builder.uniform("in_colors0") = SkV4{1, 0, 0, 1}; - builder.uniform("in_colors1") = SkV4{0, 1, 0, 1}; + builder.uniform("in_colors0") = SkColors::kRed; + builder.uniform("in_colors1") = SkColors::kGreen; SkPaint paint; paint.setShader(builder.makeShader(nullptr, true)); @@ -658,14 +658,45 @@ static sk_sp normal_map_shader() { return effect->makeShader(nullptr, {}, nullptr, true); } -static sk_sp normal_map_image_shader() { +static sk_sp normal_map_image() { // Above, baked into an image: - auto surface = SkSurface::MakeRasterN32Premul(256, 256); + auto info = SkImageInfo::Make(256, 256, kN32_SkColorType, kPremul_SkAlphaType); + auto surface = SkSurface::MakeRaster(info); SkPaint p; p.setShader(normal_map_shader()); surface->getCanvas()->drawPaint(p); - auto image = surface->makeImageSnapshot(); - return image->makeShader(SkSamplingOptions{}); + return surface->makeImageSnapshot(); +} + +static sk_sp normal_map_image_shader() { + return normal_map_image()->makeShader(SkSamplingOptions{}); +} + +static sk_sp normal_map_raw_image_shader() { + return normal_map_image()->makeRawShader(SkSamplingOptions{}); +} + +static sk_sp normal_map_unpremul_image() { + auto image = normal_map_image(); + SkPixmap pm; + SkAssertResult(image->peekPixels(&pm)); + SkBitmap bmp; + bmp.allocPixels(image->imageInfo().makeAlphaType(kUnpremul_SkAlphaType)); + // Copy all pixels over, but set alpha to 0 + for (int y = 0; y < pm.height(); y++) { + for (int x = 0; x < pm.width(); x++) { + *bmp.getAddr32(x, y) = *pm.addr32(x, y) & 0x00FFFFFF; + } + } + return bmp.asImage(); +} + +static sk_sp normal_map_unpremul_image_shader() { + return normal_map_unpremul_image()->makeShader(SkSamplingOptions{}); +} + +static sk_sp normal_map_raw_unpremul_image_shader() { + return normal_map_unpremul_image()->makeRawShader(SkSamplingOptions{}); } static sk_sp lit_shader(sk_sp normals) { @@ -675,7 +706,7 @@ static sk_sp lit_shader(sk_sp normals) { half4 main(vec2 p) { vec3 n = normalize(normals.eval(p).xyz * 2 - 1); vec3 l = normalize(vec3(1, -1, 1)); - return dot(n, l).xxx1; + return saturate(dot(n, l)).xxx1; } )"; auto effect = SkRuntimeEffect::MakeForShader(SkString(kSrc)).effect; @@ -706,3 +737,55 @@ DEF_SIMPLE_GM(paint_alpha_normals_rt, canvas, 512,512) { draw_shader(256, 0, lit_shader(normal_map_shader())); draw_shader(256, 256, lit_shader(normal_map_image_shader())); } + +DEF_SIMPLE_GM(raw_image_shader_normals_rt, canvas, 768, 512) { + // Demonstrates the utility of SkImage::makeRawShader, for non-color child shaders. + + // First, make an offscreen surface, so we can control the destination color space: + auto surfInfo = SkImageInfo::Make(512, 512, + kN32_SkColorType, + kPremul_SkAlphaType, + SkColorSpace::MakeSRGB()->makeColorSpin()); + auto surface = canvas->makeSurface(surfInfo); + if (!surface) { + surface = SkSurface::MakeRaster(surfInfo); + } + + auto draw_shader = [](int x, int y, sk_sp shader, SkCanvas* canvas) { + SkPaint p; + p.setShader(shader); + + canvas->save(); + canvas->translate(x, y); + canvas->clipRect({0, 0, 256, 256}); + canvas->drawPaint(p); + canvas->restore(); + }; + + sk_sp colorNormals = normal_map_image_shader(), + rawNormals = normal_map_raw_image_shader(); + + // Draw our normal map as colors (will be color-rotated), and raw (untransformed) + draw_shader(0, 0, colorNormals, surface->getCanvas()); + draw_shader(0, 256, rawNormals, surface->getCanvas()); + + // Now draw our lighting shader using the normal and raw versions of the normals as children. + // The top image will have the normals rotated (incorrectly), so the lighting is very dark. + draw_shader(256, 0, lit_shader(colorNormals), surface->getCanvas()); + draw_shader(256, 256, lit_shader(rawNormals), surface->getCanvas()); + + // Now draw the offscreen surface back to our original canvas. If we do this naively, the image + // will be un-transformed back to the canvas' color space. That will have the effect of undoing + // the color spin on the upper-left, and APPLYING a color-spin on the bottom left. To preserve + // the intent of this GM (and make it draw consistently whether or not the original surface has + // a color space attached), we reinterpret the offscreen image as being in sRGB: + canvas->drawImage( + surface->makeImageSnapshot()->reinterpretColorSpace(SkColorSpace::MakeSRGB()), 0, 0); + + // Finally, to demonstrate that raw unpremul image shaders don't premul, draw lighting two more + // times, with an unpremul normal map (containing ZERO in the alpha channel). THe top will + // premultiply the normals, resulting in totally dark lighting. The bottom will retain the RGB + // encoded normals, even with zero alpha: + draw_shader(512, 0, lit_shader(normal_map_unpremul_image_shader()), canvas); + draw_shader(512, 256, lit_shader(normal_map_raw_unpremul_image_shader()), canvas); +} diff --git a/third_party/skia/gm/savelayer.cpp b/third_party/skia/gm/savelayer.cpp index dbb667699a94..57ae0527d6ae 100644 --- a/third_party/skia/gm/savelayer.cpp +++ b/third_party/skia/gm/savelayer.cpp @@ -60,44 +60,6 @@ DEF_SIMPLE_GM(savelayer_initfromprev, canvas, 256, 256) { canvas->restore(); }; -DEF_SIMPLE_GM(savelayer_coverage, canvas, 500, 500) { - canvas->saveLayer(nullptr, nullptr); - - SkRect r = { 0, 0, 200, 200 }; - SkPaint layerPaint; - layerPaint.setBlendMode(SkBlendMode::kModulate); - - auto image = GetResourceAsImage("images/mandrill_128.png"); - - auto proc = [layerPaint](SkCanvas* canvas, SkCanvas::SaveLayerRec& rec) { - SkPaint paint; - paint.setColor(SK_ColorRED); - - canvas->saveLayer(rec); - canvas->drawCircle(100, 100, 50, paint); - paint.setColor(0x8800FF00); - canvas->drawRect({10, 90, 190, 110}, paint); - canvas->restore(); - }; - - const int yflags[] = { 0, SkCanvas::kInitWithPrevious_SaveLayerFlag }; - for (int y = 0; y <= 1; ++y) { - const int xflags[] = { 0, SkCanvas::kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag }; - for (int x = 0; x <= 1; ++x) { - canvas->save(); - canvas->translate(x * 200.f, y * 200.f); - - SkCanvas::SaveLayerRec rec(&r, &layerPaint, yflags[y] | xflags[x]); - canvas->drawImageRect(image, r, SkSamplingOptions(), nullptr); - proc(canvas, rec); - - canvas->restore(); - } - } - - canvas->restore(); -} - static void draw_cell(SkCanvas* canvas, sk_sp blob, SkColor c, SkScalar w, SkScalar h, bool useDrawBehind) { SkRect r = SkRect::MakeWH(w, h); diff --git a/third_party/skia/gm/slug.cpp b/third_party/skia/gm/slug.cpp new file mode 100644 index 000000000000..441af520a46b --- /dev/null +++ b/third_party/skia/gm/slug.cpp @@ -0,0 +1,108 @@ +/* + * Copyright 2021 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm/gm.h" +#include "include/core/SkCanvas.h" +#include "include/core/SkColor.h" +#include "include/core/SkFont.h" +#include "include/core/SkFontStyle.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkString.h" +#include "include/core/SkTextBlob.h" +#include "include/core/SkTypeface.h" +#include "include/core/SkTypes.h" +#include "include/private/SkTDArray.h" +#include "include/private/chromium/GrSlug.h" +#include "tools/ToolUtils.h" + +#if SK_SUPPORT_GPU && defined(SK_EXPERIMENTAL_ADD_ATLAS_PADDING) +class SlugGM : public skiagm::GM { +public: + SlugGM(const char* txt) + : fText(txt) { + } + +protected: + void onOnceBeforeDraw() override { + fTypeface = ToolUtils::create_portable_typeface("serif", SkFontStyle()); + SkFont font(fTypeface); + size_t txtLen = strlen(fText); + int glyphCount = font.countText(fText, txtLen, SkTextEncoding::kUTF8); + + fGlyphs.append(glyphCount); + font.textToGlyphs(fText, txtLen, SkTextEncoding::kUTF8, fGlyphs.begin(), glyphCount); + } + + SkString onShortName() override { + return SkString("slug"); + } + + SkISize onISize() override { + return SkISize::Make(1000, 480); + } + + void onDraw(SkCanvas* canvas) override { + sk_sp blob(this->makeBlob()); + SkPaint p; + p.setAntiAlias(true); + canvas->clipIRect(SkIRect::MakeSize(this->getISize()).makeInset(40, 50)); + canvas->scale(1.3f, 1.3f); + sk_sp slug = GrSlug::ConvertBlob(canvas, *blob, {10, 10}, p); + if (slug == nullptr) { + return; + } + canvas->translate(0.5, 0.5); + canvas->translate(30, 30); + canvas->drawTextBlob(blob, 10, 10, p); + canvas->translate(370, 0); + slug->draw(canvas); + for (float scale = 1.5; scale < 4; scale += 0.5) { + canvas->translate(-370, 20 * scale); + canvas->save(); + canvas->scale(scale, scale); + canvas->rotate(5); + canvas->drawTextBlob(blob, 10, 10, p); + canvas->restore(); + canvas->translate(370, 0); + canvas->save(); + canvas->scale(scale, scale); + canvas->rotate(5); + + slug->draw(canvas); + canvas->restore(); + } + } + +private: + sk_sp makeBlob() { + SkTextBlobBuilder builder; + + SkFont font; + font.setSubpixel(true); + font.setEdging(SkFont::Edging::kAntiAlias); + font.setTypeface(fTypeface); + font.setSize(16); + + const SkTextBlobBuilder::RunBuffer& buf = builder.allocRun(font, fGlyphs.count(), 0, 0); + memcpy(buf.glyphs, fGlyphs.begin(), fGlyphs.count() * sizeof(uint16_t)); + return builder.make(); + } + + SkTDArray fGlyphs; + sk_sp fTypeface; + const char* fText; + using INHERITED = skiagm::GM; +}; + +DEF_GM(return new SlugGM("hamburgefons");) +#endif diff --git a/third_party/skia/gm/vertices.cpp b/third_party/skia/gm/vertices.cpp index 7d57f0b02c45..20387ed40fe3 100644 --- a/third_party/skia/gm/vertices.cpp +++ b/third_party/skia/gm/vertices.cpp @@ -252,6 +252,7 @@ static void draw_batching(SkCanvas* canvas) { canvas->concat(m); SkPaint paint; paint.setShader(useShader ? shader : nullptr); + paint.setColor(SK_ColorWHITE); const SkPoint* t = useTex ? texs : nullptr; auto v = SkVertices::MakeCopy(SkVertices::kTriangles_VertexMode, kMeshVertexCnt, @@ -301,12 +302,12 @@ DEF_SIMPLE_GM(vertices_perspective, canvas, 256, 256) { canvas->save(); canvas->translate(0, r.height()); canvas->concat(persp); - canvas->drawVertices(verts, paint); + canvas->drawVertices(verts, SkBlendMode::kModulate, paint); canvas->restore(); canvas->save(); canvas->translate(r.width(), r.height()); canvas->concat(persp); - canvas->drawVertices(verts, paint); + canvas->drawVertices(verts, SkBlendMode::kModulate, paint); canvas->restore(); } diff --git a/third_party/skia/gn/bench.gni b/third_party/skia/gn/bench.gni index 76da0630865b..637252185d60 100644 --- a/third_party/skia/gn/bench.gni +++ b/third_party/skia/gn/bench.gni @@ -44,6 +44,7 @@ bench_sources = [ "$_bench/EncodeBench.cpp", "$_bench/FSRectBench.cpp", "$_bench/FilteringBench.cpp", + "$_bench/FindCubicConvex180ChopsBench.cpp", "$_bench/FontCacheBench.cpp", "$_bench/GMBench.cpp", "$_bench/GameBench.cpp", @@ -51,7 +52,6 @@ bench_sources = [ "$_bench/GlyphQuadFillBench.cpp", "$_bench/GrMemoryPoolBench.cpp", "$_bench/GrMipmapBench.cpp", - "$_bench/GrPathUtilsBench.cpp", "$_bench/GrQuadBench.cpp", "$_bench/GrResourceCacheBench.cpp", "$_bench/GradientBench.cpp", diff --git a/third_party/skia/gn/core.gni b/third_party/skia/gn/core.gni index 54873b3bdce4..f0318876df68 100644 --- a/third_party/skia/gn/core.gni +++ b/third_party/skia/gn/core.gni @@ -253,7 +253,6 @@ skia_core_sources = [ "$_src/core/SkMSAN.h", "$_src/core/SkMalloc.cpp", "$_src/core/SkMallocPixelRef.cpp", - "$_src/core/SkMarkerStack.cpp", "$_src/core/SkMask.cpp", "$_src/core/SkMask.h", "$_src/core/SkMaskBlurFilter.cpp", @@ -367,6 +366,7 @@ skia_core_sources = [ "$_src/core/SkStrikeSpec.h", "$_src/core/SkString.cpp", "$_src/core/SkStringUtils.cpp", + "$_src/core/SkStringUtils.h", "$_src/core/SkStringView.cpp", "$_src/core/SkStroke.cpp", "$_src/core/SkStroke.h", diff --git a/third_party/skia/gn/flutter_defines.gni b/third_party/skia/gn/flutter_defines.gni index 0e3351754d41..43c2d588e846 100644 --- a/third_party/skia/gn/flutter_defines.gni +++ b/third_party/skia/gn/flutter_defines.gni @@ -14,6 +14,7 @@ flutter_defines = [ # Staging "SK_LEGACY_INNER_JOINS", + "SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER", # Fast low-precision software rendering isn't a priority for Flutter. "SK_DISABLE_LEGACY_SHADERCONTEXT", diff --git a/third_party/skia/gn/gm.gni b/third_party/skia/gn/gm.gni index ab86cfbd2fc4..6785e512578c 100644 --- a/third_party/skia/gn/gm.gni +++ b/third_party/skia/gn/gm.gni @@ -31,6 +31,7 @@ gm_sources = [ "$_gm/backdrop.cpp", "$_gm/backdrop_imagefilter_croprect.cpp", "$_gm/badpaint.cpp", + "$_gm/batchedconvexpaths.cpp", "$_gm/bc1_transparency.cpp", "$_gm/beziers.cpp", "$_gm/bicubic.cpp", @@ -343,6 +344,7 @@ gm_sources = [ "$_gm/skbug_8955.cpp", "$_gm/skbug_9319.cpp", "$_gm/skbug_9819.cpp", + "$_gm/slug.cpp", "$_gm/smallarc.cpp", "$_gm/smallpaths.cpp", "$_gm/spritebitmap.cpp", diff --git a/third_party/skia/gn/gpu.gni b/third_party/skia/gn/gpu.gni index 72c54dfb6ee3..fb4f25491d1e 100644 --- a/third_party/skia/gn/gpu.gni +++ b/third_party/skia/gn/gpu.gni @@ -30,6 +30,7 @@ skia_gpu_sources = [ "$_include/private/GrResourceKey.h", "$_include/private/GrSingleOwner.h", "$_include/private/GrTypesPriv.h", + "$_include/private/chromium/GrSlug.h", "$_src/gpu/GrAHardwareBufferImageGenerator.cpp", "$_src/gpu/GrAHardwareBufferImageGenerator.h", "$_src/gpu/GrAHardwareBufferUtils.cpp", @@ -323,12 +324,14 @@ skia_gpu_sources = [ "$_src/gpu/gradients/GrGradientShader.h", # tessellate + "$_src/gpu/tessellate/AffineMatrix.h", + "$_src/gpu/tessellate/PatchWriter.cpp", + "$_src/gpu/tessellate/PatchWriter.h", "$_src/gpu/tessellate/PathCurveTessellator.cpp", "$_src/gpu/tessellate/PathCurveTessellator.h", "$_src/gpu/tessellate/PathTessellator.h", "$_src/gpu/tessellate/PathWedgeTessellator.cpp", "$_src/gpu/tessellate/PathWedgeTessellator.h", - "$_src/gpu/tessellate/PathXform.h", "$_src/gpu/tessellate/StrokeFixedCountTessellator.cpp", "$_src/gpu/tessellate/StrokeFixedCountTessellator.h", "$_src/gpu/tessellate/StrokeHardwareTessellator.cpp", @@ -357,6 +360,7 @@ skia_gpu_sources = [ "$_src/gpu/text/GrSDFMaskFilter.h", "$_src/gpu/text/GrSDFTControl.cpp", "$_src/gpu/text/GrSDFTControl.h", + "$_src/gpu/text/GrSlug.cpp", "$_src/gpu/text/GrStrikeCache.cpp", "$_src/gpu/text/GrStrikeCache.h", "$_src/gpu/text/GrTextBlob.cpp", @@ -475,16 +479,6 @@ skia_gl_gpu_sources = [ skia_null_gpu_sources = [ "$_src/gpu/gl/GrGLMakeNativeInterface_none.cpp" ] -skia_skgpu_v2_sources = [ - # Sk files - "$_src/gpu/v2/Device.cpp", - "$_src/gpu/v2/Device_v2.h", - "$_src/gpu/v2/SurfaceDrawContext.cpp", - "$_src/gpu/v2/SurfaceDrawContext_v2.h", - "$_src/gpu/v2/SurfaceFillContext_v2.cpp", - "$_src/gpu/v2/SurfaceFillContext_v2.h", -] - skia_skgpu_v1_sources = [ "$_src/gpu/GrAuditTrail.cpp", "$_src/gpu/GrBlurUtils.cpp", diff --git a/third_party/skia/gn/graphite.gni b/third_party/skia/gn/graphite.gni index 98c48ccac064..9f4ce6cfbe03 100644 --- a/third_party/skia/gn/graphite.gni +++ b/third_party/skia/gn/graphite.gni @@ -8,15 +8,18 @@ _src = get_path_info("../experimental/graphite/src", "abspath") _include = get_path_info("../experimental/graphite/include", "abspath") skia_graphite_public = [ + "$_include/BackendTexture.h", "$_include/Context.h", "$_include/GraphiteTypes.h", + "$_include/Recorder.h", + "$_include/Recording.h", + "$_include/SkStuff.h", + "$_include/TextureInfo.h", ] skia_graphite_sources = [ - "$_include/Context.h", - "$_include/SkStuff.h", - "$_include/TextureInfo.h", - "$_include/private/GraphiteTypesPriv.h", + "$_src/Attribute.h", + "$_src/BackendTexture.cpp", "$_src/Buffer.cpp", "$_src/Buffer.h", "$_src/Caps.cpp", @@ -41,26 +44,27 @@ skia_graphite_sources = [ "$_src/DrawOrder.h", "$_src/DrawPass.cpp", "$_src/DrawPass.h", + "$_src/DrawTypes.h", + "$_src/DrawWriter.cpp", + "$_src/DrawWriter.h", + "$_src/EnumBitMask.h", "$_src/Gpu.cpp", "$_src/Gpu.h", "$_src/GpuWorkSubmission.h", + "$_src/GraphicsPipeline.cpp", + "$_src/GraphicsPipeline.h", + "$_src/GraphicsPipelineDesc.cpp", + "$_src/GraphicsPipelineDesc.h", "$_src/Image_Graphite.cpp", "$_src/Image_Graphite.h", - "$_src/ProgramCache.cpp", - "$_src/ProgramCache.h", "$_src/Recorder.cpp", - "$_src/Recorder.h", "$_src/Recording.cpp", - "$_src/Recording.h", "$_src/RenderPassTask.cpp", "$_src/RenderPassTask.h", - "$_src/RenderPipeline.cpp", - "$_src/RenderPipeline.h", - "$_src/RenderPipelineDesc.cpp", - "$_src/RenderPipelineDesc.h", "$_src/Renderer.h", "$_src/ResourceProvider.cpp", "$_src/ResourceProvider.h", + "$_src/ResourceTypes.h", "$_src/SkStuff.cpp", "$_src/Surface_Graphite.cpp", "$_src/Surface_Graphite.h", @@ -86,6 +90,7 @@ skia_graphite_sources = [ "$_src/geom/Shape.h", "$_src/geom/Transform.cpp", "$_src/geom/Transform_graphite.h", + "$_src/geom/VectorTypes.h", "$_src/render/StencilAndFillPathRenderer.cpp", ] @@ -102,9 +107,9 @@ skia_graphite_mtl_sources = [ "$_src/mtl/MtlCommandBuffer.mm", "$_src/mtl/MtlGpu.h", "$_src/mtl/MtlGpu.mm", + "$_src/mtl/MtlGraphicsPipeline.h", + "$_src/mtl/MtlGraphicsPipeline.mm", "$_src/mtl/MtlRenderCommandEncoder.h", - "$_src/mtl/MtlRenderPipeline.h", - "$_src/mtl/MtlRenderPipeline.mm", "$_src/mtl/MtlResourceProvider.h", "$_src/mtl/MtlResourceProvider.mm", "$_src/mtl/MtlTexture.h", diff --git a/third_party/skia/gn/skia.gni b/third_party/skia/gn/skia.gni index 0e84af7c934c..bda6cbabe909 100644 --- a/third_party/skia/gn/skia.gni +++ b/third_party/skia/gn/skia.gni @@ -13,7 +13,6 @@ declare_args() { skia_compile_processors = false skia_enable_api_available_macro = true skia_enable_android_utils = is_skia_dev_build - skia_enable_skgpu_v2 = false skia_enable_skgpu_v1 = true skia_enable_discrete_gpu = true skia_enable_flutter_defines = false @@ -29,6 +28,7 @@ declare_args() { skia_enable_svg = !is_component_build skia_enable_tools = is_skia_dev_build skia_enable_gpu_debug_layers = is_skia_dev_build && is_debug + skia_disable_vma_stl_shared_mutex = false skia_enable_winuwp = false skia_generate_workarounds = false skia_include_multiframe_procs = false diff --git a/third_party/skia/gn/sksl.gni b/third_party/skia/gn/sksl.gni index 5aabe88f3bc2..e9062cb692c3 100644 --- a/third_party/skia/gn/sksl.gni +++ b/third_party/skia/gn/sksl.gni @@ -31,6 +31,7 @@ skia_sksl_sources = [ "$_include/sksl/DSLSymbols.h", "$_include/sksl/DSLType.h", "$_include/sksl/DSLVar.h", + "$_include/sksl/SkSLDebugTrace.h", "$_include/sksl/SkSLErrorReporter.h", "$_src/sksl/SkSLAnalysis.cpp", "$_src/sksl/SkSLAnalysis.h", @@ -48,6 +49,7 @@ skia_sksl_sources = [ "$_src/sksl/SkSLDehydrator.h", "$_src/sksl/SkSLErrorReporter.cpp", "$_src/sksl/SkSLFileOutputStream.h", + "$_src/sksl/SkSLGLSL.h", "$_src/sksl/SkSLInliner.cpp", "$_src/sksl/SkSLInliner.h", "$_src/sksl/SkSLIntrinsicList.h", @@ -71,6 +73,8 @@ skia_sksl_sources = [ "$_src/sksl/SkSLRehydrator.cpp", "$_src/sksl/SkSLRehydrator.h", "$_src/sksl/SkSLSampleUsage.cpp", + "$_src/sksl/SkSLSharedCompiler.cpp", + "$_src/sksl/SkSLSharedCompiler.h", "$_src/sksl/SkSLString.cpp", "$_src/sksl/SkSLStringStream.h", "$_src/sksl/SkSLThreadContext.cpp", @@ -86,6 +90,8 @@ skia_sksl_sources = [ "$_src/sksl/analysis/SkSLSwitchCaseContainsExit.cpp", "$_src/sksl/codegen/SkSLVMCodeGenerator.cpp", "$_src/sksl/codegen/SkSLVMCodeGenerator.h", + "$_src/sksl/codegen/SkVMDebugTrace.cpp", + "$_src/sksl/codegen/SkVMDebugTrace.h", "$_src/sksl/dsl/DSLBlock.cpp", "$_src/sksl/dsl/DSLCase.cpp", "$_src/sksl/dsl/DSLCore.cpp", @@ -131,6 +137,7 @@ skia_sksl_sources = [ "$_src/sksl/ir/SkSLDiscardStatement.h", "$_src/sksl/ir/SkSLDoStatement.cpp", "$_src/sksl/ir/SkSLDoStatement.h", + "$_src/sksl/ir/SkSLExpression.cpp", "$_src/sksl/ir/SkSLExpression.h", "$_src/sksl/ir/SkSLExpressionStatement.cpp", "$_src/sksl/ir/SkSLExpressionStatement.h", diff --git a/third_party/skia/gn/sksl_tests.gni b/third_party/skia/gn/sksl_tests.gni index 58b8b96727a0..19d9265fe7c5 100644 --- a/third_party/skia/gn/sksl_tests.gni +++ b/third_party/skia/gn/sksl_tests.gni @@ -9,10 +9,10 @@ sksl_error_tests = [ "/sksl/errors/ArgumentModifiers.sksl", "/sksl/errors/ArrayConstructorElementCount.sksl", "/sksl/errors/ArrayIndexOutOfRange.sksl", + "/sksl/errors/ArrayInlinedIndexOutOfRange.sksl", "/sksl/errors/ArrayNegation.sksl", "/sksl/errors/ArrayOfInvalidSize.sksl", "/sksl/errors/ArrayOfVoid.sksl", - "/sksl/errors/ArrayOfVoidInStruct.sksl", "/sksl/errors/ArrayPlus.sksl", "/sksl/errors/ArrayReturnTypes.sksl", "/sksl/errors/ArraySplitDimensions.sksl", @@ -34,6 +34,7 @@ sksl_error_tests = [ "/sksl/errors/BadFieldAccess.sksl", "/sksl/errors/BadIndex.sksl", "/sksl/errors/BadModifiers.sksl", + "/sksl/errors/BadOctal.sksl", "/sksl/errors/BinaryInvalidType.sksl", "/sksl/errors/BinaryTypeCoercion.sksl", "/sksl/errors/BinaryTypeMismatch.sksl", @@ -63,6 +64,8 @@ sksl_error_tests = [ "/sksl/errors/PrecisionQualifiersDisallowed.sksl", "/sksl/errors/IfTypeMismatch.sksl", "/sksl/errors/InVarWithInitializerExpression.sksl", + "/sksl/errors/IncompleteExpression.sksl", + "/sksl/errors/IncompleteFunctionCall.sksl", "/sksl/errors/InterfaceBlockScope.sksl", "/sksl/errors/InterfaceBlockStorageModifiers.sksl", "/sksl/errors/InterfaceBlockWithNoMembers.sksl", @@ -73,7 +76,11 @@ sksl_error_tests = [ "/sksl/errors/InvalidUnary.sksl", "/sksl/errors/LastFragColorWithoutCaps.sksl", "/sksl/errors/LayoutInFunctions.sksl", + "/sksl/errors/LayoutInInterfaceBlock.sksl", + "/sksl/errors/LayoutInStruct.sksl", "/sksl/errors/LayoutRepeatedQualifiers.sksl", + "/sksl/errors/MatrixIndexOutOfRange.sksl", + "/sksl/errors/MatrixInlinedIndexOutOfRange.sksl", "/sksl/errors/MatrixToVectorCast3x3.sksl", "/sksl/errors/MatrixToVectorCastBoolean.sksl", "/sksl/errors/MatrixToVectorCastInteger.sksl", @@ -211,8 +218,13 @@ sksl_error_tests = [ "/sksl/errors/UnscopedVariableInIf.sksl", "/sksl/errors/UnscopedVariableInWhile.sksl", "/sksl/errors/UsingInvalidValue.sksl", + "/sksl/errors/VectorIndexOutOfRange.sksl", + "/sksl/errors/VectorInlinedIndexOutOfRange.sksl", "/sksl/errors/VectorSlice.sksl", "/sksl/errors/VertexEarlyReturn.vert", + "/sksl/errors/VoidConstructor.sksl", + "/sksl/errors/VoidInStruct.sksl", + "/sksl/errors/VoidVariable.sksl", "/sksl/errors/WhileTypeMismatch.sksl", ] @@ -253,6 +265,8 @@ sksl_spirv_tests = [ "/sksl/spirv/Ossfuzz35916.sksl", "/sksl/spirv/Ossfuzz37627.sksl", "/sksl/workarounds/RewriteMatrixVectorMultiply.sksl", + "/sksl/errors/LayoutInInterfaceBlock.sksl", + "/sksl/errors/LayoutInStruct.sksl", "/sksl/errors/Ossfuzz36850.sksl", "/sksl/errors/Ossfuzz37469.sksl", "/sksl/errors/UndefinedFunction.sksl", @@ -274,6 +288,7 @@ sksl_shared_tests = [ "/sksl/intrinsics/Ceil.sksl", "/sksl/intrinsics/ClampFloat.sksl", "/sksl/intrinsics/ClampInt.sksl", + "/sksl/intrinsics/ClampUInt.sksl", "/sksl/intrinsics/Cos.sksl", "/sksl/intrinsics/Cosh.sksl", "/sksl/intrinsics/Cross.sksl", @@ -405,6 +420,7 @@ sksl_shared_tests = [ "/sksl/shared/NormalizationVert.vert", "/sksl/shared/NumberCasts.sksl", "/sksl/shared/NumberConversions.sksl", + "/sksl/shared/Octal.sksl", "/sksl/shared/Offset.sksl", "/sksl/shared/OperatorsES2.sksl", "/sksl/shared/OperatorsES3.sksl", @@ -419,6 +435,7 @@ sksl_shared_tests = [ "/sksl/shared/Ossfuzz37466.sksl", "/sksl/shared/Ossfuzz37677.sksl", "/sksl/shared/Ossfuzz37900.sksl", + "/sksl/shared/Ossfuzz41000.sksl", "/sksl/shared/OutParams.sksl", "/sksl/shared/OutParamsNoInline.sksl", "/sksl/shared/OutParamsTricky.sksl", @@ -597,6 +614,7 @@ sksl_rte_tests = [ "/sksl/runtime/ArrayIndexing.rts", "/sksl/runtime/ArrayNarrowingConversions.rts", "/sksl/runtime/Blend.rtb", + "/sksl/runtime/Commutative.rts", "/sksl/runtime/ConstPreservation.rts", "/sksl/runtime/ConversionConstructors.rts", "/sksl/runtime/GLSLTypeNames.rts", @@ -612,6 +630,10 @@ sksl_rte_tests = [ "/sksl/runtime/LoopFloat.rts", "/sksl/runtime/PrecisionQualifiers.rts", "/sksl/runtime/QualifierOrder.rts", + "/sksl/runtime/RecursiveComparison_Structs.rts", + "/sksl/runtime/RecursiveComparison_Arrays.rts", + "/sksl/runtime/RecursiveComparison_Types.rts", + "/sksl/runtime/RecursiveComparison_Vectors.rts", "/sksl/runtime/SampleWithExplicitCoord.rts", "/sksl/runtime/Switch.rts", "/sksl/runtime/SwitchDefaultOnly.rts", diff --git a/third_party/skia/gn/tests.gni b/third_party/skia/gn/tests.gni index 0e64a56f0cbc..0532dd5b5ea4 100644 --- a/third_party/skia/gn/tests.gni +++ b/third_party/skia/gn/tests.gni @@ -72,6 +72,7 @@ tests_sources = [ "$_tests/F16StagesTest.cpp", "$_tests/FakeStreams.h", "$_tests/FillPathTest.cpp", + "$_tests/FindCubicConvex180ChopsTest.cpp", "$_tests/FitsInTest.cpp", "$_tests/FlattenDrawableTest.cpp", "$_tests/FlattenableFactoryToName.cpp", @@ -98,11 +99,11 @@ tests_sources = [ "$_tests/GrFinishedFlushTest.cpp", "$_tests/GrMemoryPoolTest.cpp", "$_tests/GrOpListFlushTest.cpp", - "$_tests/GrPathUtilsTest.cpp", "$_tests/GrPorterDuffTest.cpp", "$_tests/GrQuadBufferTest.cpp", "$_tests/GrQuadCropTest.cpp", "$_tests/GrRenderTaskClusterTest.cpp", + "$_tests/GrSlugTest.cpp", "$_tests/GrStyledShapeTest.cpp", "$_tests/GrSubmittedFlushTest.cpp", "$_tests/GrSurfaceTest.cpp", @@ -181,6 +182,7 @@ tests_sources = [ "$_tests/Point3Test.cpp", "$_tests/PointTest.cpp", "$_tests/PolyUtilsTest.cpp", + "$_tests/PreChopPathCurvesTest.cpp", "$_tests/PremulAlphaRoundTripTest.cpp", "$_tests/PromiseImageTest.cpp", "$_tests/ProxyConversionTest.cpp", @@ -258,6 +260,7 @@ tests_sources = [ "$_tests/SkTBlockListTest.cpp", "$_tests/SkTOptionalTest.cpp", "$_tests/SkUTFTest.cpp", + "$_tests/SkVMDebugTraceTest.cpp", "$_tests/SkVMTest.cpp", "$_tests/SkVxTest.cpp", "$_tests/Skbug12214.cpp", @@ -328,10 +331,10 @@ metal_tests_sources = [ ] graphite_tests_sources = [ + "$_tests/graphite/BackendTextureTest.cpp", "$_tests/graphite/CommandBufferTest.cpp", "$_tests/graphite/IntersectionTreeTest.cpp", "$_tests/graphite/MaskTest.cpp", - "$_tests/graphite/ProgramCacheTest.cpp", "$_tests/graphite/RectTest.cpp", "$_tests/graphite/ShapeTest.cpp", "$_tests/graphite/TransformTest.cpp", @@ -339,6 +342,8 @@ graphite_tests_sources = [ "$_tests/graphite/UniformTest.cpp", ] +graphite_metal_tests_sources = [ "$_tests/graphite/MtlBackendTextureTest.mm" ] + pathops_tests_sources = [ "$_tests/PathOpsAngleIdeas.cpp", "$_tests/PathOpsAngleTest.cpp", diff --git a/third_party/skia/gn/toolchain/BUILD.gn b/third_party/skia/gn/toolchain/BUILD.gn index 60c1a666137a..8029086eff1d 100644 --- a/third_party/skia/gn/toolchain/BUILD.gn +++ b/third_party/skia/gn/toolchain/BUILD.gn @@ -61,7 +61,7 @@ if (host_os == "win") { stamp = "touch" } -if (is_starboardized_toolchain) { +if (current_toolchain == default_toolchain) { pool("dsymutil_pool") { depth = dlsymutil_pool_depth } diff --git a/third_party/skia/go.mod b/third_party/skia/go.mod index 2dcccd8303bc..b8b2d4d09954 100644 --- a/third_party/skia/go.mod +++ b/third_party/skia/go.mod @@ -49,7 +49,7 @@ require ( github.com/yosuke-furukawa/json5 v0.1.1 // indirect go.chromium.org/gae v0.0.0-20190826183307-50a499513efa // indirect go.chromium.org/luci v0.0.0-20201121231857-b9ab316d7198 // indirect - go.skia.org/infra v0.0.0-20210910143316-141caab7391e + go.skia.org/infra v0.0.0-20211201214445-039210fafe39 go.starlark.net v0.0.0-20201118183435-e55f603d8c79 // indirect golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 golang.org/x/exp v0.0.0-20200228211341-fcea875c7e85 // indirect diff --git a/third_party/skia/go.sum b/third_party/skia/go.sum index 27f17ae74105..c9ac47a58f1f 100644 --- a/third_party/skia/go.sum +++ b/third_party/skia/go.sum @@ -2091,6 +2091,16 @@ go.skia.org/infra v0.0.0-20210907185953-86c4d2f6fc33 h1:VAeUs+hEzAhHZTwoubBD2jnU go.skia.org/infra v0.0.0-20210907185953-86c4d2f6fc33/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= go.skia.org/infra v0.0.0-20210910143316-141caab7391e h1:klXhFdngbjdDI+e9m+iLvFquoCT+VqXGzAO0VI4BUaw= go.skia.org/infra v0.0.0-20210910143316-141caab7391e/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= +go.skia.org/infra v0.0.0-20211110142552-553519b41e71 h1:MsyIiBuNicDVyMBAECY6QO6A/BpjTdRgImiWQ9iaQro= +go.skia.org/infra v0.0.0-20211110142552-553519b41e71/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= +go.skia.org/infra v0.0.0-20211118151522-74751ee0f13f h1:2QeDr9yTkQd/Mi9uyaXJ4FUnm7OADX6TflY++ne/8R4= +go.skia.org/infra v0.0.0-20211118151522-74751ee0f13f/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= +go.skia.org/infra v0.0.0-20211122205336-2a6261fa4406 h1:0RAsI1kFsIIVP6Xf6tsfxPKcjrlAb5Cc8NqyhGzg1Rs= +go.skia.org/infra v0.0.0-20211122205336-2a6261fa4406/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= +go.skia.org/infra v0.0.0-20211123203253-4b3906380051 h1:/6cXTEFbze/fDY4ck4zdDu4mg85a4PyxkH5Scvo4Uhk= +go.skia.org/infra v0.0.0-20211123203253-4b3906380051/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= +go.skia.org/infra v0.0.0-20211201214445-039210fafe39 h1:u003Vjd7xBFaKlEYohyQRGgPi5pzvMyyi4+a6M7PYDk= +go.skia.org/infra v0.0.0-20211201214445-039210fafe39/go.mod h1:BX7j5CR8GabRog5/v70hZ7QERcahOEUvzkDN/oBJSEM= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.starlark.net v0.0.0-20201118183435-e55f603d8c79 h1:JPjLPz44y2N9mkzh2N344kTk1Y4/V4yJAjTrXGmzv8I= go.starlark.net v0.0.0-20201118183435-e55f603d8c79/go.mod h1:5YFcFnRptTN+41758c2bMPiqpGg4zBfYji1IQz8wNFk= diff --git a/third_party/skia/go_repositories.bzl b/third_party/skia/go_repositories.bzl new file mode 100644 index 000000000000..d1e31b2cef27 --- /dev/null +++ b/third_party/skia/go_repositories.bzl @@ -0,0 +1,3525 @@ +load("@bazel_gazelle//:deps.bzl", "go_repository") + +def go_repositories(): + go_repository( + name = "co_honnef_go_tools", + importpath = "honnef.co/go/tools", + sum = "h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc=", + version = "v0.0.1-2020.1.6", + ) + go_repository( + name = "com_github_99designs_goodies", + importpath = "github.com/99designs/goodies", + sum = "h1:fDVqZtKvHbahsmAyx44RVCFK5uuqXHzZfeegx37QJwk=", + version = "v0.0.0-20140916053233-ec7f410f2ff2", + ) + go_repository( + name = "com_github_a8m_envsubst", + importpath = "github.com/a8m/envsubst", + sum = "h1:yvzAhJD2QKdo35Ut03wIfXQmg+ta3wC/1bskfZynz+Q=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_aclements_go_gg", + importpath = "github.com/aclements/go-gg", + sum = "h1:KJgh99JlYRhfgHtb7XyhAZSJMdfkjVmo3PP7XO1/HO8=", + version = "v0.0.0-20170323211221-abd1f791f5ee", + ) + go_repository( + name = "com_github_aclements_go_moremath", + importpath = "github.com/aclements/go-moremath", + sum = "h1:a7+Y8VlXRC2VX5ue6tpCutr4PsrkRkWWVZv4zqfaHuc=", + version = "v0.0.0-20190830160640-d16893ddf098", + ) + go_repository( + name = "com_github_afex_hystrix_go", + importpath = "github.com/afex/hystrix-go", + sum = "h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw=", + version = "v0.0.0-20180502004556-fa1af6a1f4f5", + ) + go_repository( + name = "com_github_agnivade_levenshtein", + importpath = "github.com/agnivade/levenshtein", + sum = "h1:3oJU7J3FGFmyhn8KHjmVaZCN5hxTr7GxgRue+sxIXdQ=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_ajstarks_deck", + importpath = "github.com/ajstarks/deck", + sum = "h1:30XVZzSxUv+pE25mnlAL5nW/KsUDBmldePggLIAEJgk=", + version = "v0.0.0-20191009173945-82d717002242", + ) + go_repository( + name = "com_github_ajstarks_svgo", + importpath = "github.com/ajstarks/svgo", + sum = "h1:kZegOsPGxfV9mM8WzfllNZOx3MvM5zItmhQlvITKVvA=", + version = "v0.0.0-20190826172357-de52242f3d65", + ) + go_repository( + name = "com_github_akavel_rsrc", + importpath = "github.com/akavel/rsrc", + sum = "h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw=", + version = "v0.8.0", + ) + go_repository( + name = "com_github_alcortesm_tgz", + importpath = "github.com/alcortesm/tgz", + sum = "h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs=", + version = "v0.0.0-20161220082320-9c5fe88206d7", + ) + go_repository( + name = "com_github_alecthomas_jsonschema", + importpath = "github.com/alecthomas/jsonschema", + sum = "h1:mT8qSzuyEAkxbv4GBln7yeuQZpBnfikr3PTuiPs6Z3k=", + version = "v0.0.0-20210526225647-edb03dcab7bc", + ) + go_repository( + name = "com_github_alecthomas_template", + importpath = "github.com/alecthomas/template", + sum = "h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=", + version = "v0.0.0-20190718012654-fb15b899a751", + ) + go_repository( + name = "com_github_alecthomas_units", + importpath = "github.com/alecthomas/units", + sum = "h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=", + version = "v0.0.0-20190924025748-f65c72e2690d", + ) + go_repository( + name = "com_github_andreyvit_diff", + importpath = "github.com/andreyvit/diff", + sum = "h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ=", + version = "v0.0.0-20170406064948-c7f18ee00883", + ) + go_repository( + name = "com_github_andybalholm_cascadia", + importpath = "github.com/andybalholm/cascadia", + sum = "h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5h18aE=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_andygrunwald_go_gerrit", + importpath = "github.com/andygrunwald/go-gerrit", + sum = "h1:MPEPS9/Wj22GJws8T+Ghs0FzncChap413xWSIihlwvg=", + version = "v0.0.0-20200503132804-ed2419acda39", + ) + go_repository( + name = "com_github_anmitsu_go_shlex", + importpath = "github.com/anmitsu/go-shlex", + sum = "h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=", + version = "v0.0.0-20161002113705-648efa622239", + ) + go_repository( + name = "com_github_apache_arrow_go_arrow", + importpath = "github.com/apache/arrow/go/arrow", + sum = "h1:5ultmol0yeX75oh1hY78uAFn3dupBQ/QUNxERCkiaUQ=", + version = "v0.0.0-20200601151325-b2287a20f230", + ) + go_repository( + name = "com_github_apache_thrift", + importpath = "github.com/apache/thrift", + sum = "h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI=", + version = "v0.13.0", + ) + go_repository( + name = "com_github_armon_circbuf", + importpath = "github.com/armon/circbuf", + sum = "h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=", + version = "v0.0.0-20150827004946-bbbad097214e", + ) + go_repository( + name = "com_github_armon_consul_api", + importpath = "github.com/armon/consul-api", + sum = "h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=", + version = "v0.0.0-20180202201655-eb2c6b5be1b6", + ) + go_repository( + name = "com_github_armon_go_metrics", + importpath = "github.com/armon/go-metrics", + sum = "h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=", + version = "v0.0.0-20180917152333-f0300d1749da", + ) + go_repository( + name = "com_github_armon_go_radix", + importpath = "github.com/armon/go-radix", + sum = "h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=", + version = "v0.0.0-20180808171621-7fddfc383310", + ) + go_repository( + name = "com_github_armon_go_socks5", + importpath = "github.com/armon/go-socks5", + sum = "h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=", + version = "v0.0.0-20160902184237-e75332964ef5", + ) + go_repository( + name = "com_github_aryann_difflib", + importpath = "github.com/aryann/difflib", + sum = "h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw=", + version = "v0.0.0-20170710044230-e206f873d14a", + ) + go_repository( + name = "com_github_asaskevich_govalidator", + importpath = "github.com/asaskevich/govalidator", + sum = "h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA=", + version = "v0.0.0-20190424111038-f61b66f89f4a", + ) + go_repository( + name = "com_github_aws_aws_lambda_go", + importpath = "github.com/aws/aws-lambda-go", + sum = "h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY=", + version = "v1.13.3", + ) + go_repository( + name = "com_github_aws_aws_sdk_go", + importpath = "github.com/aws/aws-sdk-go", + sum = "h1:Gka1bopihF2e9XFhuVZPrgafmOFpCsRtAPMYLp/0AfA=", + version = "v1.35.18", + ) + go_repository( + name = "com_github_aws_aws_sdk_go_v2", + importpath = "github.com/aws/aws-sdk-go-v2", + sum = "h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg=", + version = "v0.18.0", + ) + go_repository( + name = "com_github_azure_go_ansiterm", + importpath = "github.com/Azure/go-ansiterm", + sum = "h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=", + version = "v0.0.0-20170929234023-d6e3b3328b78", + ) + go_repository( + name = "com_github_azure_go_autorest", + importpath = "github.com/Azure/go-autorest", + sum = "h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=", + version = "v14.2.0+incompatible", + ) + go_repository( + name = "com_github_azure_go_autorest_autorest", + importpath = "github.com/Azure/go-autorest/autorest", + sum = "h1:gI8ytXbxMfI+IVbI9mP2JGCTXIuhHLgRlvQ9X4PsnHE=", + version = "v0.11.12", + ) + go_repository( + name = "com_github_azure_go_autorest_autorest_adal", + importpath = "github.com/Azure/go-autorest/autorest/adal", + sum = "h1:Y3bBUV4rTuxenJJs41HU3qmqsb+auo+a3Lz+PlJPpL0=", + version = "v0.9.5", + ) + go_repository( + name = "com_github_azure_go_autorest_autorest_date", + importpath = "github.com/Azure/go-autorest/autorest/date", + sum = "h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_azure_go_autorest_autorest_mocks", + importpath = "github.com/Azure/go-autorest/autorest/mocks", + sum = "h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk=", + version = "v0.4.1", + ) + go_repository( + name = "com_github_azure_go_autorest_logger", + importpath = "github.com/Azure/go-autorest/logger", + sum = "h1:e4RVHVZKC5p6UANLJHkM4OfR1UKZPj8Wt8Pcx+3oqrE=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_azure_go_autorest_tracing", + importpath = "github.com/Azure/go-autorest/tracing", + sum = "h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=", + version = "v0.6.0", + ) + go_repository( + name = "com_github_bazelbuild_bazel_gazelle", + importpath = "github.com/bazelbuild/bazel-gazelle", + sum = "h1:Ks6YN+WkOv2lYWlvf7ksxUpLvrDbBHPBXXUrBFQ3BZM=", + version = "v0.23.0", + ) + go_repository( + name = "com_github_bazelbuild_buildtools", + importpath = "github.com/bazelbuild/buildtools", + sum = "h1:a+J2VBrlAmgdb1eXDTFxdoPA/wA/L2+33DcdfzhnhXM=", + version = "v0.0.0-20201102150426-f0f162f0456b", + ) + go_repository( + name = "com_github_bazelbuild_remote_apis", + importpath = "github.com/bazelbuild/remote-apis", + sum = "h1:/EMHYfINZDLrrr4f72+MxCYvmJ9EYcL8PYbQFHrnm38=", + version = "v0.0.0-20201209220655-9e72daff42c9", + ) + go_repository( + name = "com_github_bazelbuild_remote_apis_sdks", + importpath = "github.com/bazelbuild/remote-apis-sdks", + sum = "h1:T8tt5LPzm/nE/+DdopIs+6qOOAUNme01K7+d5y5lkxc=", + version = "v0.0.0-20201120151053-8f976b9bf4fc", + ) + go_repository( + name = "com_github_bazelbuild_rules_go", + importpath = "github.com/bazelbuild/rules_go", + sum = "h1:mb2SfWfQcOkIGTEf8QdRna9nF6nnjlyv/qeXvPVkleE=", + version = "v0.25.0", + ) + go_repository( + name = "com_github_beorn7_perks", + importpath = "github.com/beorn7/perks", + sum = "h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_bgentry_speakeasy", + importpath = "github.com/bgentry/speakeasy", + sum = "h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_bitly_go_hostpool", + importpath = "github.com/bitly/go-hostpool", + sum = "h1:mXoPYz/Ul5HYEDvkta6I8/rnYM5gSdSV2tJ6XbZuEtY=", + version = "v0.0.0-20171023180738-a3a6125de932", + ) + go_repository( + name = "com_github_bkaradzic_go_lz4", + importpath = "github.com/bkaradzic/go-lz4", + sum = "h1:RXc4wYsyz985CkXXeX04y4VnZFGG8Rd43pRaHsOXAKk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_bketelsen_crypt", + importpath = "github.com/bketelsen/crypt", + sum = "h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc=", + version = "v0.0.3-0.20200106085610-5cbc8cc4026c", + ) + go_repository( + name = "com_github_blang_semver", + importpath = "github.com/blang/semver", + sum = "h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=", + version = "v3.5.1+incompatible", + ) + go_repository( + name = "com_github_bmatcuk_doublestar", + importpath = "github.com/bmatcuk/doublestar", + sum = "h1:oC24CykoSAB8zd7XgruHo33E0cHJf/WhQA/7BeXj+x0=", + version = "v1.2.2", + ) + go_repository( + name = "com_github_bmizerany_assert", + importpath = "github.com/bmizerany/assert", + sum = "h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=", + version = "v0.0.0-20160611221934-b7ed37b82869", + ) + go_repository( + name = "com_github_boltdb_bolt", + importpath = "github.com/boltdb/bolt", + sum = "h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=", + version = "v1.3.1", + ) + go_repository( + name = "com_github_boombuler_barcode", + importpath = "github.com/boombuler/barcode", + sum = "h1:s1TvRnXwL2xJRaccrdcBQMZxq6X7DvsMogtmJeHDdrc=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_bradfitz_go_smtpd", + importpath = "github.com/bradfitz/go-smtpd", + sum = "h1:ckJgFhFWywOx+YLEMIJsTb+NV6NexWICk5+AMSuz3ss=", + version = "v0.0.0-20170404230938-deb6d6237625", + ) + go_repository( + name = "com_github_bradfitz_gomemcache", + importpath = "github.com/bradfitz/gomemcache", + sum = "h1:L/QXpzIa3pOvUGt1D1lA5KjYhPBAN/3iWdP7xeFS9F0=", + version = "v0.0.0-20190913173617-a41fca850d0b", + ) + go_repository( + name = "com_github_burntsushi_toml", + importpath = "github.com/BurntSushi/toml", + sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=", + version = "v0.3.1", + ) + go_repository( + name = "com_github_burntsushi_xgb", + importpath = "github.com/BurntSushi/xgb", + sum = "h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=", + version = "v0.0.0-20160522181843-27f122750802", + ) + go_repository( + name = "com_github_casbin_casbin_v2", + importpath = "github.com/casbin/casbin/v2", + sum = "h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g=", + version = "v2.1.2", + ) + go_repository( + name = "com_github_cenkalti_backoff", + importpath = "github.com/cenkalti/backoff", + sum = "h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=", + version = "v2.2.1+incompatible", + ) + go_repository( + name = "com_github_cenkalti_backoff_v4", + importpath = "github.com/cenkalti/backoff/v4", + sum = "h1:JIufpQLbh4DkbQoii76ItQIUFzevQSqOLZca4eamEDs=", + version = "v4.0.2", + ) + go_repository( + name = "com_github_census_instrumentation_opencensus_proto", + importpath = "github.com/census-instrumentation/opencensus-proto", + sum = "h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_cespare_xxhash", + importpath = "github.com/cespare/xxhash", + sum = "h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_cespare_xxhash_v2", + importpath = "github.com/cespare/xxhash/v2", + sum = "h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=", + version = "v2.1.1", + ) + go_repository( + name = "com_github_chai2010_gettext_go", + importpath = "github.com/chai2010/gettext-go", + sum = "h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8=", + version = "v0.0.0-20160711120539-c6fed771bfd5", + ) + go_repository( + name = "com_github_chzyer_logex", + importpath = "github.com/chzyer/logex", + sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=", + version = "v1.1.10", + ) + go_repository( + name = "com_github_chzyer_readline", + importpath = "github.com/chzyer/readline", + sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=", + version = "v0.0.0-20180603132655-2972be24d48e", + ) + go_repository( + name = "com_github_chzyer_test", + importpath = "github.com/chzyer/test", + sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=", + version = "v0.0.0-20180213035817-a1ea475d72b1", + ) + go_repository( + name = "com_github_clbanning_x2j", + importpath = "github.com/clbanning/x2j", + sum = "h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo=", + version = "v0.0.0-20191024224557-825249438eec", + ) + go_repository( + name = "com_github_clickhouse_clickhouse_go", + importpath = "github.com/ClickHouse/clickhouse-go", + sum = "h1:HvD2NhKPLSeO3Ots6YV0ePgs4l3wO0bLqa9Uk1yeMOs=", + version = "v1.3.12", + ) + go_repository( + name = "com_github_client9_misspell", + importpath = "github.com/client9/misspell", + sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=", + version = "v0.3.4", + ) + go_repository( + name = "com_github_cloudflare_golz4", + importpath = "github.com/cloudflare/golz4", + sum = "h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg=", + version = "v0.0.0-20150217214814-ef862a3cdc58", + ) + go_repository( + name = "com_github_cncf_udpa_go", + importpath = "github.com/cncf/udpa/go", + sum = "h1:WBZRG4aNOuI15bLRrCgN8fCq8E5Xuty6jGbmSNEvSsU=", + version = "v0.0.0-20191209042840-269d4d468f6f", + ) + go_repository( + name = "com_github_cockroachdb_apd", + importpath = "github.com/cockroachdb/apd", + sum = "h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_cockroachdb_cockroach_go", + importpath = "github.com/cockroachdb/cockroach-go", + sum = "h1:eApuUG8W2EtBVwxqLlY2wgoqDYOg3WvIHGvW4fUbbow=", + version = "v0.0.0-20190925194419-606b3d062051", + ) + go_repository( + name = "com_github_cockroachdb_cockroach_go_v2", + importpath = "github.com/cockroachdb/cockroach-go/v2", + sum = "h1:zicZlBhWZu6wfK7Ezg4Owdc3HamLpRdBllPTT9tb+2k=", + version = "v2.1.0", + ) + go_repository( + name = "com_github_cockroachdb_datadriven", + importpath = "github.com/cockroachdb/datadriven", + sum = "h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=", + version = "v0.0.0-20190809214429-80d97fb3cbaa", + ) + go_repository( + name = "com_github_codahale_hdrhistogram", + importpath = "github.com/codahale/hdrhistogram", + sum = "h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=", + version = "v0.0.0-20161010025455-3a0bb77429bd", + ) + go_repository( + name = "com_github_codegangsta_negroni", + importpath = "github.com/codegangsta/negroni", + sum = "h1:+aYywywx4bnKXWvoWtRfJ91vC59NbEhEY03sZjQhbVY=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_containerd_containerd", + importpath = "github.com/containerd/containerd", + sum = "h1:pASeJT3R3YyVn+94qEPk0SnU1OQ20Jd/T+SPKy9xehY=", + version = "v1.4.1", + ) + go_repository( + name = "com_github_coreos_bbolt", + importpath = "github.com/coreos/bbolt", + sum = "h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_coreos_etcd", + importpath = "github.com/coreos/etcd", + sum = "h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ=", + version = "v3.3.13+incompatible", + ) + go_repository( + name = "com_github_coreos_go_etcd", + importpath = "github.com/coreos/go-etcd", + sum = "h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo=", + version = "v2.0.0+incompatible", + ) + go_repository( + name = "com_github_coreos_go_semver", + importpath = "github.com/coreos/go-semver", + sum = "h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_coreos_go_systemd", + importpath = "github.com/coreos/go-systemd", + sum = "h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c=", + version = "v0.0.0-20190719114852-fd7a80b32e1f", + ) + go_repository( + name = "com_github_coreos_go_systemd_v22", + importpath = "github.com/coreos/go-systemd/v22", + sum = "h1:kq/SbG2BCKLkDKkjQf5OWwKWUKj1lgs3lFI4PxnR5lg=", + version = "v22.1.0", + ) + go_repository( + name = "com_github_coreos_pkg", + importpath = "github.com/coreos/pkg", + sum = "h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=", + version = "v0.0.0-20180928190104-399ea9e2e55f", + ) + go_repository( + name = "com_github_cpuguy83_go_md2man", + importpath = "github.com/cpuguy83/go-md2man", + sum = "h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=", + version = "v1.0.10", + ) + go_repository( + name = "com_github_cpuguy83_go_md2man_v2", + importpath = "github.com/cpuguy83/go-md2man/v2", + sum = "h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=", + version = "v2.0.0", + ) + go_repository( + name = "com_github_creack_pty", + importpath = "github.com/creack/pty", + sum = "h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=", + version = "v1.1.11", + ) + go_repository( + name = "com_github_cznic_cc", + importpath = "github.com/cznic/cc", + sum = "h1:AePLLLsGE1yOEDAmaJlQ9zd/9qiaEVskYukZ1f2srAA=", + version = "v0.0.0-20181122101902-d673e9b70d4d", + ) + go_repository( + name = "com_github_cznic_fileutil", + importpath = "github.com/cznic/fileutil", + sum = "h1:94XgeeTZ+3Xi9zsdgBjP1Byx/wywCImjF8FzQ7OaKdU=", + version = "v0.0.0-20181122101858-4d67cfea8c87", + ) + go_repository( + name = "com_github_cznic_golex", + importpath = "github.com/cznic/golex", + sum = "h1:G8zTsaqyVfIHpgMFcGgdbhHSFhlNc77rAKkhVbQ9kQg=", + version = "v0.0.0-20181122101858-9c343928389c", + ) + go_repository( + name = "com_github_cznic_internal", + importpath = "github.com/cznic/internal", + sum = "h1:58AcyflCe84EONph4gkyo3eDOEQcW5HIPfQBrD76W68=", + version = "v0.0.0-20181122101858-3279554c546e", + ) + go_repository( + name = "com_github_cznic_ir", + importpath = "github.com/cznic/ir", + sum = "h1:GelTfvbS1tZtnyCTx3aMIHbRw5euyrfHd6H3rLqLlHU=", + version = "v0.0.0-20181122101859-da7ba2ecce8b", + ) + go_repository( + name = "com_github_cznic_lex", + importpath = "github.com/cznic/lex", + sum = "h1:KJtZdP0G3jUnpgEWZdJ7326WvTbREwcwlDSOpkpNZGY=", + version = "v0.0.0-20181122101858-ce0fb5e9bb1b", + ) + go_repository( + name = "com_github_cznic_lexer", + importpath = "github.com/cznic/lexer", + sum = "h1:K5kIaw68kxYw40mp8YKuwKrb63R0BPCR1iEGvBR6Mfs=", + version = "v0.0.0-20181122101858-e884d4bd112e", + ) + go_repository( + name = "com_github_cznic_mathutil", + importpath = "github.com/cznic/mathutil", + sum = "h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso=", + version = "v0.0.0-20181122101859-297441e03548", + ) + go_repository( + name = "com_github_cznic_strutil", + importpath = "github.com/cznic/strutil", + sum = "h1:MZRmHqDBd0vxNwenEbKSQqRVT24d3C05ft8kduSwlqM=", + version = "v0.0.0-20181122101858-275e90344537", + ) + go_repository( + name = "com_github_cznic_xc", + importpath = "github.com/cznic/xc", + sum = "h1:U9mUTtTukbCdFuphv3QiJBjtImXsUTHcX5toZZi4OzY=", + version = "v0.0.0-20181122101856-45b06973881e", + ) + go_repository( + name = "com_github_daaku_go_zipexe", + importpath = "github.com/daaku/go.zipexe", + sum = "h1:wV4zMsDOI2SZ2m7Tdz1Ps96Zrx+TzaK15VbUaGozw0M=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_danjacques_gofslock", + importpath = "github.com/danjacques/gofslock", + sum = "h1:IKVDBWlOZykX5WFI5DyYjX8oL+6+YuovdUvOf+1WHNQ=", + version = "v0.0.0-20200623023034-5d0bd0fa6ef0", + ) + go_repository( + name = "com_github_davecgh_go_spew", + importpath = "github.com/davecgh/go-spew", + sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_daviddengcn_go_colortext", + importpath = "github.com/daviddengcn/go-colortext", + sum = "h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c=", + version = "v0.0.0-20160507010035-511bcaf42ccd", + ) + go_repository( + name = "com_github_denisenkom_go_mssqldb", + importpath = "github.com/denisenkom/go-mssqldb", + sum = "h1:NfhRXXFDPxcF5Cwo06DzeIaE7uuJtAUhsDwH3LNsjos=", + version = "v0.0.0-20200620013148-b91950f658ec", + ) + go_repository( + name = "com_github_dgraph_io_ristretto", + importpath = "github.com/dgraph-io/ristretto", + sum = "h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI=", + version = "v0.0.3", + ) + go_repository( + name = "com_github_dgrijalva_jwt_go", + importpath = "github.com/dgrijalva/jwt-go", + sum = "h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=", + version = "v3.2.0+incompatible", + ) + go_repository( + name = "com_github_dgryski_go_farm", + importpath = "github.com/dgryski/go-farm", + sum = "h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=", + version = "v0.0.0-20190423205320-6a90982ecee2", + ) + go_repository( + name = "com_github_dgryski_go_sip13", + importpath = "github.com/dgryski/go-sip13", + sum = "h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=", + version = "v0.0.0-20181026042036-e10d5fee7954", + ) + go_repository( + name = "com_github_dhui_dktest", + importpath = "github.com/dhui/dktest", + sum = "h1:nZSDcnkpbotzT/nEHNsO+JCKY8i1Qoki1AYOpeLRb6M=", + version = "v0.3.2", + ) + go_repository( + name = "com_github_disintegration_gift", + importpath = "github.com/disintegration/gift", + sum = "h1:Y005a1X4Z7Uc+0gLpSAsKhWi4qLtsdEcMIbbdvdZ6pc=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_docker_distribution", + importpath = "github.com/docker/distribution", + sum = "h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=", + version = "v2.7.1+incompatible", + ) + go_repository( + name = "com_github_docker_docker", + importpath = "github.com/docker/docker", + sum = "h1:tmV+YbYOUAYDmAiamzhRKqQXaAUyUY2xVt27Rv7rCzA=", + version = "v1.4.2-0.20200213202729-31a86c4ab209", + ) + go_repository( + name = "com_github_docker_go_connections", + importpath = "github.com/docker/go-connections", + sum = "h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_docker_go_units", + importpath = "github.com/docker/go-units", + sum = "h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_docker_spdystream", + importpath = "github.com/docker/spdystream", + sum = "h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg=", + version = "v0.0.0-20160310174837-449fdfce4d96", + ) + go_repository( + name = "com_github_docopt_docopt_go", + importpath = "github.com/docopt/docopt-go", + sum = "h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=", + version = "v0.0.0-20180111231733-ee0de3bc6815", + ) + go_repository( + name = "com_github_dustin_go_humanize", + importpath = "github.com/dustin/go-humanize", + sum = "h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_eapache_go_resiliency", + importpath = "github.com/eapache/go-resiliency", + sum = "h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_eapache_go_xerial_snappy", + importpath = "github.com/eapache/go-xerial-snappy", + sum = "h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw=", + version = "v0.0.0-20180814174437-776d5712da21", + ) + go_repository( + name = "com_github_eapache_queue", + importpath = "github.com/eapache/queue", + sum = "h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_edsrzf_mmap_go", + importpath = "github.com/edsrzf/mmap-go", + sum = "h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_elazarl_goproxy", + importpath = "github.com/elazarl/goproxy", + sum = "h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc=", + version = "v0.0.0-20180725130230-947c36da3153", + ) + go_repository( + name = "com_github_emicklei_go_restful", + importpath = "github.com/emicklei/go-restful", + sum = "h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk=", + version = "v2.9.5+incompatible", + ) + go_repository( + name = "com_github_emirpasic_gods", + importpath = "github.com/emirpasic/gods", + sum = "h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=", + version = "v1.12.0", + ) + go_repository( + name = "com_github_envoyproxy_go_control_plane", + importpath = "github.com/envoyproxy/go-control-plane", + sum = "h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E=", + version = "v0.9.4", + ) + go_repository( + name = "com_github_envoyproxy_protoc_gen_validate", + importpath = "github.com/envoyproxy/protoc-gen-validate", + sum = "h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_evanphx_json_patch", + importpath = "github.com/evanphx/json-patch", + sum = "h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=", + version = "v4.9.0+incompatible", + ) + go_repository( + name = "com_github_exponent_io_jsonpath", + importpath = "github.com/exponent-io/jsonpath", + sum = "h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=", + version = "v0.0.0-20151013193312-d6023ce2651d", + ) + go_repository( + name = "com_github_fatih_camelcase", + importpath = "github.com/fatih/camelcase", + sum = "h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_fatih_color", + importpath = "github.com/fatih/color", + sum = "h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=", + version = "v1.7.0", + ) + go_repository( + name = "com_github_fiorix_go_web", + importpath = "github.com/fiorix/go-web", + sum = "h1:P/Czr+qFBdKELw4nys0x2e5nkT9niVq/2FS63ArJzm4=", + version = "v1.0.1-0.20150221144011-5b593f1e8966", + ) + go_repository( + name = "com_github_flynn_go_shlex", + importpath = "github.com/flynn/go-shlex", + sum = "h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=", + version = "v0.0.0-20150515145356-3f9db97f8568", + ) + go_repository( + name = "com_github_flynn_json5", + importpath = "github.com/flynn/json5", + sum = "h1:xJMmr4GMYIbALX5edyoDIOQpc2bOQTeJiWMeCl9lX/8=", + version = "v0.0.0-20160717195620-7620272ed633", + ) + go_repository( + name = "com_github_fogleman_gg", + importpath = "github.com/fogleman/gg", + sum = "h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_form3tech_oss_jwt_go", + importpath = "github.com/form3tech-oss/jwt-go", + sum = "h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk=", + version = "v3.2.2+incompatible", + ) + go_repository( + name = "com_github_fortytw2_leaktest", + importpath = "github.com/fortytw2/leaktest", + sum = "h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_franela_goblin", + importpath = "github.com/franela/goblin", + sum = "h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw=", + version = "v0.0.0-20200105215937-c9ffbefa60db", + ) + go_repository( + name = "com_github_franela_goreq", + importpath = "github.com/franela/goreq", + sum = "h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54=", + version = "v0.0.0-20171204163338-bcd34c9993f8", + ) + go_repository( + name = "com_github_fsnotify_fsnotify", + importpath = "github.com/fsnotify/fsnotify", + sum = "h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=", + version = "v1.4.9", + ) + go_repository( + name = "com_github_fsouza_fake_gcs_server", + importpath = "github.com/fsouza/fake-gcs-server", + sum = "h1:OeH75kBZcZa3ZE+zz/mFdJ2btt9FgqfjI7gIh9+5fvk=", + version = "v1.17.0", + ) + go_repository( + name = "com_github_fvbommel_sortorder", + importpath = "github.com/fvbommel/sortorder", + sum = "h1:dSnXLt4mJYH25uDDGa3biZNQsozaUWDSWeKJ0qqFfzE=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_garyburd_redigo", + importpath = "github.com/garyburd/redigo", + sum = "h1:0VruCpn7yAIIu7pWVClQC8wxCJEcG3nyzpMSHKi1PQc=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_geertjohan_go_incremental", + importpath = "github.com/GeertJohan/go.incremental", + sum = "h1:7AH+pY1XUgQE4Y1HcXYaMqAI0m9yrFqo/jt0CW30vsg=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_geertjohan_go_rice", + importpath = "github.com/GeertJohan/go.rice", + sum = "h1:KkI6O9uMaQU3VEKaj01ulavtF7o1fWT7+pk/4voiMLQ=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_ghodss_yaml", + importpath = "github.com/ghodss/yaml", + sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_gliderlabs_ssh", + importpath = "github.com/gliderlabs/ssh", + sum = "h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0=", + version = "v0.2.2", + ) + go_repository( + name = "com_github_globalsign_mgo", + importpath = "github.com/globalsign/mgo", + sum = "h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=", + version = "v0.0.0-20181015135952-eeefdecb41b8", + ) + go_repository( + name = "com_github_go_errors_errors", + importpath = "github.com/go-errors/errors", + sum = "h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_go_gl_glfw", + importpath = "github.com/go-gl/glfw", + sum = "h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=", + version = "v0.0.0-20190409004039-e6da0acd62b1", + ) + go_repository( + name = "com_github_go_gl_glfw_v3_3_glfw", + importpath = "github.com/go-gl/glfw/v3.3/glfw", + sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=", + version = "v0.0.0-20200222043503-6f7a984d4dc4", + ) + go_repository( + name = "com_github_go_kit_kit", + importpath = "github.com/go-kit/kit", + sum = "h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo=", + version = "v0.10.0", + ) + go_repository( + name = "com_github_go_logfmt_logfmt", + importpath = "github.com/go-logfmt/logfmt", + sum = "h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4=", + version = "v0.5.0", + ) + go_repository( + name = "com_github_go_logr_logr", + importpath = "github.com/go-logr/logr", + sum = "h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_go_openapi_analysis", + importpath = "github.com/go-openapi/analysis", + sum = "h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI=", + version = "v0.19.5", + ) + go_repository( + name = "com_github_go_openapi_errors", + importpath = "github.com/go-openapi/errors", + sum = "h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY=", + version = "v0.19.2", + ) + go_repository( + name = "com_github_go_openapi_jsonpointer", + importpath = "github.com/go-openapi/jsonpointer", + sum = "h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w=", + version = "v0.19.3", + ) + go_repository( + name = "com_github_go_openapi_jsonreference", + importpath = "github.com/go-openapi/jsonreference", + sum = "h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o=", + version = "v0.19.3", + ) + go_repository( + name = "com_github_go_openapi_loads", + importpath = "github.com/go-openapi/loads", + sum = "h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY=", + version = "v0.19.4", + ) + go_repository( + name = "com_github_go_openapi_runtime", + importpath = "github.com/go-openapi/runtime", + sum = "h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI=", + version = "v0.19.4", + ) + go_repository( + name = "com_github_go_openapi_spec", + importpath = "github.com/go-openapi/spec", + sum = "h1:Xm0Ao53uqnk9QE/LlYV5DEU09UAgpliA85QoT9LzqPw=", + version = "v0.19.5", + ) + go_repository( + name = "com_github_go_openapi_strfmt", + importpath = "github.com/go-openapi/strfmt", + sum = "h1:0utjKrw+BAh8s57XE9Xz8DUBsVvPmRUB6styvl9wWIM=", + version = "v0.19.5", + ) + go_repository( + name = "com_github_go_openapi_swag", + importpath = "github.com/go-openapi/swag", + sum = "h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY=", + version = "v0.19.5", + ) + go_repository( + name = "com_github_go_openapi_validate", + importpath = "github.com/go-openapi/validate", + sum = "h1:YFzsdWIDfVuLvIOF+ZmKjVg1MbPJ1QgY9PihMwei1ys=", + version = "v0.19.8", + ) + go_repository( + name = "com_github_go_python_gpython", + importpath = "github.com/go-python/gpython", + sum = "h1:QNFZ0h540Lajx7Pi/os06XzzdYUQG+2sV7IvPo/Mvmg=", + version = "v0.0.3", + ) + go_repository( + name = "com_github_go_sql_driver_mysql", + importpath = "github.com/go-sql-driver/mysql", + sum = "h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_go_stack_stack", + importpath = "github.com/go-stack/stack", + sum = "h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_gobuffalo_here", + importpath = "github.com/gobuffalo/here", + sum = "h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI=", + version = "v0.6.0", + ) + go_repository( + name = "com_github_gobwas_glob", + importpath = "github.com/gobwas/glob", + sum = "h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=", + version = "v0.2.3", + ) + go_repository( + name = "com_github_gocql_gocql", + importpath = "github.com/gocql/gocql", + sum = "h1:vF83LI8tAakwEwvWZtrIEx7pOySacl2TOxx6eXk4ePo=", + version = "v0.0.0-20190301043612-f6df8288f9b4", + ) + go_repository( + name = "com_github_godbus_dbus", + importpath = "github.com/godbus/dbus", + sum = "h1:WqqLRTsQic3apZUK9qC5sGNfXthmPXzUZ7nQPrNITa4=", + version = "v4.1.0+incompatible", + ) + go_repository( + name = "com_github_godbus_dbus_v5", + importpath = "github.com/godbus/dbus/v5", + sum = "h1:ZqHaoEF7TBzh4jzPmqVhE/5A1z9of6orkAe5uHoAeME=", + version = "v5.0.3", + ) + go_repository( + name = "com_github_gofrs_uuid", + importpath = "github.com/gofrs/uuid", + sum = "h1:8K4tyRfvU1CYPgJsveYFQMhpFd/wXNM7iK6rR7UHz84=", + version = "v3.3.0+incompatible", + ) + go_repository( + name = "com_github_gogo_googleapis", + importpath = "github.com/gogo/googleapis", + sum = "h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_gogo_protobuf", + importpath = "github.com/gogo/protobuf", + sum = "h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_golang_freetype", + importpath = "github.com/golang/freetype", + sum = "h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=", + version = "v0.0.0-20170609003504-e2365dfdc4a0", + ) + go_repository( + name = "com_github_golang_glog", + importpath = "github.com/golang/glog", + sum = "h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=", + version = "v0.0.0-20160126235308-23def4e6c14b", + ) + go_repository( + name = "com_github_golang_groupcache", + importpath = "github.com/golang/groupcache", + sum = "h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=", + version = "v0.0.0-20200121045136-8c9f03a8e57e", + ) + go_repository( + name = "com_github_golang_migrate_migrate_v4", + importpath = "github.com/golang-migrate/migrate/v4", + sum = "h1:5S7HMjiq9u50X3+WXpzXPbUj1qUFuZRm8NCsX989Tn4=", + version = "v4.13.0", + ) + go_repository( + name = "com_github_golang_mock", + importpath = "github.com/golang/mock", + sum = "h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=", + version = "v1.4.4", + ) + go_repository( + name = "com_github_golang_protobuf", + importpath = "github.com/golang/protobuf", + sum = "h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=", + version = "v1.4.3", + ) + go_repository( + name = "com_github_golang_snappy", + importpath = "github.com/golang/snappy", + sum = "h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw=", + version = "v0.0.2", + ) + go_repository( + name = "com_github_golang_sql_civil", + importpath = "github.com/golang-sql/civil", + sum = "h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=", + version = "v0.0.0-20190719163853-cb61b32ac6fe", + ) + go_repository( + name = "com_github_golangplus_testing", + importpath = "github.com/golangplus/testing", + sum = "h1:KhcknUwkWHKZPbFy2P7jH5LKJ3La+0ZeknkkmrSgqb0=", + version = "v0.0.0-20180327235837-af21d9c3145e", + ) + go_repository( + name = "com_github_gonum_blas", + importpath = "github.com/gonum/blas", + sum = "h1:Q0Jsdxl5jbxouNs1TQYt0gxesYMU4VXRbsTlgDloZ50=", + version = "v0.0.0-20181208220705-f22b278b28ac", + ) + go_repository( + name = "com_github_gonum_floats", + importpath = "github.com/gonum/floats", + sum = "h1:EvokxLQsaaQjcWVWSV38221VAK7qc2zhaO17bKys/18=", + version = "v0.0.0-20181209220543-c233463c7e82", + ) + go_repository( + name = "com_github_gonum_internal", + importpath = "github.com/gonum/internal", + sum = "h1:8jtTdc+Nfj9AR+0soOeia9UZSvYBvETVHZrugUowJ7M=", + version = "v0.0.0-20181124074243-f884aa714029", + ) + go_repository( + name = "com_github_gonum_lapack", + importpath = "github.com/gonum/lapack", + sum = "h1:7qnwS9+oeSiOIsiUMajT+0R7HR6hw5NegnKPmn/94oI=", + version = "v0.0.0-20181123203213-e4cdc5a0bff9", + ) + go_repository( + name = "com_github_gonum_matrix", + importpath = "github.com/gonum/matrix", + sum = "h1:V2IgdyerlBa/MxaEFRbV5juy/C3MGdj4ePi+g6ePIp4=", + version = "v0.0.0-20181209220409-c518dec07be9", + ) + go_repository( + name = "com_github_google_addlicense", + importpath = "github.com/google/addlicense", + sum = "h1:ydbHzabf84uucKri5fcfiqYxGg+rYgP/zQfLLN8lyP0=", + version = "v0.0.0-20190510175307-22550fa7c1b0", + ) + go_repository( + name = "com_github_google_btree", + importpath = "github.com/google/btree", + sum = "h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_google_flatbuffers", + importpath = "github.com/google/flatbuffers", + sum = "h1:O7CEyB8Cb3/DmtxODGtLHcEvpr81Jm5qLg/hsHnxA2A=", + version = "v1.11.0", + ) + go_repository( + name = "com_github_google_go_cmp", + importpath = "github.com/google/go-cmp", + sum = "h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=", + version = "v0.5.4", + ) + go_repository( + name = "com_github_google_go_github", + importpath = "github.com/google/go-github", + sum = "h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=", + version = "v17.0.0+incompatible", + ) + go_repository( + name = "com_github_google_go_github_v29", + importpath = "github.com/google/go-github/v29", + sum = "h1:IktKCTwU//aFHnpA+2SLIi7Oo9uhAzgsdZNbcAqhgdc=", + version = "v29.0.3", + ) + go_repository( + name = "com_github_google_go_licenses", + importpath = "github.com/google/go-licenses", + sum = "h1:ZK63Yns/0Y8hE5y50WuSsfFWNPmpYDQ9tzh/J2vWV8c=", + version = "v0.0.0-20210816172045-3099c18c36e1", + ) + go_repository( + name = "com_github_google_go_querystring", + importpath = "github.com/google/go-querystring", + sum = "h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_google_gofuzz", + importpath = "github.com/google/gofuzz", + sum = "h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_google_licenseclassifier", + importpath = "github.com/google/licenseclassifier", + sum = "h1:TJsAqW6zLRMDTyGmc9TPosfn9OyVlHs8Hrn3pY6ONSY=", + version = "v0.0.0-20210722185704-3043a050f148", + ) + go_repository( + name = "com_github_google_martian", + importpath = "github.com/google/martian", + sum = "h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=", + version = "v2.1.0+incompatible", + ) + go_repository( + name = "com_github_google_martian_v3", + importpath = "github.com/google/martian/v3", + sum = "h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60=", + version = "v3.1.0", + ) + go_repository( + name = "com_github_google_pprof", + importpath = "github.com/google/pprof", + sum = "h1:Jx2lEv4nMccTJE+IIZOVIvk+DjNKlRsW0sm1uBr896U=", + version = "v0.0.0-20201023163331-3e6fc7fc9c4c", + ) + go_repository( + name = "com_github_google_renameio", + importpath = "github.com/google/renameio", + sum = "h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_google_shlex", + importpath = "github.com/google/shlex", + sum = "h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=", + version = "v0.0.0-20191202100458-e7afc7fbc510", + ) + go_repository( + name = "com_github_google_uuid", + importpath = "github.com/google/uuid", + sum = "h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_googleapis_gax_go", + importpath = "github.com/googleapis/gax-go", + sum = "h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww=", + version = "v2.0.2+incompatible", + ) + go_repository( + name = "com_github_googleapis_gax_go_v2", + importpath = "github.com/googleapis/gax-go/v2", + sum = "h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=", + version = "v2.0.5", + ) + go_repository( + name = "com_github_googleapis_gnostic", + importpath = "github.com/googleapis/gnostic", + sum = "h1:2qsuRm+bzgwSIKikigPASa2GhW8H2Dn4Qq7UxD8K/48=", + version = "v0.5.3", + ) + go_repository( + name = "com_github_gophercloud_gophercloud", + importpath = "github.com/gophercloud/gophercloud", + sum = "h1:P/nh25+rzXouhytV2pUHBb65fnds26Ghl8/391+sT5o=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_gopherjs_gopherjs", + importpath = "github.com/gopherjs/gopherjs", + sum = "h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=", + version = "v0.0.0-20200217142428-fce0ec30dd00", + ) + go_repository( + name = "com_github_gopherjs_gopherwasm", + importpath = "github.com/gopherjs/gopherwasm", + sum = "h1:32nge/RlujS1Im4HNCJPp0NbBOAeBXFuT1KonUuLl+Y=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_gorilla_context", + importpath = "github.com/gorilla/context", + sum = "h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_gorilla_csrf", + importpath = "github.com/gorilla/csrf", + sum = "h1:mMPjV5/3Zd460xCavIkppUdvnl5fPXMpv2uz2Zyg7/Y=", + version = "v1.7.0", + ) + go_repository( + name = "com_github_gorilla_handlers", + importpath = "github.com/gorilla/handlers", + sum = "h1:0QniY0USkHQ1RGCLfKxeNHK9bkDHGRYGNDFBCS+YARg=", + version = "v1.4.2", + ) + go_repository( + name = "com_github_gorilla_mux", + importpath = "github.com/gorilla/mux", + sum = "h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_gorilla_securecookie", + importpath = "github.com/gorilla/securecookie", + sum = "h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_gorilla_websocket", + importpath = "github.com/gorilla/websocket", + sum = "h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=", + version = "v1.4.2", + ) + go_repository( + name = "com_github_gregjones_httpcache", + importpath = "github.com/gregjones/httpcache", + sum = "h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM=", + version = "v0.0.0-20180305231024-9cad4c3443a7", + ) + go_repository( + name = "com_github_grpc_ecosystem_go_grpc_middleware", + importpath = "github.com/grpc-ecosystem/go-grpc-middleware", + sum = "h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg=", + version = "v1.0.1-0.20190118093823-f849b5445de4", + ) + go_repository( + name = "com_github_grpc_ecosystem_go_grpc_prometheus", + importpath = "github.com/grpc-ecosystem/go-grpc-prometheus", + sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_grpc_ecosystem_grpc_gateway", + importpath = "github.com/grpc-ecosystem/grpc-gateway", + sum = "h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI=", + version = "v1.9.5", + ) + go_repository( + name = "com_github_hailocab_go_hostpool", + importpath = "github.com/hailocab/go-hostpool", + sum = "h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8=", + version = "v0.0.0-20160125115350-e80d13ce29ed", + ) + go_repository( + name = "com_github_hako_durafmt", + importpath = "github.com/hako/durafmt", + sum = "h1:BpJ2o0OR5FV7vrkDYfXYVJQeMNWa8RhklZOpW2ITAIQ=", + version = "v0.0.0-20200710122514-c0fb7b4da026", + ) + go_repository( + name = "com_github_hashicorp_consul_api", + importpath = "github.com/hashicorp/consul/api", + sum = "h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_hashicorp_consul_sdk", + importpath = "github.com/hashicorp/consul/sdk", + sum = "h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_hashicorp_errwrap", + importpath = "github.com/hashicorp/errwrap", + sum = "h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_hashicorp_go_cleanhttp", + importpath = "github.com/hashicorp/go-cleanhttp", + sum = "h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=", + version = "v0.5.1", + ) + go_repository( + name = "com_github_hashicorp_go_immutable_radix", + importpath = "github.com/hashicorp/go-immutable-radix", + sum = "h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_msgpack", + importpath = "github.com/hashicorp/go-msgpack", + sum = "h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4=", + version = "v0.5.3", + ) + go_repository( + name = "com_github_hashicorp_go_multierror", + importpath = "github.com/hashicorp/go-multierror", + sum = "h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_hashicorp_go_net", + importpath = "github.com/hashicorp/go.net", + sum = "h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw=", + version = "v0.0.1", + ) + go_repository( + name = "com_github_hashicorp_go_rootcerts", + importpath = "github.com/hashicorp/go-rootcerts", + sum = "h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_sockaddr", + importpath = "github.com/hashicorp/go-sockaddr", + sum = "h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_syslog", + importpath = "github.com/hashicorp/go-syslog", + sum = "h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_go_uuid", + importpath = "github.com/hashicorp/go-uuid", + sum = "h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_hashicorp_go_version", + importpath = "github.com/hashicorp/go-version", + sum = "h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_hashicorp_golang_lru", + importpath = "github.com/hashicorp/golang-lru", + sum = "h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=", + version = "v0.5.4", + ) + go_repository( + name = "com_github_hashicorp_hcl", + importpath = "github.com/hashicorp/hcl", + sum = "h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_logutils", + importpath = "github.com/hashicorp/logutils", + sum = "h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_mdns", + importpath = "github.com/hashicorp/mdns", + sum = "h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_hashicorp_memberlist", + importpath = "github.com/hashicorp/memberlist", + sum = "h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M=", + version = "v0.1.3", + ) + go_repository( + name = "com_github_hashicorp_serf", + importpath = "github.com/hashicorp/serf", + sum = "h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0=", + version = "v0.8.2", + ) + go_repository( + name = "com_github_hpcloud_tail", + importpath = "github.com/hpcloud/tail", + sum = "h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_huandu_xstrings", + importpath = "github.com/huandu/xstrings", + sum = "h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_hudl_fargo", + importpath = "github.com/hudl/fargo", + sum = "h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_huin_goserial", + importpath = "github.com/huin/goserial", + sum = "h1:v6symRpmVeKVUqq1grXnDDtus+lmQufUhgZ/lgMr4nU=", + version = "v0.0.0-20121012073615-7b90efdb22b1", + ) + go_repository( + name = "com_github_iancoleman_orderedmap", + importpath = "github.com/iancoleman/orderedmap", + sum = "h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk=", + version = "v0.0.0-20190318233801-ac98e3ecb4b0", + ) + go_repository( + name = "com_github_ianlancetaylor_demangle", + importpath = "github.com/ianlancetaylor/demangle", + sum = "h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI=", + version = "v0.0.0-20200824232613-28f6c0f3b639", + ) + go_repository( + name = "com_github_imdario_mergo", + importpath = "github.com/imdario/mergo", + sum = "h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=", + version = "v0.3.11", + ) + go_repository( + name = "com_github_inconshreveable_mousetrap", + importpath = "github.com/inconshreveable/mousetrap", + sum = "h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_influxdata_influxdb1_client", + importpath = "github.com/influxdata/influxdb1-client", + sum = "h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA=", + version = "v0.0.0-20191209144304-8bf82d3c094d", + ) + go_repository( + name = "com_github_jackc_chunkreader", + importpath = "github.com/jackc/chunkreader", + sum = "h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jackc_chunkreader_v2", + importpath = "github.com/jackc/chunkreader/v2", + sum = "h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8=", + version = "v2.0.1", + ) + go_repository( + name = "com_github_jackc_fake", + importpath = "github.com/jackc/fake", + sum = "h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc=", + version = "v0.0.0-20150926172116-812a484cc733", + ) + go_repository( + name = "com_github_jackc_pgconn", + importpath = "github.com/jackc/pgconn", + sum = "h1:195tt17jkjy+FrFlY0pgyrul5kRLb7BGXY3JTrNxeXU=", + version = "v1.7.2", + ) + go_repository( + name = "com_github_jackc_pgio", + importpath = "github.com/jackc/pgio", + sum = "h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jackc_pgmock", + importpath = "github.com/jackc/pgmock", + sum = "h1:JVX6jT/XfzNqIjye4717ITLaNwV9mWbJx0dLCpcRzdA=", + version = "v0.0.0-20190831213851-13a1b77aafa2", + ) + go_repository( + name = "com_github_jackc_pgpassfile", + importpath = "github.com/jackc/pgpassfile", + sum = "h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jackc_pgproto3", + importpath = "github.com/jackc/pgproto3", + sum = "h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_jackc_pgproto3_v2", + importpath = "github.com/jackc/pgproto3/v2", + sum = "h1:b1105ZGEMFe7aCvrT1Cca3VoVb4ZFMaFJLJcg/3zD+8=", + version = "v2.0.6", + ) + go_repository( + name = "com_github_jackc_pgservicefile", + importpath = "github.com/jackc/pgservicefile", + sum = "h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg=", + version = "v0.0.0-20200714003250-2b9c44734f2b", + ) + go_repository( + name = "com_github_jackc_pgtype", + importpath = "github.com/jackc/pgtype", + sum = "h1:CAtFD7TS95KrxRAh3bidgLwva48WYxk8YkbHZsSWfbI=", + version = "v1.6.1", + ) + go_repository( + name = "com_github_jackc_pgx", + importpath = "github.com/jackc/pgx", + sum = "h1:0Vihzu20St42/UDsvZGdNE6jak7oi/UOeMzwMPHkgFY=", + version = "v3.2.0+incompatible", + ) + go_repository( + name = "com_github_jackc_pgx_v4", + importpath = "github.com/jackc/pgx/v4", + sum = "h1:1V7EAc5jvIqXwdzgk8+YyOK+4071hhePzBCAF6gxUUw=", + version = "v4.9.2", + ) + go_repository( + name = "com_github_jackc_puddle", + importpath = "github.com/jackc/puddle", + sum = "h1:mpQEXihFnWGDy6X98EOTh81JYuxn7txby8ilJ3iIPGM=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_jbenet_go_context", + importpath = "github.com/jbenet/go-context", + sum = "h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=", + version = "v0.0.0-20150711004518-d14ea06fba99", + ) + go_repository( + name = "com_github_jcgregorio_logger", + importpath = "github.com/jcgregorio/logger", + sum = "h1:kHiF857oOObzlUer5ANZ95U08A7k2INjivnss4IyMCg=", + version = "v0.1.2", + ) + go_repository( + name = "com_github_jcgregorio_slog", + importpath = "github.com/jcgregorio/slog", + sum = "h1:H8hiPQr5PtkrB5z3Do/9iR5tEwuAFNim68cqcoAlHeY=", + version = "v0.0.0-20190423190439-e6f2d537f900", + ) + go_repository( + name = "com_github_jeffail_gabs_v2", + importpath = "github.com/Jeffail/gabs/v2", + sum = "h1:WdCnGaDhNa4LSRTMwhLZzJ7SRDXjABNP13SOKvCpL5w=", + version = "v2.6.0", + ) + go_repository( + name = "com_github_jellevandenhooff_dkim", + importpath = "github.com/jellevandenhooff/dkim", + sum = "h1:ujPKutqRlJtcfWk6toYVYagwra7HQHbXOaS171b4Tg8=", + version = "v0.0.0-20150330215556-f50fe3d243e1", + ) + go_repository( + name = "com_github_jessevdk_go_flags", + importpath = "github.com/jessevdk/go-flags", + sum = "h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=", + version = "v1.4.0", + ) + go_repository( + name = "com_github_jinzhu_inflection", + importpath = "github.com/jinzhu/inflection", + sum = "h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jinzhu_now", + importpath = "github.com/jinzhu/now", + sum = "h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_jmespath_go_jmespath", + importpath = "github.com/jmespath/go-jmespath", + sum = "h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_jmespath_go_jmespath_internal_testify", + importpath = "github.com/jmespath/go-jmespath/internal/testify", + sum = "h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=", + version = "v1.5.1", + ) + go_repository( + name = "com_github_jmoiron_sqlx", + importpath = "github.com/jmoiron/sqlx", + sum = "h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_jonboulle_clockwork", + importpath = "github.com/jonboulle/clockwork", + sum = "h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_josharian_intern", + importpath = "github.com/josharian/intern", + sum = "h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_jpillora_backoff", + importpath = "github.com/jpillora/backoff", + sum = "h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_json_iterator_go", + importpath = "github.com/json-iterator/go", + sum = "h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=", + version = "v1.1.10", + ) + go_repository( + name = "com_github_jstemmer_go_junit_report", + importpath = "github.com/jstemmer/go-junit-report", + sum = "h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=", + version = "v0.9.1", + ) + go_repository( + name = "com_github_jtolds_gls", + importpath = "github.com/jtolds/gls", + sum = "h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=", + version = "v4.20.0+incompatible", + ) + go_repository( + name = "com_github_julienschmidt_httprouter", + importpath = "github.com/julienschmidt/httprouter", + sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=", + version = "v1.3.0", + ) + go_repository( + name = "com_github_jung_kurt_gofpdf", + importpath = "github.com/jung-kurt/gofpdf", + sum = "h1:OrLyhb9VU2dNdxzDu5lpMhX5/vpfm6RY5Jlr4iPQ6ME=", + version = "v1.13.0", + ) + go_repository( + name = "com_github_kardianos_osext", + importpath = "github.com/kardianos/osext", + sum = "h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=", + version = "v0.0.0-20190222173326-2bc1f35cddc0", + ) + go_repository( + name = "com_github_kevinburke_ssh_config", + importpath = "github.com/kevinburke/ssh_config", + sum = "h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=", + version = "v0.0.0-20201106050909-4977a11b4351", + ) + go_repository( + name = "com_github_kisielk_errcheck", + importpath = "github.com/kisielk/errcheck", + sum = "h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_kisielk_gotool", + importpath = "github.com/kisielk/gotool", + sum = "h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_klauspost_compress", + importpath = "github.com/klauspost/compress", + sum = "h1:dB4Bn0tN3wdCzQxnS8r06kV74qN/TAfaIS0bVE8h3jc=", + version = "v1.11.3", + ) + go_repository( + name = "com_github_knetic_govaluate", + importpath = "github.com/Knetic/govaluate", + sum = "h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=", + version = "v3.0.1-0.20171022003610-9aa49832a739+incompatible", + ) + go_repository( + name = "com_github_konsorten_go_windows_terminal_sequences", + importpath = "github.com/konsorten/go-windows-terminal-sequences", + sum = "h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=", + version = "v1.0.3", + ) + go_repository( + name = "com_github_kr_fs", + importpath = "github.com/kr/fs", + sum = "h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=", + version = "v0.1.0", + ) + go_repository( + name = "com_github_kr_logfmt", + importpath = "github.com/kr/logfmt", + sum = "h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=", + version = "v0.0.0-20140226030751-b84e30acd515", + ) + go_repository( + name = "com_github_kr_pretty", + importpath = "github.com/kr/pretty", + sum = "h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=", + version = "v0.2.1", + ) + go_repository( + name = "com_github_kr_pty", + importpath = "github.com/kr/pty", + sum = "h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=", + version = "v1.1.8", + ) + go_repository( + name = "com_github_kr_text", + importpath = "github.com/kr/text", + sum = "h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_kylelemons_godebug", + importpath = "github.com/kylelemons/godebug", + sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_lib_pq", + importpath = "github.com/lib/pq", + sum = "h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_liggitt_tabwriter", + importpath = "github.com/liggitt/tabwriter", + sum = "h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=", + version = "v0.0.0-20181228230101-89fcab3d43de", + ) + go_repository( + name = "com_github_lightstep_lightstep_tracer_common_golang_gogo", + importpath = "github.com/lightstep/lightstep-tracer-common/golang/gogo", + sum = "h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo=", + version = "v0.0.0-20190605223551-bc2310a04743", + ) + go_repository( + name = "com_github_lightstep_lightstep_tracer_go", + importpath = "github.com/lightstep/lightstep-tracer-go", + sum = "h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk=", + version = "v0.18.1", + ) + go_repository( + name = "com_github_lithammer_dedent", + importpath = "github.com/lithammer/dedent", + sum = "h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_luci_gtreap", + importpath = "github.com/luci/gtreap", + sum = "h1:Kkxfmkf53vnIADWIhzvJ0GvwVR/gz9U7F7Wqofqd7dU=", + version = "v0.0.0-20161228054646-35df89791e8f", + ) + go_repository( + name = "com_github_lyft_protoc_gen_validate", + importpath = "github.com/lyft/protoc-gen-validate", + sum = "h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA=", + version = "v0.0.13", + ) + go_repository( + name = "com_github_magiconair_properties", + importpath = "github.com/magiconair/properties", + sum = "h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY=", + version = "v1.8.4", + ) + go_repository( + name = "com_github_mailru_easyjson", + importpath = "github.com/mailru/easyjson", + sum = "h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=", + version = "v0.7.6", + ) + go_repository( + name = "com_github_makenowjust_heredoc", + importpath = "github.com/MakeNowJust/heredoc", + sum = "h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU=", + version = "v0.0.0-20170808103936-bb23615498cd", + ) + go_repository( + name = "com_github_markbates_pkger", + importpath = "github.com/markbates/pkger", + sum = "h1:/MKEtWqtc0mZvu9OinB9UzVN9iYCwLWuyUv4Bw+PCno=", + version = "v0.17.1", + ) + go_repository( + name = "com_github_maruel_subcommands", + importpath = "github.com/maruel/subcommands", + sum = "h1:tMgSVvquoQY3VXPaZ5in2C4OX8hf5MFBdfS7tylwdvA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_maruel_ut", + importpath = "github.com/maruel/ut", + sum = "h1:mQTlQk3jubTbdTcza+hwoZQWhzcvE4L6K6RTtAFlA1k=", + version = "v1.0.2", + ) + go_repository( + name = "com_github_masterminds_goutils", + importpath = "github.com/Masterminds/goutils", + sum = "h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_masterminds_semver", + importpath = "github.com/Masterminds/semver", + sum = "h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_masterminds_sprig", + importpath = "github.com/Masterminds/sprig", + sum = "h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60=", + version = "v2.22.0+incompatible", + ) + go_repository( + name = "com_github_mattn_go_colorable", + importpath = "github.com/mattn/go-colorable", + sum = "h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=", + version = "v0.1.6", + ) + go_repository( + name = "com_github_mattn_go_isatty", + importpath = "github.com/mattn/go-isatty", + sum = "h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=", + version = "v0.0.12", + ) + go_repository( + name = "com_github_mattn_go_runewidth", + importpath = "github.com/mattn/go-runewidth", + sum = "h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=", + version = "v0.0.9", + ) + go_repository( + name = "com_github_mattn_go_sqlite3", + importpath = "github.com/mattn/go-sqlite3", + sum = "h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=", + version = "v2.0.3+incompatible", + ) + go_repository( + name = "com_github_matttproud_golang_protobuf_extensions", + importpath = "github.com/matttproud/golang_protobuf_extensions", + sum = "h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=", + version = "v1.0.2-0.20181231171920-c182affec369", + ) + go_repository( + name = "com_github_microsoft_go_winio", + importpath = "github.com/Microsoft/go-winio", + sum = "h1:qkLXKzb1QoVatRyd/YlXZ/Kg0m5K3SPuoD82jjSOaBc=", + version = "v0.4.15", + ) + go_repository( + name = "com_github_miekg_dns", + importpath = "github.com/miekg/dns", + sum = "h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=", + version = "v1.0.14", + ) + go_repository( + name = "com_github_mitchellh_cli", + importpath = "github.com/mitchellh/cli", + sum = "h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_copystructure", + importpath = "github.com/mitchellh/copystructure", + sum = "h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_go_homedir", + importpath = "github.com/mitchellh/go-homedir", + sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_mitchellh_go_testing_interface", + importpath = "github.com/mitchellh/go-testing-interface", + sum = "h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_go_wordwrap", + importpath = "github.com/mitchellh/go-wordwrap", + sum = "h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_gox", + importpath = "github.com/mitchellh/gox", + sum = "h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc=", + version = "v0.4.0", + ) + go_repository( + name = "com_github_mitchellh_iochan", + importpath = "github.com/mitchellh/iochan", + sum = "h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_mitchellh_mapstructure", + importpath = "github.com/mitchellh/mapstructure", + sum = "h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=", + version = "v1.3.3", + ) + go_repository( + name = "com_github_mitchellh_reflectwalk", + importpath = "github.com/mitchellh/reflectwalk", + sum = "h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_moby_spdystream", + importpath = "github.com/moby/spdystream", + sum = "h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_moby_term", + importpath = "github.com/moby/term", + sum = "h1:rzf0wL0CHVc8CEsgyygG0Mn9CNCCPZqOPaz8RiiHYQk=", + version = "v0.0.0-20201216013528-df9cb8a40635", + ) + go_repository( + name = "com_github_modern_go_concurrent", + importpath = "github.com/modern-go/concurrent", + sum = "h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=", + version = "v0.0.0-20180306012644-bacd9c7ef1dd", + ) + go_repository( + name = "com_github_modern_go_reflect2", + importpath = "github.com/modern-go/reflect2", + sum = "h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_monochromegane_go_gitignore", + importpath = "github.com/monochromegane/go-gitignore", + sum = "h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=", + version = "v0.0.0-20200626010858-205db1a8cc00", + ) + go_repository( + name = "com_github_morikuni_aec", + importpath = "github.com/morikuni/aec", + sum = "h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_munnerz_goautoneg", + importpath = "github.com/munnerz/goautoneg", + sum = "h1:7PxY7LVfSZm7PEeBTyK1rj1gABdCO2mbri6GKO1cMDs=", + version = "v0.0.0-20120707110453-a547fc61f48d", + ) + go_repository( + name = "com_github_mutecomm_go_sqlcipher_v4", + importpath = "github.com/mutecomm/go-sqlcipher/v4", + sum = "h1:sV1tWCWGAVlPhNGT95Q+z/txFxuhAYWwHD1afF5bMZg=", + version = "v4.4.0", + ) + go_repository( + name = "com_github_mwitkow_go_conntrack", + importpath = "github.com/mwitkow/go-conntrack", + sum = "h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=", + version = "v0.0.0-20190716064945-2f068394615f", + ) + go_repository( + name = "com_github_mxk_go_flowrate", + importpath = "github.com/mxk/go-flowrate", + sum = "h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=", + version = "v0.0.0-20140419014527-cca7078d478f", + ) + go_repository( + name = "com_github_nakagami_firebirdsql", + importpath = "github.com/nakagami/firebirdsql", + sum = "h1:P48LjvUQpTReR3TQRbxSeSBsMXzfK0uol7eRcr7VBYQ=", + version = "v0.0.0-20190310045651-3c02a58cfed8", + ) + go_repository( + name = "com_github_nats_io_jwt", + importpath = "github.com/nats-io/jwt", + sum = "h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI=", + version = "v0.3.2", + ) + go_repository( + name = "com_github_nats_io_nats_go", + importpath = "github.com/nats-io/nats.go", + sum = "h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ=", + version = "v1.9.1", + ) + go_repository( + name = "com_github_nats_io_nats_server_v2", + importpath = "github.com/nats-io/nats-server/v2", + sum = "h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc=", + version = "v2.1.2", + ) + go_repository( + name = "com_github_nats_io_nkeys", + importpath = "github.com/nats-io/nkeys", + sum = "h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k=", + version = "v0.1.3", + ) + go_repository( + name = "com_github_nats_io_nuid", + importpath = "github.com/nats-io/nuid", + sum = "h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_nbutton23_zxcvbn_go", + importpath = "github.com/nbutton23/zxcvbn-go", + sum = "h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E=", + version = "v0.0.0-20180912185939-ae427f1e4c1d", + ) + go_repository( + name = "com_github_neo4j_drivers_gobolt", + importpath = "github.com/neo4j-drivers/gobolt", + sum = "h1:80c7W+vtw39ES9Q85q9GZh4tJo+1MpQGpFTuo28CP+Y=", + version = "v1.7.4", + ) + go_repository( + name = "com_github_neo4j_neo4j_go_driver", + importpath = "github.com/neo4j/neo4j-go-driver", + sum = "h1:fhFP5RliM2HW/8XdcO5QngSfFli9GcRIpMXvypTQt6E=", + version = "v1.8.1-0.20200803113522-b626aa943eba", + ) + go_repository( + name = "com_github_nfnt_resize", + importpath = "github.com/nfnt/resize", + sum = "h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=", + version = "v0.0.0-20180221191011-83c6a9932646", + ) + go_repository( + name = "com_github_niemeyer_pretty", + importpath = "github.com/niemeyer/pretty", + sum = "h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=", + version = "v0.0.0-20200227124842-a10e7caefd8e", + ) + go_repository( + name = "com_github_nkovacs_streamquote", + importpath = "github.com/nkovacs/streamquote", + sum = "h1:E2B8qYyeSgv5MXpmzZXRNp8IAQ4vjxIjhpAf5hv/tAg=", + version = "v0.0.0-20170412213628-49af9bddb229", + ) + go_repository( + name = "com_github_nxadm_tail", + importpath = "github.com/nxadm/tail", + sum = "h1:obHEce3upls1IBn1gTw/o7bCv7OJb6Ib/o7wNO+4eKw=", + version = "v1.4.5", + ) + go_repository( + name = "com_github_nytimes_gziphandler", + importpath = "github.com/NYTimes/gziphandler", + sum = "h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0=", + version = "v0.0.0-20170623195520-56545f4a5d46", + ) + go_repository( + name = "com_github_oklog_oklog", + importpath = "github.com/oklog/oklog", + sum = "h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk=", + version = "v0.3.2", + ) + go_repository( + name = "com_github_oklog_run", + importpath = "github.com/oklog/run", + sum = "h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_oklog_ulid", + importpath = "github.com/oklog/ulid", + sum = "h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=", + version = "v1.3.1", + ) + go_repository( + name = "com_github_olekukonko_tablewriter", + importpath = "github.com/olekukonko/tablewriter", + sum = "h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8=", + version = "v0.0.4", + ) + go_repository( + name = "com_github_olivere_elastic_v7", + importpath = "github.com/olivere/elastic/v7", + sum = "h1:91kj/UMKWQt8VAHBm5BDHpVmzdfPCmICaUFy2oH4LkQ=", + version = "v7.0.12", + ) + go_repository( + name = "com_github_oneofone_struct2ts", + importpath = "github.com/OneOfOne/struct2ts", + sum = "h1:q6oBD4F+2wOPwCwDHK6scvJDs6MG77b4RZXfHAdZisg=", + version = "v1.0.4", + ) + go_repository( + name = "com_github_oneofone_xxhash", + importpath = "github.com/OneOfOne/xxhash", + sum = "h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=", + version = "v1.2.2", + ) + go_repository( + name = "com_github_onsi_ginkgo", + importpath = "github.com/onsi/ginkgo", + sum = "h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=", + version = "v1.14.2", + ) + go_repository( + name = "com_github_onsi_gomega", + importpath = "github.com/onsi/gomega", + sum = "h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA=", + version = "v1.10.3", + ) + go_repository( + name = "com_github_op_go_logging", + importpath = "github.com/op/go-logging", + sum = "h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88=", + version = "v0.0.0-20160315200505-970db520ece7", + ) + go_repository( + name = "com_github_opencontainers_go_digest", + importpath = "github.com/opencontainers/go-digest", + sum = "h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_opencontainers_image_spec", + importpath = "github.com/opencontainers/image-spec", + sum = "h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_opentracing_basictracer_go", + importpath = "github.com/opentracing/basictracer-go", + sum = "h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_opentracing_contrib_go_observer", + importpath = "github.com/opentracing-contrib/go-observer", + sum = "h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU=", + version = "v0.0.0-20170622124052-a52f23424492", + ) + go_repository( + name = "com_github_opentracing_opentracing_go", + importpath = "github.com/opentracing/opentracing-go", + sum = "h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_openzipkin_contrib_zipkin_go_opentracing", + importpath = "github.com/openzipkin-contrib/zipkin-go-opentracing", + sum = "h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU=", + version = "v0.4.5", + ) + go_repository( + name = "com_github_openzipkin_zipkin_go", + importpath = "github.com/openzipkin/zipkin-go", + sum = "h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI=", + version = "v0.2.2", + ) + go_repository( + name = "com_github_otiai10_copy", + importpath = "github.com/otiai10/copy", + sum = "h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_otiai10_curr", + importpath = "github.com/otiai10/curr", + sum = "h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_otiai10_mint", + importpath = "github.com/otiai10/mint", + sum = "h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E=", + version = "v1.3.2", + ) + go_repository( + name = "com_github_pact_foundation_pact_go", + importpath = "github.com/pact-foundation/pact-go", + sum = "h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q=", + version = "v1.0.4", + ) + go_repository( + name = "com_github_pascaldekloe_goe", + importpath = "github.com/pascaldekloe/goe", + sum = "h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs=", + version = "v0.0.0-20180627143212-57f6aae5913c", + ) + go_repository( + name = "com_github_patrickmn_go_cache", + importpath = "github.com/patrickmn/go-cache", + sum = "h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=", + version = "v2.1.0+incompatible", + ) + go_repository( + name = "com_github_pborman_uuid", + importpath = "github.com/pborman/uuid", + sum = "h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_pelletier_go_buffruneio", + importpath = "github.com/pelletier/go-buffruneio", + sum = "h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_pelletier_go_toml", + importpath = "github.com/pelletier/go-toml", + sum = "h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM=", + version = "v1.8.1", + ) + go_repository( + name = "com_github_performancecopilot_speed", + importpath = "github.com/performancecopilot/speed", + sum = "h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg=", + version = "v3.0.0+incompatible", + ) + go_repository( + name = "com_github_peterbourgon_diskv", + importpath = "github.com/peterbourgon/diskv", + sum = "h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=", + version = "v2.0.1+incompatible", + ) + go_repository( + name = "com_github_peterh_liner", + importpath = "github.com/peterh/liner", + sum = "h1:w/UPXyl5GfahFxcTOz2j9wCIHNI+pUPr2laqpojKNCg=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_phpdave11_gofpdi", + importpath = "github.com/phpdave11/gofpdi", + sum = "h1:k2oy4yhkQopCK+qW8KjCla0iU2RpDow+QUDmH9DDt44=", + version = "v1.0.7", + ) + go_repository( + name = "com_github_pierrec_lz4", + importpath = "github.com/pierrec/lz4", + sum = "h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=", + version = "v2.0.5+incompatible", + ) + go_repository( + name = "com_github_pkg_browser", + importpath = "github.com/pkg/browser", + sum = "h1:49lOXmGaUpV9Fz3gd7TFZY106KVlPVa5jcYD1gaQf98=", + version = "v0.0.0-20180916011732-0a3d74bf9ce4", + ) + go_repository( + name = "com_github_pkg_errors", + importpath = "github.com/pkg/errors", + sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=", + version = "v0.9.1", + ) + go_repository( + name = "com_github_pkg_profile", + importpath = "github.com/pkg/profile", + sum = "h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_pkg_sftp", + importpath = "github.com/pkg/sftp", + sum = "h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc=", + version = "v1.10.1", + ) + go_repository( + name = "com_github_pmezard_go_difflib", + importpath = "github.com/pmezard/go-difflib", + sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_posener_complete", + importpath = "github.com/posener/complete", + sum = "h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_prometheus_client_golang", + importpath = "github.com/prometheus/client_golang", + sum = "h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw=", + version = "v1.8.0", + ) + go_repository( + name = "com_github_prometheus_client_model", + importpath = "github.com/prometheus/client_model", + sum = "h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_prometheus_common", + importpath = "github.com/prometheus/common", + sum = "h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM=", + version = "v0.15.0", + ) + go_repository( + name = "com_github_prometheus_procfs", + importpath = "github.com/prometheus/procfs", + sum = "h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4=", + version = "v0.2.0", + ) + go_repository( + name = "com_github_prometheus_tsdb", + importpath = "github.com/prometheus/tsdb", + sum = "h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=", + version = "v0.7.1", + ) + go_repository( + name = "com_github_puerkitobio_goquery", + importpath = "github.com/PuerkitoBio/goquery", + sum = "h1:j7taAbelrdcsOlGeMenZxc2AWXD5fieT1/znArdnx94=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_puerkitobio_purell", + importpath = "github.com/PuerkitoBio/purell", + sum = "h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_puerkitobio_urlesc", + importpath = "github.com/PuerkitoBio/urlesc", + sum = "h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=", + version = "v0.0.0-20170810143723-de5bf2ad4578", + ) + go_repository( + name = "com_github_rcrowley_go_metrics", + importpath = "github.com/rcrowley/go-metrics", + sum = "h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=", + version = "v0.0.0-20181016184325-3113b8401b8a", + ) + go_repository( + name = "com_github_remyoudompheng_bigfft", + importpath = "github.com/remyoudompheng/bigfft", + sum = "h1:HQagqIiBmr8YXawX/le3+O26N+vPPC1PtjaF3mwnook=", + version = "v0.0.0-20190728182440-6a916e37a237", + ) + go_repository( + name = "com_github_robertkrimen_otto", + importpath = "github.com/robertkrimen/otto", + sum = "h1:kYPjbEN6YPYWWHI6ky1J813KzIq/8+Wg4TO4xU7A/KU=", + version = "v0.0.0-20200922221731-ef014fd054ac", + ) + go_repository( + name = "com_github_rogpeppe_fastuuid", + importpath = "github.com/rogpeppe/fastuuid", + sum = "h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng=", + version = "v0.0.0-20150106093220-6724a57986af", + ) + go_repository( + name = "com_github_rogpeppe_go_internal", + importpath = "github.com/rogpeppe/go-internal", + sum = "h1:Usqs0/lDK/NqTkvrmKSwA/3XkZAs7ZAW/eLeQ2MVBTw=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_rs_cors", + importpath = "github.com/rs/cors", + sum = "h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI=", + version = "v1.6.0", + ) + go_repository( + name = "com_github_rs_xid", + importpath = "github.com/rs/xid", + sum = "h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_rs_zerolog", + importpath = "github.com/rs/zerolog", + sum = "h1:uPRuwkWF4J6fGsJ2R0Gn2jB1EQiav9k3S6CSdygQJXY=", + version = "v1.15.0", + ) + go_repository( + name = "com_github_russross_blackfriday", + importpath = "github.com/russross/blackfriday", + sum = "h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=", + version = "v1.5.2", + ) + go_repository( + name = "com_github_russross_blackfriday_v2", + importpath = "github.com/russross/blackfriday/v2", + sum = "h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=", + version = "v2.0.1", + ) + go_repository( + name = "com_github_ruudk_golang_pdf417", + importpath = "github.com/ruudk/golang-pdf417", + sum = "h1:nlG4Wa5+minh3S9LVFtNoY+GVRiudA2e3EVfcCi3RCA=", + version = "v0.0.0-20181029194003-1af4ab5afa58", + ) + go_repository( + name = "com_github_rwcarlsen_goexif", + importpath = "github.com/rwcarlsen/goexif", + sum = "h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc=", + version = "v0.0.0-20190401172101-9e8deecbddbd", + ) + go_repository( + name = "com_github_ryanuber_columnize", + importpath = "github.com/ryanuber/columnize", + sum = "h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M=", + version = "v0.0.0-20160712163229-9b3edd62028f", + ) + go_repository( + name = "com_github_samuel_go_zookeeper", + importpath = "github.com/samuel/go-zookeeper", + sum = "h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU=", + version = "v0.0.0-20190923202752-2cc03de413da", + ) + go_repository( + name = "com_github_satori_go_uuid", + importpath = "github.com/satori/go.uuid", + sum = "h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_sean_seed", + importpath = "github.com/sean-/seed", + sum = "h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=", + version = "v0.0.0-20170313163322-e2103e2c3529", + ) + go_repository( + name = "com_github_sergi_go_diff", + importpath = "github.com/sergi/go-diff", + sum = "h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_shopify_sarama", + importpath = "github.com/Shopify/sarama", + sum = "h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s=", + version = "v1.19.0", + ) + go_repository( + name = "com_github_shopify_toxiproxy", + importpath = "github.com/Shopify/toxiproxy", + sum = "h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=", + version = "v2.1.4+incompatible", + ) + go_repository( + name = "com_github_shopspring_decimal", + importpath = "github.com/shopspring/decimal", + sum = "h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_shurcool_sanitized_anchor_name", + importpath = "github.com/shurcooL/sanitized_anchor_name", + sum = "h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_sirupsen_logrus", + importpath = "github.com/sirupsen/logrus", + sum = "h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=", + version = "v1.7.0", + ) + go_repository( + name = "com_github_skia_dev_go2ts", + importpath = "github.com/skia-dev/go2ts", + sum = "h1:AHQe+t5W18HFoTuApMeShiVMu2nBMHdHgLWo2b2y7/U=", + version = "v1.5.0", + ) + go_repository( + name = "com_github_skia_dev_go_systemd", + importpath = "github.com/skia-dev/go-systemd", + sum = "h1:KPlmEyLo5r9hnWZq8O0B0Rj4AcRv/tJMqEgS6p0JMeQ=", + version = "v0.0.0-20181025131956-1cc903e82ae4", + ) + go_repository( + name = "com_github_skia_dev_google_api_go_client", + importpath = "github.com/skia-dev/google-api-go-client", + sum = "h1:Id5JdSD66PKQQiiVFG1VXDVCT5U3DcDzJSReXRxKRLk=", + version = "v0.10.1-0.20200109184256-16c3d6f408b2", + ) + go_repository( + name = "com_github_smartystreets_assertions", + importpath = "github.com/smartystreets/assertions", + sum = "h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_smartystreets_go_aws_auth", + importpath = "github.com/smartystreets/go-aws-auth", + sum = "h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q=", + version = "v0.0.0-20180515143844-0c1422d1fdb9", + ) + go_repository( + name = "com_github_smartystreets_goconvey", + importpath = "github.com/smartystreets/goconvey", + sum = "h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=", + version = "v1.6.4", + ) + go_repository( + name = "com_github_smartystreets_gunit", + importpath = "github.com/smartystreets/gunit", + sum = "h1:32x+htJCu3aMswhPw3teoJ+PnWPONqdNgaGs6Qt8ZaU=", + version = "v1.1.3", + ) + go_repository( + name = "com_github_snowflakedb_glog", + importpath = "github.com/snowflakedb/glog", + sum = "h1:CGR1hXCOeoZ1aJhCs8qdKJuEu3xoZnxsLcYoh5Bnr+4=", + version = "v0.0.0-20180824191149-f5055e6f21ce", + ) + go_repository( + name = "com_github_snowflakedb_gosnowflake", + importpath = "github.com/snowflakedb/gosnowflake", + sum = "h1:/Ep0cXv4/3o+iXQvh+6CDjHCRPk2AM42l/AMR9PM94Q=", + version = "v1.3.5", + ) + go_repository( + name = "com_github_soheilhy_cmux", + importpath = "github.com/soheilhy/cmux", + sum = "h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=", + version = "v0.1.4", + ) + go_repository( + name = "com_github_sony_gobreaker", + importpath = "github.com/sony/gobreaker", + sum = "h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ=", + version = "v0.4.1", + ) + go_repository( + name = "com_github_spaolacci_murmur3", + importpath = "github.com/spaolacci/murmur3", + sum = "h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=", + version = "v0.0.0-20180118202830-f09979ecbc72", + ) + go_repository( + name = "com_github_spf13_afero", + importpath = "github.com/spf13/afero", + sum = "h1:asw9sl74539yqavKaglDM5hFpdJVK0Y5Dr/JOgQ89nQ=", + version = "v1.4.1", + ) + go_repository( + name = "com_github_spf13_cast", + importpath = "github.com/spf13/cast", + sum = "h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=", + version = "v1.3.1", + ) + go_repository( + name = "com_github_spf13_cobra", + importpath = "github.com/spf13/cobra", + sum = "h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4=", + version = "v1.1.1", + ) + go_repository( + name = "com_github_spf13_jwalterweatherman", + importpath = "github.com/spf13/jwalterweatherman", + sum = "h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=", + version = "v1.1.0", + ) + go_repository( + name = "com_github_spf13_pflag", + importpath = "github.com/spf13/pflag", + sum = "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=", + version = "v1.0.5", + ) + go_repository( + name = "com_github_spf13_viper", + importpath = "github.com/spf13/viper", + sum = "h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=", + version = "v1.7.1", + ) + go_repository( + name = "com_github_src_d_gcfg", + importpath = "github.com/src-d/gcfg", + sum = "h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4=", + version = "v1.4.0", + ) + go_repository( + name = "com_github_stoewer_go_strcase", + importpath = "github.com/stoewer/go-strcase", + sum = "h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_streadway_amqp", + importpath = "github.com/streadway/amqp", + sum = "h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw=", + version = "v0.0.0-20190827072141-edfb9018d271", + ) + go_repository( + name = "com_github_streadway_handy", + importpath = "github.com/streadway/handy", + sum = "h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug=", + version = "v0.0.0-20190108123426-d5acb3125c2a", + ) + go_repository( + name = "com_github_stretchr_objx", + importpath = "github.com/stretchr/objx", + sum = "h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_stretchr_testify", + importpath = "github.com/stretchr/testify", + sum = "h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=", + version = "v1.6.1", + ) + go_repository( + name = "com_github_subosito_gotenv", + importpath = "github.com/subosito/gotenv", + sum = "h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_syndtr_goleveldb", + importpath = "github.com/syndtr/goleveldb", + sum = "h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_tarm_serial", + importpath = "github.com/tarm/serial", + sum = "h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU=", + version = "v0.0.0-20180830185346-98f6abe2eb07", + ) + go_repository( + name = "com_github_texttheater_golang_levenshtein", + importpath = "github.com/texttheater/golang-levenshtein", + sum = "h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_tidwall_pretty", + importpath = "github.com/tidwall/pretty", + sum = "h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_tmc_grpc_websocket_proxy", + importpath = "github.com/tmc/grpc-websocket-proxy", + sum = "h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=", + version = "v0.0.0-20190109142713-0ad062ec5ee5", + ) + go_repository( + name = "com_github_twitchtv_twirp", + importpath = "github.com/twitchtv/twirp", + sum = "h1:3fNSDoSPyq+fTrifIvGue9XM/tptzuhiGY83rxPVNUg=", + version = "v7.1.0+incompatible", + ) + go_repository( + name = "com_github_ugorji_go", + importpath = "github.com/ugorji/go", + sum = "h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw=", + version = "v1.1.4", + ) + go_repository( + name = "com_github_ugorji_go_codec", + importpath = "github.com/ugorji/go/codec", + sum = "h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648=", + version = "v0.0.0-20181204163529-d75b2dcb6bc8", + ) + go_repository( + name = "com_github_unrolled_secure", + importpath = "github.com/unrolled/secure", + sum = "h1:JaMvKbe4CRt8oyxVXn+xY+6jlqd7pyJNSVkmsBxxQsM=", + version = "v1.0.8", + ) + go_repository( + name = "com_github_urfave_cli", + importpath = "github.com/urfave/cli", + sum = "h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY=", + version = "v1.22.1", + ) + go_repository( + name = "com_github_urfave_cli_v2", + importpath = "github.com/urfave/cli/v2", + sum = "h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=", + version = "v2.3.0", + ) + go_repository( + name = "com_github_urfave_negroni", + importpath = "github.com/urfave/negroni", + sum = "h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_valyala_bytebufferpool", + importpath = "github.com/valyala/bytebufferpool", + sum = "h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_valyala_fasttemplate", + importpath = "github.com/valyala/fasttemplate", + sum = "h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=", + version = "v1.0.1", + ) + go_repository( + name = "com_github_vektah_gqlparser", + importpath = "github.com/vektah/gqlparser", + sum = "h1:ZsyLGn7/7jDNI+y4SEhI4yAxRChlv15pUHMjijT+e68=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_vektra_mockery", + importpath = "github.com/vektra/mockery", + sum = "h1:uc0Yn67rJpjt8U/mAZimdCKn9AeA97BOkjpmtBSlfP4=", + version = "v1.1.2", + ) + go_repository( + name = "com_github_vividcortex_godaemon", + importpath = "github.com/VividCortex/godaemon", + sum = "h1:CGNNnJTXn6efEPOEHlxqRrvg9AP0Hsumy9vbXk8aU/k=", + version = "v0.0.0-20150910212227-3d9f6e0b234f", + ) + go_repository( + name = "com_github_vividcortex_gohistogram", + importpath = "github.com/VividCortex/gohistogram", + sum = "h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_willf_bitset", + importpath = "github.com/willf/bitset", + sum = "h1:N7Z7E9UvjW+sGsEl7k/SJrvY2reP1A07MrGuCjIOjRE=", + version = "v1.1.11", + ) + go_repository( + name = "com_github_xanzy_go_gitlab", + importpath = "github.com/xanzy/go-gitlab", + sum = "h1:rWtwKTgEnXyNUGrOArN7yyc3THRkpYcKXIXia9abywQ=", + version = "v0.15.0", + ) + go_repository( + name = "com_github_xanzy_ssh_agent", + importpath = "github.com/xanzy/ssh-agent", + sum = "h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI=", + version = "v0.3.0", + ) + go_repository( + name = "com_github_xdg_scram", + importpath = "github.com/xdg/scram", + sum = "h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk=", + version = "v0.0.0-20180814205039-7eeb5667e42c", + ) + go_repository( + name = "com_github_xdg_stringprep", + importpath = "github.com/xdg/stringprep", + sum = "h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_xeipuuv_gojsonpointer", + importpath = "github.com/xeipuuv/gojsonpointer", + sum = "h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=", + version = "v0.0.0-20180127040702-4e3ac2762d5f", + ) + go_repository( + name = "com_github_xeipuuv_gojsonreference", + importpath = "github.com/xeipuuv/gojsonreference", + sum = "h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=", + version = "v0.0.0-20180127040603-bd5ef7bd5415", + ) + go_repository( + name = "com_github_xeipuuv_gojsonschema", + importpath = "github.com/xeipuuv/gojsonschema", + sum = "h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=", + version = "v1.2.0", + ) + go_repository( + name = "com_github_xiang90_probing", + importpath = "github.com/xiang90/probing", + sum = "h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=", + version = "v0.0.0-20190116061207-43a291ad63a2", + ) + go_repository( + name = "com_github_xlab_treeprint", + importpath = "github.com/xlab/treeprint", + sum = "h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI=", + version = "v0.0.0-20181112141820-a009c3971eca", + ) + go_repository( + name = "com_github_xordataexchange_crypt", + importpath = "github.com/xordataexchange/crypt", + sum = "h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=", + version = "v0.0.3-0.20170626215501-b2862e3d0a77", + ) + go_repository( + name = "com_github_yosuke_furukawa_json5", + importpath = "github.com/yosuke-furukawa/json5", + sum = "h1:0F9mNwTvOuDNH243hoPqvf+dxa5QsKnZzU20uNsh3ZI=", + version = "v0.1.1", + ) + go_repository( + name = "com_github_yuin_goldmark", + importpath = "github.com/yuin/goldmark", + sum = "h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=", + version = "v1.2.1", + ) + go_repository( + name = "com_github_zeebo_bencode", + importpath = "github.com/zeebo/bencode", + sum = "h1:zgop0Wu1nu4IexAZeCZ5qbsjU4O1vMrfCrVgUjbHVuA=", + version = "v1.0.0", + ) + go_repository( + name = "com_github_zenazn_goji", + importpath = "github.com/zenazn/goji", + sum = "h1:RSQQAbXGArQ0dIDEq+PI6WqN6if+5KHu6x2Cx/GXLTQ=", + version = "v0.9.0", + ) + go_repository( + name = "com_gitlab_nyarla_go_crypt", + importpath = "gitlab.com/nyarla/go-crypt", + sum = "h1:7gd+rd8P3bqcn/96gOZa3F5dpJr/vEiDQYlNb/y2uNs=", + version = "v0.0.0-20160106005555-d9a5dc2b789b", + ) + go_repository( + name = "com_google_cloud_go", + importpath = "cloud.google.com/go", + sum = "h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww=", + version = "v0.72.0", + ) + go_repository( + name = "com_google_cloud_go_bigquery", + importpath = "cloud.google.com/go/bigquery", + sum = "h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=", + version = "v1.8.0", + ) + go_repository( + name = "com_google_cloud_go_bigtable", + importpath = "cloud.google.com/go/bigtable", + sum = "h1:hcHWHVX8sfXW4qgfB0fYVd3i22Od2TK6gxoN7EWsbwY=", + version = "v1.6.0", + ) + go_repository( + name = "com_google_cloud_go_datastore", + importpath = "cloud.google.com/go/datastore", + sum = "h1:+T3aKNlZd+MABChjtgQqz5kVysNrFubz5HmljVQG4Zg=", + version = "v1.3.0", + ) + go_repository( + name = "com_google_cloud_go_firestore", + importpath = "cloud.google.com/go/firestore", + sum = "h1:QaBSisuvNi9/o+3nCHqUEfduHCPfhEw2jcUofi0n8oY=", + version = "v1.3.0", + ) + go_repository( + name = "com_google_cloud_go_logging", + importpath = "cloud.google.com/go/logging", + sum = "h1:mU+6wZyP0llWyobJ+aJFqeEfDzMp95R449wEPPILVX0=", + version = "v1.1.1", + ) + go_repository( + name = "com_google_cloud_go_pubsub", + importpath = "cloud.google.com/go/pubsub", + sum = "h1:kl5QdIn98mYhX+G7OzdQ9W3SQ0XXdhHlTw0GHa723pI=", + version = "v1.8.3", + ) + go_repository( + name = "com_google_cloud_go_spanner", + importpath = "cloud.google.com/go/spanner", + sum = "h1:WXuGWhUp5i7MeUMzMrJlodqJvSGtU0Cdw6BdHGgCgVo=", + version = "v1.9.0", + ) + go_repository( + name = "com_google_cloud_go_storage", + importpath = "cloud.google.com/go/storage", + sum = "h1:4y3gHptW1EHVtcPAVE0eBBlFuGqEejTTG3KdIE0lUX4=", + version = "v1.12.0", + ) + go_repository( + name = "com_larrymyers_go_protoc_gen_twirp_typescript", + importpath = "go.larrymyers.com/protoc-gen-twirp_typescript", + sum = "h1:ZpSFyBdyfAuBjsidyg40BRR5g3WYXUHMqOqSqOAY4w8=", + version = "v0.0.0-20201012232926-5c91a3223921", + ) + go_repository( + name = "com_shuralyov_dmitri_gpu_mtl", + importpath = "dmitri.shuralyov.com/gpu/mtl", + sum = "h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=", + version = "v0.0.0-20190408044501-666a987793e9", + ) + go_repository( + name = "com_sourcegraph_sourcegraph_appdash", + importpath = "sourcegraph.com/sourcegraph/appdash", + sum = "h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM=", + version = "v0.0.0-20190731080439-ebfcffb1b5c0", + ) + go_repository( + name = "in_gopkg_alecthomas_kingpin_v2", + importpath = "gopkg.in/alecthomas/kingpin.v2", + sum = "h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=", + version = "v2.2.6", + ) + go_repository( + name = "in_gopkg_check_v1", + importpath = "gopkg.in/check.v1", + sum = "h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U=", + version = "v1.0.0-20200902074654-038fdea0a05b", + ) + go_repository( + name = "in_gopkg_cheggaaa_pb_v1", + importpath = "gopkg.in/cheggaaa/pb.v1", + sum = "h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I=", + version = "v1.0.25", + ) + go_repository( + name = "in_gopkg_errgo_v2", + importpath = "gopkg.in/errgo.v2", + sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=", + version = "v2.1.0", + ) + go_repository( + name = "in_gopkg_fsnotify_v1", + importpath = "gopkg.in/fsnotify.v1", + sum = "h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=", + version = "v1.4.7", + ) + go_repository( + name = "in_gopkg_gcfg_v1", + importpath = "gopkg.in/gcfg.v1", + sum = "h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=", + version = "v1.2.3", + ) + go_repository( + name = "in_gopkg_inconshreveable_log15_v2", + importpath = "gopkg.in/inconshreveable/log15.v2", + sum = "h1:RlWgLqCMMIYYEVcAR5MDsuHlVkaIPDAF+5Dehzg8L5A=", + version = "v2.0.0-20180818164646-67afb5ed74ec", + ) + go_repository( + name = "in_gopkg_inf_v0", + importpath = "gopkg.in/inf.v0", + sum = "h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=", + version = "v0.9.1", + ) + go_repository( + name = "in_gopkg_ini_v1", + importpath = "gopkg.in/ini.v1", + sum = "h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=", + version = "v1.62.0", + ) + go_repository( + name = "in_gopkg_olivere_elastic_v5", + importpath = "gopkg.in/olivere/elastic.v5", + sum = "h1:xFy6qRCGAmo5Wjx96srho9BitLhZl2fcnpuidPwduXM=", + version = "v5.0.86", + ) + go_repository( + name = "in_gopkg_resty_v1", + importpath = "gopkg.in/resty.v1", + sum = "h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=", + version = "v1.12.0", + ) + go_repository( + name = "in_gopkg_sourcemap_v1", + importpath = "gopkg.in/sourcemap.v1", + sum = "h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI=", + version = "v1.0.5", + ) + go_repository( + name = "in_gopkg_src_d_go_billy_v4", + importpath = "gopkg.in/src-d/go-billy.v4", + sum = "h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg=", + version = "v4.3.2", + ) + go_repository( + name = "in_gopkg_src_d_go_git_fixtures_v3", + importpath = "gopkg.in/src-d/go-git-fixtures.v3", + sum = "h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOAJK+LsJg=", + version = "v3.5.0", + ) + go_repository( + name = "in_gopkg_src_d_go_git_v4", + importpath = "gopkg.in/src-d/go-git.v4", + sum = "h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE=", + version = "v4.13.1", + ) + go_repository( + name = "in_gopkg_tomb_v1", + importpath = "gopkg.in/tomb.v1", + sum = "h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=", + version = "v1.0.0-20141024135613-dd632973f1e7", + ) + go_repository( + name = "in_gopkg_warnings_v0", + importpath = "gopkg.in/warnings.v0", + sum = "h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=", + version = "v0.1.2", + ) + go_repository( + name = "in_gopkg_yaml_v1", + importpath = "gopkg.in/yaml.v1", + sum = "h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU=", + version = "v1.0.0-20140924161607-9f9df34309c0", + ) + go_repository( + name = "in_gopkg_yaml_v2", + importpath = "gopkg.in/yaml.v2", + sum = "h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=", + version = "v2.4.0", + ) + go_repository( + name = "in_gopkg_yaml_v3", + importpath = "gopkg.in/yaml.v3", + sum = "h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=", + version = "v3.0.0-20200615113413-eeeca48fe776", + ) + go_repository( + name = "io_etcd_go_bbolt", + importpath = "go.etcd.io/bbolt", + sum = "h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk=", + version = "v1.3.3", + ) + go_repository( + name = "io_etcd_go_etcd", + importpath = "go.etcd.io/etcd", + sum = "h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0=", + version = "v0.0.0-20191023171146-3cf2f69b5738", + ) + go_repository( + name = "io_gorm_driver_postgres", + importpath = "gorm.io/driver/postgres", + sum = "h1:raX6ezL/ciUmaYTvOq48jq1GE95aMC0CmxQYbxQ4Ufw=", + version = "v1.0.5", + ) + go_repository( + name = "io_gorm_gorm", + importpath = "gorm.io/gorm", + sum = "h1:qa7tC1WcU+DBI/ZKMxvXy1FcrlGsvxlaKufHrT2qQ08=", + version = "v1.20.6", + ) + go_repository( + name = "io_k8s_api", + importpath = "k8s.io/api", + sum = "h1:gu5iGF4V6tfVCQ/R+8Hc0h7H1JuEhzyEi9S4R5LM8+Y=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_apimachinery", + importpath = "k8s.io/apimachinery", + sum = "h1:3Fx+41if+IRavNcKOz09FwEXDBG6ORh6iMsTSelhkMA=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_cli_runtime", + importpath = "k8s.io/cli-runtime", + sum = "h1:/V2Kkxtf6x5NI2z+Sd/mIrq4FQyQ8jzZAUD6N5RnN7Y=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_client_go", + importpath = "k8s.io/client-go", + sum = "h1:n0zzzJsAQmJngpC0IhgFcApZyoGXPrDIAD601HD09ag=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_code_generator", + importpath = "k8s.io/code-generator", + sum = "h1:LGWJOvkbBNpuRBqBRXUjzfvymUh7F/iR2KDpwLnqCM4=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_component_base", + importpath = "k8s.io/component-base", + sum = "h1:tLLGp4BBjQaCpS/KiuWh7m2xqvAdsxLm4ATxHSe5Zpg=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_component_helpers", + importpath = "k8s.io/component-helpers", + sum = "h1:SoWLsd63LI5uwofcHVSO4jtlmZEJRycfwNBKU4eAGPQ=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_gengo", + importpath = "k8s.io/gengo", + sum = "h1:Uusb3oh8XcdzDF/ndlI4ToKTYVlkCSJP39SRY2mfRAw=", + version = "v0.0.0-20201214224949-b6c5ce23f027", + ) + go_repository( + name = "io_k8s_klog", + importpath = "k8s.io/klog", + sum = "h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=", + version = "v1.0.0", + ) + go_repository( + name = "io_k8s_klog_v2", + importpath = "k8s.io/klog/v2", + sum = "h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts=", + version = "v2.8.0", + ) + go_repository( + name = "io_k8s_kube_openapi", + importpath = "k8s.io/kube-openapi", + sum = "h1:vEx13qjvaZ4yfObSSXW7BrMc/KQBBT/Jyee8XtLf4x0=", + version = "v0.0.0-20210305001622-591a79e4bda7", + ) + go_repository( + name = "io_k8s_kubectl", + importpath = "k8s.io/kubectl", + sum = "h1:WZXlnG/yjcE4LWO2g6ULjFxtzK6H1TKzsfaBFuVIhNg=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_metrics", + importpath = "k8s.io/metrics", + sum = "h1:uwS3CgheLKaw3PTpwhjMswnm/PMqeLbdLH88VI7FMQQ=", + version = "v0.21.0", + ) + go_repository( + name = "io_k8s_sigs_kustomize_api", + importpath = "sigs.k8s.io/kustomize/api", + sum = "h1:bfCXGXDAbFbb/Jv5AhMj2BB8a5VAJuuQ5/KU69WtDjQ=", + version = "v0.8.5", + ) + go_repository( + name = "io_k8s_sigs_kustomize_cmd_config", + importpath = "sigs.k8s.io/kustomize/cmd/config", + sum = "h1:xxvL/np/zYHVuCH1tNFehlyEtSW5oXjoI6ycejiyOwQ=", + version = "v0.9.7", + ) + go_repository( + name = "io_k8s_sigs_kustomize_kustomize_v4", + importpath = "sigs.k8s.io/kustomize/kustomize/v4", + sum = "h1:0xQWp03aKWilF6UJrupcA2rCoCn3jejkJ+m/CCI/Fis=", + version = "v4.0.5", + ) + go_repository( + name = "io_k8s_sigs_kustomize_kyaml", + importpath = "sigs.k8s.io/kustomize/kyaml", + sum = "h1:dSLgG78KyaxN4HylPXdK+7zB3k7sW6q3IcCmcfKA+aI=", + version = "v0.10.15", + ) + go_repository( + name = "io_k8s_sigs_structured_merge_diff", + importpath = "sigs.k8s.io/structured-merge-diff", + sum = "h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ=", + version = "v0.0.0-20190525122527-15d366b2352e", + ) + go_repository( + name = "io_k8s_sigs_structured_merge_diff_v3", + importpath = "sigs.k8s.io/structured-merge-diff/v3", + sum = "h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=", + version = "v3.0.0", + ) + go_repository( + name = "io_k8s_sigs_structured_merge_diff_v4", + importpath = "sigs.k8s.io/structured-merge-diff/v4", + sum = "h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8=", + version = "v4.1.0", + ) + go_repository( + name = "io_k8s_sigs_yaml", + importpath = "sigs.k8s.io/yaml", + sum = "h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=", + version = "v1.2.0", + ) + go_repository( + name = "io_k8s_utils", + importpath = "k8s.io/utils", + sum = "h1:CbnUZsM497iRC5QMVkHwyl8s2tB3g7yaSHkYPkpgelw=", + version = "v0.0.0-20201110183641-67b214c5f920", + ) + go_repository( + name = "io_opencensus_go", + importpath = "go.opencensus.io", + sum = "h1:dntmOdLpSpHlVqbW5Eay97DelsZHe+55D+xC6i0dDS0=", + version = "v0.22.5", + ) + go_repository( + name = "io_opencensus_go_contrib_exporter_stackdriver", + importpath = "contrib.go.opencensus.io/exporter/stackdriver", + sum = "h1:ksUxwH3OD5sxkjzEqGxNTl+Xjsmu3BnC/300MhSVTSc=", + version = "v0.13.4", + ) + go_repository( + name = "io_rsc_binaryregexp", + importpath = "rsc.io/binaryregexp", + sum = "h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=", + version = "v0.2.0", + ) + go_repository( + name = "io_rsc_quote_v3", + importpath = "rsc.io/quote/v3", + sum = "h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=", + version = "v3.1.0", + ) + go_repository( + name = "io_rsc_sampler", + importpath = "rsc.io/sampler", + sum = "h1:7i08f/p5TBU5joCPW3GjWG1ZFCmr28ybGqlXtelhEK8=", + version = "v1.99.99", + ) + go_repository( + name = "net_starlark_go", + importpath = "go.starlark.net", + sum = "h1:JPjLPz44y2N9mkzh2N344kTk1Y4/V4yJAjTrXGmzv8I=", + version = "v0.0.0-20201118183435-e55f603d8c79", + ) + go_repository( + name = "org_chromium_go_gae", + importpath = "go.chromium.org/gae", + sum = "h1:1Ia0zTIyW9IktCoEQOHPqlBsohu5n/Vzqmupj4B4tqg=", + version = "v0.0.0-20190826183307-50a499513efa", + ) + go_repository( + name = "org_chromium_go_luci", + importpath = "go.chromium.org/luci", + sum = "h1:Qe0s5XpxD36QC+7OVnc1Ce8igF3sfTo3f3ad4WKEpNo=", + version = "v0.0.0-20201121231857-b9ab316d7198", + ) + go_repository( + name = "org_go4", + importpath = "go4.org", + sum = "h1:+hE86LblG4AyDgwMCLTE6FOlM9+qjHSYS+rKqxUVdsM=", + version = "v0.0.0-20180809161055-417644f6feb5", + ) + go_repository( + name = "org_go4_grpc", + importpath = "grpc.go4.org", + sum = "h1:tmXTu+dfa+d9Evp8NpJdgOy6+rt8/x4yG7qPBrtNfLY=", + version = "v0.0.0-20170609214715-11d0a25b4919", + ) + go_repository( + name = "org_golang_google_api", + importpath = "google.golang.org/api", + sum = "h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo=", + version = "v0.35.0", + ) + go_repository( + name = "org_golang_google_appengine", + importpath = "google.golang.org/appengine", + sum = "h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=", + version = "v1.6.7", + ) + go_repository( + name = "org_golang_google_genproto", + importpath = "google.golang.org/genproto", + sum = "h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0=", + version = "v0.0.0-20201119123407-9b1e624d6bc4", + ) + go_repository( + name = "org_golang_google_grpc", + importpath = "google.golang.org/grpc", + sum = "h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=", + version = "v1.33.2", + ) + go_repository( + name = "org_golang_google_protobuf", + importpath = "google.golang.org/protobuf", + sum = "h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=", + version = "v1.25.0", + ) + go_repository( + name = "org_golang_x_build", + importpath = "golang.org/x/build", + sum = "h1:jjNoDZTS0vmbqBhqD5MPXauZW+kcGyflfDDFBNCPSVI=", + version = "v0.0.0-20191031202223-0706ea4fce0c", + ) + go_repository( + name = "org_golang_x_crypto", + importpath = "golang.org/x/crypto", + sum = "h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=", + version = "v0.0.0-20210220033148-5ea612d1eb83", + ) + go_repository( + name = "org_golang_x_exp", + importpath = "golang.org/x/exp", + sum = "h1:jqhIzSw5SQNkbu5hOGpgMHhkfXxrbsLJdkIRcX19gCY=", + version = "v0.0.0-20200228211341-fcea875c7e85", + ) + go_repository( + name = "org_golang_x_image", + importpath = "golang.org/x/image", + sum = "h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U=", + version = "v0.0.0-20191009234506-e7c1f5e7dbb8", + ) + go_repository( + name = "org_golang_x_lint", + importpath = "golang.org/x/lint", + sum = "h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=", + version = "v0.0.0-20200302205851-738671d3881b", + ) + go_repository( + name = "org_golang_x_mobile", + importpath = "golang.org/x/mobile", + sum = "h1:CrJ8+QyIm2tcw/zt9Rp/vGFsey+jndL1y5EnFwzgGOg=", + version = "v0.0.0-20191031020345-0945064e013a", + ) + go_repository( + name = "org_golang_x_mod", + importpath = "golang.org/x/mod", + sum = "h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=", + version = "v0.4.1", + ) + go_repository( + name = "org_golang_x_net", + importpath = "golang.org/x/net", + sum = "h1:OgUuv8lsRpBibGNbSizVwKWlysjaNzmC9gYMhPVfqFM=", + version = "v0.0.0-20210224082022-3d97a244fca7", + ) + go_repository( + name = "org_golang_x_oauth2", + importpath = "golang.org/x/oauth2", + sum = "h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo=", + version = "v0.0.0-20201109201403-9fd604954f58", + ) + go_repository( + name = "org_golang_x_perf", + importpath = "golang.org/x/perf", + sum = "h1:xYq6+9AtI+xP3M4r0N1hCkHrInHDBohhquRgx9Kk6gI=", + version = "v0.0.0-20180704124530-6e6d33e29852", + ) + go_repository( + name = "org_golang_x_sync", + importpath = "golang.org/x/sync", + sum = "h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=", + version = "v0.0.0-20201020160332-67f06af15bc9", + ) + go_repository( + name = "org_golang_x_sys", + importpath = "golang.org/x/sys", + sum = "h1:8qxJSnu+7dRq6upnbntrmriWByIakBuct5OM/MdQC1M=", + version = "v0.0.0-20210225134936-a50acf3fe073", + ) + go_repository( + name = "org_golang_x_term", + importpath = "golang.org/x/term", + sum = "h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE=", + version = "v0.0.0-20210220032956-6a3ed077a48d", + ) + go_repository( + name = "org_golang_x_text", + importpath = "golang.org/x/text", + sum = "h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=", + version = "v0.3.4", + ) + go_repository( + name = "org_golang_x_time", + importpath = "golang.org/x/time", + sum = "h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=", + version = "v0.0.0-20210220033141-f8bda1e9f3ba", + ) + go_repository( + name = "org_golang_x_tools", + importpath = "golang.org/x/tools", + sum = "h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=", + version = "v0.1.0", + ) + go_repository( + name = "org_golang_x_xerrors", + importpath = "golang.org/x/xerrors", + sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=", + version = "v0.0.0-20200804184101-5ec99f83aff1", + ) + go_repository( + name = "org_modernc_b", + importpath = "modernc.org/b", + sum = "h1:vpvqeyp17ddcQWF29Czawql4lDdABCDRbXRAS4+aF2o=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_db", + importpath = "modernc.org/db", + sum = "h1:2c6NdCfaLnshSvY7OU09cyAY0gYXUZj4lmg5ItHyucg=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_file", + importpath = "modernc.org/file", + sum = "h1:9/PdvjVxd5+LcWUQIfapAWRGOkDLK90rloa8s/au06A=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_fileutil", + importpath = "modernc.org/fileutil", + sum = "h1:Z1AFLZwl6BO8A5NldQg/xTSjGLetp+1Ubvl4alfGx8w=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_golex", + importpath = "modernc.org/golex", + sum = "h1:wWpDlbK8ejRfSyi0frMyhilD3JBvtcx2AdGDnU+JtsE=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_internal", + importpath = "modernc.org/internal", + sum = "h1:XMDsFDcBDsibbBnHB2xzljZ+B1yrOVLEFkKL2u15Glw=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_lldb", + importpath = "modernc.org/lldb", + sum = "h1:6vjDJxQEfhlOLwl4bhpwIz00uyFK4EmSYcbwqwbynsc=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_mathutil", + importpath = "modernc.org/mathutil", + sum = "h1:93vKjrJopTPrtTNpZ8XIovER7iCIH1QU7wNbOQXC60I=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_ql", + importpath = "modernc.org/ql", + sum = "h1:bIQ/trWNVjQPlinI6jdOQsi195SIturGo3mp5hsDqVU=", + version = "v1.0.0", + ) + go_repository( + name = "org_modernc_sortutil", + importpath = "modernc.org/sortutil", + sum = "h1:oP3U4uM+NT/qBQcbg/K2iqAX0Nx7B1b6YZtq3Gk/PjM=", + version = "v1.1.0", + ) + go_repository( + name = "org_modernc_strutil", + importpath = "modernc.org/strutil", + sum = "h1:+1/yCzZxY2pZwwrsbH+4T7BQMoLQ9QiBshRC9eicYsc=", + version = "v1.1.0", + ) + go_repository( + name = "org_modernc_zappy", + importpath = "modernc.org/zappy", + sum = "h1:dPVaP+3ueIUv4guk8PuZ2wiUGcJ1WUVvIheeSSTD0yk=", + version = "v1.0.0", + ) + go_repository( + name = "org_mongodb_go_mongo_driver", + importpath = "go.mongodb.org/mongo-driver", + sum = "h1:jxcFYjlkl8xaERsgLo+RNquI0epW6zuy/ZRQs6jnrFA=", + version = "v1.1.2", + ) + go_repository( + name = "org_skia_go_infra", + importpath = "go.skia.org/infra", + sum = "h1:4N5YfkJxnlEyzYRwMu4UrENUibFW7y/HaWDpf3qsUNU=", + version = "v0.0.0-20211123190342-9cd7cd57f7fb", + ) + go_repository( + name = "org_uber_go_atomic", + importpath = "go.uber.org/atomic", + sum = "h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=", + version = "v1.6.0", + ) + go_repository( + name = "org_uber_go_multierr", + importpath = "go.uber.org/multierr", + sum = "h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=", + version = "v1.5.0", + ) + go_repository( + name = "org_uber_go_tools", + importpath = "go.uber.org/tools", + sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=", + version = "v0.0.0-20190618225709-2cfd321de3ee", + ) + go_repository( + name = "org_uber_go_zap", + importpath = "go.uber.org/zap", + sum = "h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU=", + version = "v1.13.0", + ) + go_repository( + name = "tools_gotest_v3", + importpath = "gotest.tools/v3", + sum = "h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=", + version = "v3.0.3", + ) diff --git a/third_party/skia/include/OWNERS b/third_party/skia/include/OWNERS index 641bbef9bf91..2d6647f752cd 100644 --- a/third_party/skia/include/OWNERS +++ b/third_party/skia/include/OWNERS @@ -9,3 +9,8 @@ egdaniel@google.com # For revert purposes only rubber-stamper@appspot.gserviceaccount.com + +per-file BUILD.bazel=bungeman@google.com +per-file BUILD.bazel=jcgregorio@google.com +per-file BUILD.bazel=kjlubick@google.com +per-file BUILD.bazel=lovisolo@google.com \ No newline at end of file diff --git a/third_party/skia/include/android/BUILD.bazel b/third_party/skia/include/android/BUILD.bazel new file mode 100644 index 000000000000..0ee0f5aa7561 --- /dev/null +++ b/third_party/skia/include/android/BUILD.bazel @@ -0,0 +1,24 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkAndroidFrameworkUtils_hdr", + hdrs = ["SkAndroidFrameworkUtils.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRefCnt_hdr", + "//include/core:SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkAnimatedImage_hdr", + hdrs = ["SkAnimatedImage.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/codec:SkCodecAnimation_hdr", + "//include/core:SkBitmap_hdr", + "//include/core:SkDrawable_hdr", + "//include/core:SkMatrix_hdr", + "//include/core:SkRect_hdr", + ], +) diff --git a/third_party/skia/include/c/BUILD.bazel b/third_party/skia/include/c/BUILD.bazel new file mode 100644 index 000000000000..ffb4f7f6b55f --- /dev/null +++ b/third_party/skia/include/c/BUILD.bazel @@ -0,0 +1,91 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "sk_canvas_hdr", + hdrs = ["sk_canvas.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_colorspace_hdr", + hdrs = ["sk_colorspace.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_data_hdr", + hdrs = ["sk_data.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_image_hdr", + hdrs = ["sk_image.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_imageinfo_hdr", + hdrs = ["sk_imageinfo.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_maskfilter_hdr", + hdrs = ["sk_maskfilter.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_matrix_hdr", + hdrs = ["sk_matrix.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_paint_hdr", + hdrs = ["sk_paint.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_path_hdr", + hdrs = ["sk_path.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_picture_hdr", + hdrs = ["sk_picture.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_shader_hdr", + hdrs = ["sk_shader.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_surface_hdr", + hdrs = ["sk_surface.h"], + visibility = ["//:__subpackages__"], + deps = [":sk_types_hdr"], +) + +generated_cc_atom( + name = "sk_types_hdr", + hdrs = ["sk_types.h"], + visibility = ["//:__subpackages__"], +) diff --git a/third_party/skia/include/codec/BUILD.bazel b/third_party/skia/include/codec/BUILD.bazel new file mode 100644 index 000000000000..27db9c460b73 --- /dev/null +++ b/third_party/skia/include/codec/BUILD.bazel @@ -0,0 +1,47 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkAndroidCodec_hdr", + hdrs = ["SkAndroidCodec.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkCodec_hdr", + "//include/core:SkEncodedImageFormat_hdr", + "//include/core:SkStream_hdr", + "//include/core:SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkCodecAnimation_hdr", + hdrs = ["SkCodecAnimation.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "SkCodec_hdr", + hdrs = ["SkCodec.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkCodecAnimation_hdr", + ":SkEncodedOrigin_hdr", + "//include/core:SkColor_hdr", + "//include/core:SkEncodedImageFormat_hdr", + "//include/core:SkImageInfo_hdr", + "//include/core:SkPixmap_hdr", + "//include/core:SkSize_hdr", + "//include/core:SkStream_hdr", + "//include/core:SkTypes_hdr", + "//include/core:SkYUVAPixmaps_hdr", + "//include/private:SkEncodedInfo_hdr", + "//include/private:SkNoncopyable_hdr", + "//include/private:SkTemplates_hdr", + ], +) + +generated_cc_atom( + name = "SkEncodedOrigin_hdr", + hdrs = ["SkEncodedOrigin.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkMatrix_hdr"], +) diff --git a/third_party/skia/include/codec/SkCodec.h b/third_party/skia/include/codec/SkCodec.h index 4d47237e4bda..e7c7c0eaadb7 100644 --- a/third_party/skia/include/codec/SkCodec.h +++ b/third_party/skia/include/codec/SkCodec.h @@ -684,9 +684,21 @@ class SK_API SkCodec : SkNoncopyable { /** * Return info about a single frame. * - * Only supported by multi-frame images. Does not read through the stream, - * so it should be called after getFrameCount() to parse any frames that - * have not already been parsed. + * Does not read through the stream, so it should be called after + * getFrameCount() to parse any frames that have not already been parsed. + * + * Only supported by animated (multi-frame) codecs. Note that this is a + * property of the codec (the SkCodec subclass), not the image. + * + * To elaborate, some codecs support animation (e.g. GIF). Others do not + * (e.g. BMP). Animated codecs can still represent single frame images. + * Calling getFrameInfo(0, etc) will return true for a single frame GIF + * even if the overall image is not animated (in that the pixels on screen + * do not change over time). When incrementally decoding a GIF image, we + * might only know that there's a single frame *so far*. + * + * For non-animated SkCodec subclasses, it's sufficient but not necessary + * for this method to always return false. */ bool getFrameInfo(int index, FrameInfo* info) const { if (index < 0) { @@ -703,7 +715,8 @@ class SK_API SkCodec : SkNoncopyable { * * As such, future decoding calls may require a rewind. * - * For still (non-animated) image codecs, this will return an empty vector. + * This may return an empty vector for non-animated codecs. See the + * getFrameInfo(int, FrameInfo*) comment. */ std::vector getFrameInfo(); diff --git a/third_party/skia/include/config/BUILD.bazel b/third_party/skia/include/config/BUILD.bazel index 06bcaa7f7eff..ad2d64d7bbd7 100644 --- a/third_party/skia/include/config/BUILD.bazel +++ b/third_party/skia/include/config/BUILD.bazel @@ -1,8 +1,7 @@ -package(default_visibility = ["//:__subpackages__"]) +load("//bazel:macros.bzl", "generated_cc_atom") -filegroup( - name = "hdrs", - srcs = [ - "SkUserConfig.h", - ], +generated_cc_atom( + name = "SkUserConfig_hdr", + hdrs = ["SkUserConfig.h"], + visibility = ["//:__subpackages__"], ) diff --git a/third_party/skia/include/core/BUILD.bazel b/third_party/skia/include/core/BUILD.bazel index 462a6687c57f..c42ddfee4eff 100644 --- a/third_party/skia/include/core/BUILD.bazel +++ b/third_party/skia/include/core/BUILD.bazel @@ -1,8 +1,936 @@ -package(default_visibility = ["//visibility:public"]) +load("//bazel:macros.bzl", "generated_cc_atom") -filegroup( - name = "hdrs", - srcs = glob([ - "*.h", - ]), +generated_cc_atom( + name = "SkAnnotation_hdr", + hdrs = ["SkAnnotation.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkBBHFactory_hdr", + hdrs = ["SkBBHFactory.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRect_hdr", + ":SkRefCnt_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkBitmap_hdr", + hdrs = ["SkBitmap.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColor_hdr", + ":SkImageInfo_hdr", + ":SkMatrix_hdr", + ":SkPixmap_hdr", + ":SkPoint_hdr", + ":SkRefCnt_hdr", + ":SkShader_hdr", + ":SkTileMode_hdr", + ], +) + +generated_cc_atom( + name = "SkBlendMode_hdr", + hdrs = ["SkBlendMode.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkBlender_hdr", + hdrs = ["SkBlender.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlendMode_hdr", + ":SkFlattenable_hdr", + ], +) + +generated_cc_atom( + name = "SkBlurTypes_hdr", + hdrs = ["SkBlurTypes.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkCanvasVirtualEnforcer_hdr", + hdrs = ["SkCanvasVirtualEnforcer.h"], + visibility = ["//:__subpackages__"], + deps = [":SkCanvas_hdr"], +) + +generated_cc_atom( + name = "SkCanvas_hdr", + hdrs = ["SkCanvas.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlendMode_hdr", + ":SkClipOp_hdr", + ":SkColor_hdr", + ":SkFontTypes_hdr", + ":SkImageInfo_hdr", + ":SkM44_hdr", + ":SkMatrix_hdr", + ":SkPaint_hdr", + ":SkPoint_hdr", + ":SkRasterHandleAllocator_hdr", + ":SkRect_hdr", + ":SkRefCnt_hdr", + ":SkSamplingOptions_hdr", + ":SkScalar_hdr", + ":SkSize_hdr", + ":SkString_hdr", + ":SkSurfaceProps_hdr", + ":SkTypes_hdr", + "//include/private:SkDeque_hdr", + "//include/private:SkMacros_hdr", + ], +) + +generated_cc_atom( + name = "SkClipOp_hdr", + hdrs = ["SkClipOp.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkColorFilter_hdr", + hdrs = ["SkColorFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlendMode_hdr", + ":SkColor_hdr", + ":SkFlattenable_hdr", + ], +) + +generated_cc_atom( + name = "SkColorPriv_hdr", + hdrs = ["SkColorPriv.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColor_hdr", + ":SkMath_hdr", + "//include/private:SkTPin_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkColorSpace_hdr", + hdrs = ["SkColorSpace.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + "//include/private:SkFixed_hdr", + "//include/private:SkOnce_hdr", + "//include/third_party/skcms:skcms_hdr", + ], +) + +generated_cc_atom( + name = "SkColor_hdr", + hdrs = ["SkColor.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkImageInfo_hdr", + ":SkScalar_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkContourMeasure_hdr", + hdrs = ["SkContourMeasure.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPath_hdr", + ":SkRefCnt_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkCoverageMode_hdr", + hdrs = ["SkCoverageMode.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkCubicMap_hdr", + hdrs = ["SkCubicMap.h"], + visibility = ["//:__subpackages__"], + deps = [":SkPoint_hdr"], +) + +generated_cc_atom( + name = "SkDataTable_hdr", + hdrs = ["SkDataTable.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkData_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkData_hdr", + hdrs = ["SkData.h"], + visibility = ["//:__subpackages__"], + deps = [":SkRefCnt_hdr"], +) + +generated_cc_atom( + name = "SkDeferredDisplayListRecorder_hdr", + hdrs = ["SkDeferredDisplayListRecorder.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkDeferredDisplayList_hdr", + ":SkImageInfo_hdr", + ":SkImage_hdr", + ":SkRefCnt_hdr", + ":SkSurfaceCharacterization_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkDeferredDisplayList_hdr", + hdrs = ["SkDeferredDisplayList.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + ":SkSurfaceCharacterization_hdr", + ":SkTypes_hdr", + "//include/gpu:GrRecordingContext_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "SkDocument_hdr", + hdrs = ["SkDocument.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + ":SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkDrawLooper_hdr", + hdrs = ["SkDrawLooper.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlurTypes_hdr", + ":SkColor_hdr", + ":SkFlattenable_hdr", + ":SkPoint_hdr", + ], +) + +generated_cc_atom( + name = "SkDrawable_hdr", + hdrs = ["SkDrawable.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFlattenable_hdr", + ":SkImageInfo_hdr", + ":SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkEncodedImageFormat_hdr", + hdrs = ["SkEncodedImageFormat.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "SkExecutor_hdr", + hdrs = ["SkExecutor.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkFlattenable_hdr", + hdrs = ["SkFlattenable.h"], + visibility = ["//:__subpackages__"], + deps = [":SkRefCnt_hdr"], +) + +generated_cc_atom( + name = "SkFontArguments_hdr", + hdrs = ["SkFontArguments.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkScalar_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkFontMetrics_hdr", + hdrs = ["SkFontMetrics.h"], + visibility = ["//:__subpackages__"], + deps = [":SkScalar_hdr"], +) + +generated_cc_atom( + name = "SkFontMgr_hdr", + hdrs = ["SkFontMgr.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFontArguments_hdr", + ":SkFontStyle_hdr", + ":SkRefCnt_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkFontParameters_hdr", + hdrs = ["SkFontParameters.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkScalar_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkFontStyle_hdr", + hdrs = ["SkFontStyle.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkTypes_hdr", + "//include/private:SkTPin_hdr", + ], +) + +generated_cc_atom( + name = "SkFontTypes_hdr", + hdrs = ["SkFontTypes.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "SkFont_hdr", + hdrs = ["SkFont.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFontTypes_hdr", + ":SkScalar_hdr", + ":SkTypeface_hdr", + ], +) + +generated_cc_atom( + name = "SkGraphics_hdr", + hdrs = ["SkGraphics.h"], + visibility = ["//:__subpackages__"], + deps = [":SkRefCnt_hdr"], +) + +generated_cc_atom( + name = "SkICC_hdr", + hdrs = ["SkICC.h"], + visibility = ["//:__subpackages__"], + deps = [":SkData_hdr"], +) + +generated_cc_atom( + name = "SkImageEncoder_hdr", + hdrs = ["SkImageEncoder.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBitmap_hdr", + ":SkData_hdr", + ":SkEncodedImageFormat_hdr", + ":SkPixmap_hdr", + ":SkStream_hdr", + ], +) + +generated_cc_atom( + name = "SkImageFilter_hdr", + hdrs = ["SkImageFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFlattenable_hdr", + ":SkMatrix_hdr", + ":SkRect_hdr", + ], +) + +generated_cc_atom( + name = "SkImageGenerator_hdr", + hdrs = ["SkImageGenerator.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBitmap_hdr", + ":SkColor_hdr", + ":SkImageInfo_hdr", + ":SkImage_hdr", + ":SkYUVAPixmaps_hdr", + ], +) + +generated_cc_atom( + name = "SkImageInfo_hdr", + hdrs = ["SkImageInfo.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColorSpace_hdr", + ":SkMath_hdr", + ":SkRect_hdr", + ":SkSize_hdr", + "//include/private:SkTFitsIn_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkImage_hdr", + hdrs = ["SkImage.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkImageEncoder_hdr", + ":SkImageInfo_hdr", + ":SkM44_hdr", + ":SkRefCnt_hdr", + ":SkSamplingOptions_hdr", + ":SkScalar_hdr", + ":SkShader_hdr", + ":SkTileMode_hdr", + "//include/gpu:GrTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkM44_hdr", + hdrs = ["SkM44.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkMatrix_hdr", + ":SkRect_hdr", + ":SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkMallocPixelRef_hdr", + hdrs = ["SkMallocPixelRef.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPixelRef_hdr", + ":SkRefCnt_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkMaskFilter_hdr", + hdrs = ["SkMaskFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlurTypes_hdr", + ":SkCoverageMode_hdr", + ":SkFlattenable_hdr", + ":SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkMath_hdr", + hdrs = ["SkMath.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkMatrix_hdr", + hdrs = ["SkMatrix.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRect_hdr", + "//include/private:SkMacros_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkMilestone_hdr", + hdrs = ["SkMilestone.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "SkOverdrawCanvas_hdr", + hdrs = ["SkOverdrawCanvas.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkCanvasVirtualEnforcer_hdr", + "//include/utils:SkNWayCanvas_hdr", + ], +) + +generated_cc_atom( + name = "SkPaint_hdr", + hdrs = ["SkPaint.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlendMode_hdr", + ":SkColor_hdr", + ":SkRefCnt_hdr", + "//include/private:SkTOptional_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkPathBuilder_hdr", + hdrs = ["SkPathBuilder.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkMatrix_hdr", + ":SkPathTypes_hdr", + ":SkPath_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkPathEffect_hdr", + hdrs = ["SkPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFlattenable_hdr", + ":SkPath_hdr", + ":SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkPathMeasure_hdr", + hdrs = ["SkPathMeasure.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkContourMeasure_hdr", + ":SkPath_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkPathTypes_hdr", + hdrs = ["SkPathTypes.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkPath_hdr", + hdrs = ["SkPath.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkMatrix_hdr", + ":SkPathTypes_hdr", + "//include/private:SkPathRef_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkPictureRecorder_hdr", + hdrs = ["SkPictureRecorder.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBBHFactory_hdr", + ":SkPicture_hdr", + ":SkRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "SkPicture_hdr", + hdrs = ["SkPicture.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRect_hdr", + ":SkRefCnt_hdr", + ":SkSamplingOptions_hdr", + ":SkShader_hdr", + ":SkTileMode_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkPixelRef_hdr", + hdrs = ["SkPixelRef.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBitmap_hdr", + ":SkImageInfo_hdr", + ":SkPixmap_hdr", + ":SkRefCnt_hdr", + ":SkSize_hdr", + "//include/private:SkIDChangeListener_hdr", + "//include/private:SkMutex_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkPixmap_hdr", + hdrs = ["SkPixmap.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColor_hdr", + ":SkImageInfo_hdr", + ":SkSamplingOptions_hdr", + ], +) + +generated_cc_atom( + name = "SkPngChunkReader_hdr", + hdrs = ["SkPngChunkReader.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + ":SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkPoint3_hdr", + hdrs = ["SkPoint3.h"], + visibility = ["//:__subpackages__"], + deps = [":SkPoint_hdr"], +) + +generated_cc_atom( + name = "SkPoint_hdr", + hdrs = ["SkPoint.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkMath_hdr", + ":SkScalar_hdr", + "//include/private:SkSafe32_hdr", + ], +) + +generated_cc_atom( + name = "SkPromiseImageTexture_hdr", + hdrs = ["SkPromiseImageTexture.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + ":SkTypes_hdr", + "//include/gpu:GrBackendSurface_hdr", + "//include/private:GrResourceKey_hdr", + ], +) + +generated_cc_atom( + name = "SkRRect_hdr", + hdrs = ["SkRRect.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPoint_hdr", + ":SkRect_hdr", + ], +) + +generated_cc_atom( + name = "SkRSXform_hdr", + hdrs = ["SkRSXform.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPoint_hdr", + ":SkSize_hdr", + ], +) + +generated_cc_atom( + name = "SkRasterHandleAllocator_hdr", + hdrs = ["SkRasterHandleAllocator.h"], + visibility = ["//:__subpackages__"], + deps = [":SkImageInfo_hdr"], +) + +generated_cc_atom( + name = "SkRect_hdr", + hdrs = ["SkRect.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPoint_hdr", + ":SkSize_hdr", + "//include/private:SkSafe32_hdr", + "//include/private:SkTFitsIn_hdr", + ], +) + +generated_cc_atom( + name = "SkRefCnt_hdr", + hdrs = ["SkRefCnt.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkRegion_hdr", + hdrs = ["SkRegion.h"], + visibility = ["//:__subpackages__"], + deps = [":SkRect_hdr"], +) + +generated_cc_atom( + name = "SkSamplingOptions_hdr", + hdrs = ["SkSamplingOptions.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkScalar_hdr", + hdrs = ["SkScalar.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/private:SkFloatingPoint_hdr"], +) + +generated_cc_atom( + name = "SkSerialProcs_hdr", + hdrs = ["SkSerialProcs.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkImage_hdr", + ":SkPicture_hdr", + ":SkTypeface_hdr", + ], +) + +generated_cc_atom( + name = "SkShader_hdr", + hdrs = ["SkShader.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkBlendMode_hdr", + ":SkColor_hdr", + ":SkFlattenable_hdr", + ":SkImageInfo_hdr", + ":SkMatrix_hdr", + ":SkTileMode_hdr", + ], +) + +generated_cc_atom( + name = "SkSize_hdr", + hdrs = ["SkSize.h"], + visibility = ["//:__subpackages__"], + deps = [":SkScalar_hdr"], +) + +generated_cc_atom( + name = "SkSpan_hdr", + hdrs = ["SkSpan.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/private:SkTLogic_hdr"], +) + +generated_cc_atom( + name = "SkStream_hdr", + hdrs = ["SkStream.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkData_hdr", + ":SkRefCnt_hdr", + ":SkScalar_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkStringView_hdr", + hdrs = ["SkStringView.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "SkString_hdr", + hdrs = ["SkString.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRefCnt_hdr", + ":SkScalar_hdr", + ":SkTypes_hdr", + "//include/private:SkMalloc_hdr", + "//include/private:SkTArray_hdr", + "//include/private:SkTo_hdr", + ], +) + +generated_cc_atom( + name = "SkStrokeRec_hdr", + hdrs = ["SkStrokeRec.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkPaint_hdr", + "//include/private:SkMacros_hdr", + ], +) + +generated_cc_atom( + name = "SkSurfaceCharacterization_hdr", + hdrs = ["SkSurfaceCharacterization.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColorSpace_hdr", + ":SkImageInfo_hdr", + ":SkRefCnt_hdr", + ":SkSurfaceProps_hdr", + "//include/gpu:GrBackendSurface_hdr", + "//include/gpu:GrContextThreadSafeProxy_hdr", + "//include/gpu:GrTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkSurfaceProps_hdr", + hdrs = ["SkSurfaceProps.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkSurface_hdr", + hdrs = ["SkSurface.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkImage_hdr", + ":SkPixmap_hdr", + ":SkRefCnt_hdr", + ":SkSurfaceProps_hdr", + "//include/gpu:GrTypes_hdr", + "//include/gpu/mtl:GrMtlTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkSwizzle_hdr", + hdrs = ["SkSwizzle.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkTextBlob_hdr", + hdrs = ["SkTextBlob.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFont_hdr", + ":SkPaint_hdr", + ":SkRefCnt_hdr", + ":SkString_hdr", + "//include/private:SkTemplates_hdr", + ], +) + +generated_cc_atom( + name = "SkTileMode_hdr", + hdrs = ["SkTileMode.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkTime_hdr", + hdrs = ["SkTime.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkTypes_hdr", + "//include/private:SkMacros_hdr", + ], +) + +generated_cc_atom( + name = "SkTraceMemoryDump_hdr", + hdrs = ["SkTraceMemoryDump.h"], + visibility = ["//:__subpackages__"], + deps = [":SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkTypeface_hdr", + hdrs = ["SkTypeface.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkFontArguments_hdr", + ":SkFontParameters_hdr", + ":SkFontStyle_hdr", + ":SkFontTypes_hdr", + ":SkRect_hdr", + ":SkString_hdr", + "//include/private:SkOnce_hdr", + "//include/private:SkWeakRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "SkTypes_hdr", + hdrs = ["SkTypes.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/config:SkUserConfig_hdr"], +) + +generated_cc_atom( + name = "SkUnPreMultiply_hdr", + hdrs = ["SkUnPreMultiply.h"], + visibility = ["//:__subpackages__"], + deps = [":SkColor_hdr"], +) + +generated_cc_atom( + name = "SkVertices_hdr", + hdrs = ["SkVertices.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColor_hdr", + ":SkRect_hdr", + ":SkRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "SkYUVAInfo_hdr", + hdrs = ["SkYUVAInfo.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkImageInfo_hdr", + ":SkSize_hdr", + "//include/codec:SkEncodedOrigin_hdr", + ], +) + +generated_cc_atom( + name = "SkYUVAPixmaps_hdr", + hdrs = ["SkYUVAPixmaps.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkData_hdr", + ":SkImageInfo_hdr", + ":SkPixmap_hdr", + ":SkYUVAInfo_hdr", + "//include/private:SkTo_hdr", + ], ) diff --git a/third_party/skia/include/core/SkCanvas.h b/third_party/skia/include/core/SkCanvas.h index d68f25c00988..505b3e08c2f5 100644 --- a/third_party/skia/include/core/SkCanvas.h +++ b/third_party/skia/include/core/SkCanvas.h @@ -40,6 +40,7 @@ class AutoLayerForImageFilter; class GrBackendRenderTarget; class GrRecordingContext; +class GrSlug; class SkBaseDevice; class SkBitmap; class SkData; @@ -50,7 +51,6 @@ class SkGlyphRunBuilder; class SkGlyphRunList; class SkImage; class SkImageFilter; -class SkMarkerStack; class SkPaintFilterCanvas; class SkPath; class SkPicture; @@ -647,8 +647,6 @@ class SK_API SkCanvas { enum SaveLayerFlagsSet { kPreserveLCDText_SaveLayerFlag = 1 << 1, kInitWithPrevious_SaveLayerFlag = 1 << 2, //!< initializes with previous contents - kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag = - 1 << 3, //!< experimental: do not use // instead of matching previous layer's colortype, use F16 kF16ColorType = 1 << 4, }; @@ -868,20 +866,6 @@ class SK_API SkCanvas { void concat(const SkMatrix& matrix); void concat(const SkM44&); - /** - * Record a marker (provided by caller) for the current CTM. This does not change anything - * about the ctm or clip, but does "name" this matrix value, so it can be referenced by - * custom effects (who access it by specifying the same name). - * - * Within a save frame, marking with the same name more than once just replaces the previous - * value. However, between save frames, marking with the same name does not lose the marker - * in the previous save frame. It is "visible" when the current save() is balanced with - * a restore(). - */ - void markCTM(const char* name); - - bool findMarkedCTM(const char* name, SkM44*) const; - /** Replaces SkMatrix with matrix. Unlike concat(), any prior matrix state is overwritten. @@ -1937,54 +1921,45 @@ class SK_API SkCanvas { If paint contains an SkShader and vertices does not contain texCoords, the shader is mapped using the vertices' positions. - If vertices colors are defined in vertices, and SkPaint paint contains SkShader, - SkBlendMode mode combines vertices colors with SkShader. + SkBlendMode is ignored if SkVertices does not have colors. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated vertex colors as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. @param vertices triangle mesh to draw - @param mode combines vertices colors with SkShader, if both are present - @param paint specifies the SkShader, used as SkVertices texture; may be nullptr + @param mode combines vertices' colors with SkShader if present or SkPaint opaque color + if not. Ignored if the vertices do not contain color. + @param paint specifies the SkShader, used as SkVertices texture, and SkColorFilter. example: https://fiddle.skia.org/c/@Canvas_drawVertices */ void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint); - /** Variant of 3-parameter drawVertices, using the default of Modulate for the blend - * parameter. Note that SkVertices that include per-vertex-data ignore this mode parameter. - */ - void drawVertices(const SkVertices* vertices, const SkPaint& paint) { - this->drawVertices(vertices, SkBlendMode::kModulate, paint); - } - /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix. If paint contains an SkShader and vertices does not contain texCoords, the shader is mapped using the vertices' positions. - If vertices colors are defined in vertices, and SkPaint paint contains SkShader, - SkBlendMode mode combines vertices colors with SkShader. + SkBlendMode is ignored if SkVertices does not have colors. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated vertex colors as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. @param vertices triangle mesh to draw - @param mode combines vertices colors with SkShader, if both are present + @param mode combines vertices' colors with SkShader if present or SkPaint opaque color + if not. Ignored if the vertices do not contain color. @param paint specifies the SkShader, used as SkVertices texture, may be nullptr example: https://fiddle.skia.org/c/@Canvas_drawVertices_2 */ void drawVertices(const sk_sp& vertices, SkBlendMode mode, const SkPaint& paint); - /** Variant of 3-parameter drawVertices, using the default of Modulate for the blend - * parameter. Note that SkVertices that include per-vertex-data ignore this mode parameter. - */ - void drawVertices(const sk_sp& vertices, const SkPaint& paint) { - this->drawVertices(vertices, SkBlendMode::kModulate, paint); - } - /** Draws a Coons patch: the interpolation of four cubics with shared corners, associating a color, and optionally a texture SkPoint, with each corner. - Coons patch uses clip and SkMatrix, paint SkShader, SkColorFilter, - alpha, SkImageFilter, and SkBlendMode. If SkShader is provided it is treated - as Coons patch texture; SkBlendMode mode combines color colors and SkShader if - both are provided. - SkPoint array cubics specifies four SkPath cubic starting at the top-left corner, in clockwise order, sharing every fourth point. The last SkPath cubic ends at the first point. @@ -1996,51 +1971,31 @@ class SK_API SkCanvas { corners in top-left, top-right, bottom-right, bottom-left order. If texCoords is nullptr, SkShader is mapped using positions (derived from cubics). - @param cubics SkPath cubic array, sharing common points - @param colors color array, one for each corner - @param texCoords SkPoint array of texture coordinates, mapping SkShader to corners; - may be nullptr - @param mode SkBlendMode for colors, and for SkShader if paint has one - @param paint SkShader, SkColorFilter, SkBlendMode, used to draw - */ - void drawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint); - - /** Draws SkPath cubic Coons patch: the interpolation of four cubics with shared corners, - associating a color, and optionally a texture SkPoint, with each corner. + SkBlendMode is ignored if colors is null. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated patch colors as the dst. - Coons patch uses clip and SkMatrix, paint SkShader, SkColorFilter, - alpha, SkImageFilter, and SkBlendMode. If SkShader is provided it is treated - as Coons patch texture; SkBlendMode mode combines color colors and SkShader if - both are provided. - - SkPoint array cubics specifies four SkPath cubic starting at the top-left corner, - in clockwise order, sharing every fourth point. The last SkPath cubic ends at the - first point. - - Color array color associates colors with corners in top-left, top-right, - bottom-right, bottom-left order. - - If paint contains SkShader, SkPoint array texCoords maps SkShader as texture to - corners in top-left, top-right, bottom-right, bottom-left order. If texCoords is - nullptr, SkShader is mapped using positions (derived from cubics). + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. @param cubics SkPath cubic array, sharing common points @param colors color array, one for each corner @param texCoords SkPoint array of texture coordinates, mapping SkShader to corners; may be nullptr + @param mode combines patch's colors with SkShader if present or SkPaint opaque color + if not. Ignored if colors is null. @param paint SkShader, SkColorFilter, SkBlendMode, used to draw */ void drawPatch(const SkPoint cubics[12], const SkColor colors[4], - const SkPoint texCoords[4], const SkPaint& paint) { - this->drawPatch(cubics, colors, texCoords, SkBlendMode::kModulate, paint); - } + const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint); /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode to draw, if present. For each entry in the array, SkRect tex locates sprite in atlas, and SkRSXform xform transforms it into destination space. + SkMaskFilter and SkPathEffect on paint are ignored. + xform, tex, and colors if present, must contain count entries. Optional colors are applied for each sprite using SkBlendMode mode, treating sprite as source and colors as destination. @@ -2216,7 +2171,6 @@ class SK_API SkCanvas { virtual void willRestore() {} virtual void didRestore() {} - virtual void onMarkCTM(const char*) {} virtual void didConcat44(const SkM44&) {} virtual void didSetM44(const SkM44&) {} virtual void didTranslate(SkScalar, SkScalar) {} @@ -2287,6 +2241,17 @@ class SK_API SkCanvas { virtual void onDiscard(); +#if SK_SUPPORT_GPU + /** Experimental + */ + virtual sk_sp doConvertBlobToSlug( + const SkTextBlob& blob, SkPoint origin, const SkPaint& paint); + + /** Experimental + */ + virtual void doDrawSlug(GrSlug* slug); +#endif + private: enum ShaderOverrideOpacity { @@ -2372,8 +2337,6 @@ class SK_API SkCanvas { // points to top of stack MCRec* fMCRec; - sk_sp fMarkerStack; - // the first N recs that can fit here mean we won't call malloc #if defined(STARBOARD) // Cobalt uses various compilers, set a safe larger size. @@ -2429,6 +2392,19 @@ class SK_API SkCanvas { SkCanvas& operator=(SkCanvas&&) = delete; SkCanvas& operator=(const SkCanvas&) = delete; +#if SK_SUPPORT_GPU + friend class GrSlug; + /** Experimental + * Convert a SkTextBlob to a GrSlug using the current canvas state. + */ + sk_sp convertBlobToSlug(const SkTextBlob& blob, SkPoint origin, const SkPaint& paint); + + /** Experimental + * Draw an GrSlug given the current canvas state. + */ + void drawSlug(GrSlug* slug); +#endif + /** Experimental * Saves the specified subset of the current pixels in the current layer, * and then clears those pixels to transparent black. diff --git a/third_party/skia/include/core/SkData.h b/third_party/skia/include/core/SkData.h index 1b74ad0d0c79..136740851fdd 100644 --- a/third_party/skia/include/core/SkData.h +++ b/third_party/skia/include/core/SkData.h @@ -8,9 +8,7 @@ #ifndef SkData_DEFINED #define SkData_DEFINED -#if !defined(STARBOARD) #include -#endif #include "include/core/SkRefCnt.h" #include "src/core/SkOSFile.h" // Included for SkFile. @@ -89,6 +87,12 @@ class SK_API SkData final : public SkNVRefCnt { */ static sk_sp MakeUninitialized(size_t length); + /** + * Create a new data with zero-initialized contents. The caller should call writable_data() + * to write into the buffer, but this must be done before another ref() is made. + */ + static sk_sp MakeZeroInitialized(size_t length); + /** * Create a new dataref by copying the specified c-string * (a null-terminated array of bytes). The returned SkData will have size() diff --git a/third_party/skia/include/core/SkImage.h b/third_party/skia/include/core/SkImage.h index bd48124e2e23..81fdd9fd48c4 100644 --- a/third_party/skia/include/core/SkImage.h +++ b/third_party/skia/include/core/SkImage.h @@ -16,6 +16,7 @@ #include "include/core/SkScalar.h" #include "include/core/SkShader.h" #include "include/core/SkTileMode.h" +#include "include/private/SkTOptional.h" #if SK_SUPPORT_GPU #include "include/gpu/GrTypes.h" #endif @@ -167,23 +168,24 @@ class SK_API SkImage : public SkRefCnt { * CPU or on the GPU, depending on where the image is drawn. If memory is low, the cache may * be purged, causing the next draw of the image to have to re-decode. * - * The subset parameter specifies a area within the decoded image to create the image from. - * If subset is null, then the entire image is returned. + * If alphaType is nullopt, the image's alpha type will be chosen automatically based on the + * image format. Transparent images will default to kPremul_SkAlphaType. If alphaType contains + * kPremul_SkAlphaType or kUnpremul_SkAlphaType, that alpha type will be used. Forcing opaque + * (passing kOpaque_SkAlphaType) is not allowed, and will return nullptr. * * This is similar to DecodeTo[Raster,Texture], but this method will attempt to defer the * actual decode, while the DecodeTo... method explicitly decode and allocate the backend * when the call is made. * - * If the encoded format is not supported, or subset is outside of the bounds of the decoded - * image, nullptr is returned. + * If the encoded format is not supported, nullptr is returned. * * @param encoded the encoded data - * @param length the number of bytes of encoded data * @return created SkImage, or nullptr example: https://fiddle.skia.org/c/@Image_MakeFromEncoded */ - static sk_sp MakeFromEncoded(sk_sp encoded); + static sk_sp MakeFromEncoded(sk_sp encoded, + skstd::optional alphaType = skstd::nullopt); /* * Experimental: @@ -680,6 +682,34 @@ class SK_API SkImage : public SkRefCnt { return this->makeShader(SkTileMode::kClamp, SkTileMode::kClamp, sampling, lm); } + /** + * makeRawShader functions like makeShader, but for images that contain non-color data. + * This includes images encoding things like normals, material properties (eg, roughness), + * heightmaps, or any other purely mathematical data that happens to be stored in an image. + * These types of images are useful with some programmable shaders (see: SkRuntimeEffect). + * + * Raw image shaders work like regular image shaders (including filtering and tiling), with + * a few major differences: + * - No color space transformation is ever applied (the color space of the image is ignored). + * - Images with an alpha type of kUnpremul are *not* automatically premultiplied. + * - Bicubic filtering is not supported. If SkSamplingOptions::useCubic is true, these + * factories will return nullptr. + */ + sk_sp makeRawShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions&, + const SkMatrix* localMatrix = nullptr) const; + + sk_sp makeRawShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions& sampling, + const SkMatrix& lm) const { + return this->makeRawShader(tmx, tmy, sampling, &lm); + } + sk_sp makeRawShader(const SkSamplingOptions& sampling, const SkMatrix& lm) const { + return this->makeRawShader(SkTileMode::kClamp, SkTileMode::kClamp, sampling, &lm); + } + sk_sp makeRawShader(const SkSamplingOptions& sampling, + const SkMatrix* lm = nullptr) const { + return this->makeRawShader(SkTileMode::kClamp, SkTileMode::kClamp, sampling, lm); + } + using CubicResampler = SkCubicResampler; /** Copies SkImage pixel address, row bytes, and SkImageInfo to pixmap, if address diff --git a/third_party/skia/include/core/SkImageGenerator.h b/third_party/skia/include/core/SkImageGenerator.h index 962ecebad648..73c8e36b82c3 100644 --- a/third_party/skia/include/core/SkImageGenerator.h +++ b/third_party/skia/include/core/SkImageGenerator.h @@ -13,6 +13,7 @@ #include "include/core/SkImage.h" #include "include/core/SkImageInfo.h" #include "include/core/SkYUVAPixmaps.h" +#include "include/private/SkTOptional.h" class GrRecordingContext; class GrSurfaceProxyView; @@ -152,8 +153,12 @@ class SK_API SkImageGenerator { * If the default image decoder system can interpret the specified (encoded) data, then * this returns a new ImageGenerator for it. Otherwise this returns NULL. Either way * the caller is still responsible for managing their ownership of the data. + * By default, images will be converted to premultiplied pixels. The alpha type can be + * overridden by specifying kPremul_SkAlphaType or kUnpremul_SkAlphaType. Specifying + * kOpaque_SkAlphaType is not supported, and will return NULL. */ - static std::unique_ptr MakeFromEncoded(sk_sp); + static std::unique_ptr MakeFromEncoded( + sk_sp, skstd::optional = skstd::nullopt); /** Return a new image generator backed by the specified picture. If the size is empty or * the picture is NULL, this returns NULL. @@ -192,7 +197,8 @@ class SK_API SkImageGenerator { // This is our default impl, which may be different on different platforms. // It is called from NewFromEncoded() after it has checked for any runtime factory. // The SkData will never be NULL, as that will have been checked by NewFromEncoded. - static std::unique_ptr MakeFromEncodedImpl(sk_sp); + static std::unique_ptr MakeFromEncodedImpl(sk_sp, + skstd::optional); SkImageGenerator(SkImageGenerator&&) = delete; SkImageGenerator(const SkImageGenerator&) = delete; diff --git a/third_party/skia/include/core/SkMilestone.h b/third_party/skia/include/core/SkMilestone.h index 6c7e8b83f25f..70106c8db3fd 100644 --- a/third_party/skia/include/core/SkMilestone.h +++ b/third_party/skia/include/core/SkMilestone.h @@ -5,5 +5,5 @@ * found in the LICENSE file. */ #ifndef SK_MILESTONE -#define SK_MILESTONE 97 +#define SK_MILESTONE 98 #endif diff --git a/third_party/skia/include/core/SkRect.h b/third_party/skia/include/core/SkRect.h index 6ef1f864ede1..99efe70bc71d 100644 --- a/third_party/skia/include/core/SkRect.h +++ b/third_party/skia/include/core/SkRect.h @@ -108,66 +108,66 @@ struct SK_API SkIRect { @return fLeft */ - int32_t left() const { return fLeft; } + constexpr int32_t left() const { return fLeft; } /** Returns top edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fTop */ - int32_t top() const { return fTop; } + constexpr int32_t top() const { return fTop; } /** Returns right edge of SkIRect, if sorted. Call sort() to reverse fLeft and fRight if needed. @return fRight */ - int32_t right() const { return fRight; } + constexpr int32_t right() const { return fRight; } /** Returns bottom edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fBottom */ - int32_t bottom() const { return fBottom; } + constexpr int32_t bottom() const { return fBottom; } /** Returns left edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, and sort() to reverse fLeft and fRight if needed. @return fLeft */ - int32_t x() const { return fLeft; } + constexpr int32_t x() const { return fLeft; } /** Returns top edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fTop */ - int32_t y() const { return fTop; } + constexpr int32_t y() const { return fTop; } // Experimental - SkIPoint topLeft() const { return {fLeft, fTop}; } + constexpr SkIPoint topLeft() const { return {fLeft, fTop}; } /** Returns span on the x-axis. This does not check if SkIRect is sorted, or if result fits in 32-bit signed integer; result may be negative. @return fRight minus fLeft */ - int32_t width() const { return Sk32_can_overflow_sub(fRight, fLeft); } + constexpr int32_t width() const { return Sk32_can_overflow_sub(fRight, fLeft); } /** Returns span on the y-axis. This does not check if SkIRect is sorted, or if result fits in 32-bit signed integer; result may be negative. @return fBottom minus fTop */ - int32_t height() const { return Sk32_can_overflow_sub(fBottom, fTop); } + constexpr int32_t height() const { return Sk32_can_overflow_sub(fBottom, fTop); } /** Returns spans on the x-axis and y-axis. This does not check if SkIRect is sorted, or if result fits in 32-bit signed integer; result may be negative. @return SkISize (width, height) */ - SkISize size() const { return SkISize::Make(this->width(), this->height()); } + constexpr SkISize size() const { return SkISize::Make(this->width(), this->height()); } /** Returns span on the x-axis. This does not check if SkIRect is sorted, so the result may be negative. This is safer than calling width() since width() might @@ -175,7 +175,7 @@ struct SK_API SkIRect { @return fRight minus fLeft cast to int64_t */ - int64_t width64() const { return (int64_t)fRight - (int64_t)fLeft; } + constexpr int64_t width64() const { return (int64_t)fRight - (int64_t)fLeft; } /** Returns span on the y-axis. This does not check if SkIRect is sorted, so the result may be negative. This is safer than calling height() since height() might @@ -183,7 +183,7 @@ struct SK_API SkIRect { @return fBottom minus fTop cast to int64_t */ - int64_t height64() const { return (int64_t)fBottom - (int64_t)fTop; } + constexpr int64_t height64() const { return (int64_t)fBottom - (int64_t)fTop; } /** Returns true if fLeft is equal to or greater than fRight, or if fTop is equal to or greater than fBottom. Call sort() to reverse rectangles with negative @@ -727,56 +727,56 @@ struct SK_API SkRect { @return fLeft */ - SkScalar x() const { return fLeft; } + constexpr SkScalar x() const { return fLeft; } /** Returns top edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fTop */ - SkScalar y() const { return fTop; } + constexpr SkScalar y() const { return fTop; } /** Returns left edge of SkRect, if sorted. Call isSorted() to see if SkRect is valid. Call sort() to reverse fLeft and fRight if needed. @return fLeft */ - SkScalar left() const { return fLeft; } + constexpr SkScalar left() const { return fLeft; } /** Returns top edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fTop */ - SkScalar top() const { return fTop; } + constexpr SkScalar top() const { return fTop; } /** Returns right edge of SkRect, if sorted. Call isSorted() to see if SkRect is valid. Call sort() to reverse fLeft and fRight if needed. @return fRight */ - SkScalar right() const { return fRight; } + constexpr SkScalar right() const { return fRight; } /** Returns bottom edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, and sort() to reverse fTop and fBottom if needed. @return fBottom */ - SkScalar bottom() const { return fBottom; } + constexpr SkScalar bottom() const { return fBottom; } /** Returns span on the x-axis. This does not check if SkRect is sorted, or if result fits in 32-bit float; result may be negative or infinity. @return fRight minus fLeft */ - SkScalar width() const { return fRight - fLeft; } + constexpr SkScalar width() const { return fRight - fLeft; } /** Returns span on the y-axis. This does not check if SkRect is sorted, or if result fits in 32-bit float; result may be negative or infinity. @return fBottom minus fTop */ - SkScalar height() const { return fBottom - fTop; } + constexpr SkScalar height() const { return fBottom - fTop; } /** Returns average of left edge and right edge. Result does not change if SkRect is sorted. Result may overflow to infinity if SkRect is far from the origin. diff --git a/third_party/skia/include/core/SkStream.h b/third_party/skia/include/core/SkStream.h index 8455036036b8..ecf0026e9df9 100644 --- a/third_party/skia/include/core/SkStream.h +++ b/third_party/skia/include/core/SkStream.h @@ -297,6 +297,8 @@ class SK_API SkNullWStream : public SkWStream { //////////////////////////////////////////////////////////////////////////////////////// +#include + /** A stream that wraps a C FILE* file stream. */ class SK_API SkFILEStream : public SkStreamAsset { public: diff --git a/third_party/skia/include/core/SkSurface.h b/third_party/skia/include/core/SkSurface.h index 557dd377bf71..3718aaaab570 100644 --- a/third_party/skia/include/core/SkSurface.h +++ b/third_party/skia/include/core/SkSurface.h @@ -13,7 +13,9 @@ #include "include/core/SkRefCnt.h" #include "include/core/SkSurfaceProps.h" +#if SK_SUPPORT_GPU #include "include/gpu/GrTypes.h" +#endif #if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26 #include @@ -34,6 +36,7 @@ class GrBackendTexture; class GrDirectContext; class GrRecordingContext; class GrRenderTarget; +enum GrSurfaceOrigin: int; /** \class SkSurface SkSurface is responsible for managing the pixels that a canvas draws into. The pixels can be @@ -249,90 +252,6 @@ class SK_API SkSurface : public SkRefCnt { RenderTargetReleaseProc releaseProc = nullptr, ReleaseContext releaseContext = nullptr); -#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26 - /** Private. - Creates SkSurface from Android hardware buffer. - Returned SkSurface takes a reference on the buffer. The ref on the buffer will be released - when the SkSurface is destroyed and there is no pending work on the GPU involving the - buffer. - - Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. - - Currently this is only supported for buffers that can be textured as well as rendered to. - In other words that must have both AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT and - AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE usage bits. - - @param context GPU context - @param hardwareBuffer AHardwareBuffer Android hardware buffer - @param colorSpace range of colors; may be nullptr - @param surfaceProps LCD striping orientation and setting for device independent - fonts; may be nullptr - @return created SkSurface, or nullptr - */ - static sk_sp MakeFromAHardwareBuffer(GrDirectContext* context, - AHardwareBuffer* hardwareBuffer, - GrSurfaceOrigin origin, - sk_sp colorSpace, - const SkSurfaceProps* surfaceProps); -#endif - -#ifdef SK_METAL - /** Creates SkSurface from CAMetalLayer. - Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be - released when the SkSurface is destroyed. - - Only available when Metal API is enabled. - - Will grab the current drawable from the layer and use its texture as a backendRT to - create a renderable surface. - - @param context GPU context - @param layer GrMTLHandle (expected to be a CAMetalLayer*) - @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing - @param colorSpace range of colors; may be nullptr - @param surfaceProps LCD striping orientation and setting for device independent - fonts; may be nullptr - @param drawable Pointer to drawable to be filled in when this surface is - instantiated; may not be nullptr - @return created SkSurface, or nullptr - */ - static sk_sp MakeFromCAMetalLayer(GrRecordingContext* context, - GrMTLHandle layer, - GrSurfaceOrigin origin, - int sampleCnt, - SkColorType colorType, - sk_sp colorSpace, - const SkSurfaceProps* surfaceProps, - GrMTLHandle* drawable) - SK_API_AVAILABLE_CA_METAL_LAYER; - - /** Creates SkSurface from MTKView. - Returned SkSurface takes a reference on the MTKView. The ref on the layer will be - released when the SkSurface is destroyed. - - Only available when Metal API is enabled. - - Will grab the current drawable from the layer and use its texture as a backendRT to - create a renderable surface. - - @param context GPU context - @param layer GrMTLHandle (expected to be a MTKView*) - @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing - @param colorSpace range of colors; may be nullptr - @param surfaceProps LCD striping orientation and setting for device independent - fonts; may be nullptr - @return created SkSurface, or nullptr - */ - static sk_sp MakeFromMTKView(GrRecordingContext* context, - GrMTLHandle mtkView, - GrSurfaceOrigin origin, - int sampleCnt, - SkColorType colorType, - sk_sp colorSpace, - const SkSurfaceProps* surfaceProps) - SK_API_AVAILABLE(macos(10.11), ios(9.0)); -#endif - /** Returns SkSurface on GPU indicated by context. Allocates memory for pixels, based on the width, height, and SkColorType in SkImageInfo. budgeted selects whether allocation for pixels is tracked by context. imageInfo @@ -389,8 +308,13 @@ class SK_API SkSurface : public SkRefCnt { static sk_sp MakeRenderTarget(GrRecordingContext* context, SkBudgeted budgeted, const SkImageInfo& imageInfo, int sampleCount, const SkSurfaceProps* surfaceProps) { +#if SK_SUPPORT_GPU return MakeRenderTarget(context, budgeted, imageInfo, sampleCount, kBottomLeft_GrSurfaceOrigin, surfaceProps); +#else + // TODO(kjlubick, scroggo) Remove this once Android is updated. + return nullptr; +#endif } /** Returns SkSurface on GPU indicated by context. Allocates memory for @@ -408,11 +332,16 @@ class SK_API SkSurface : public SkRefCnt { */ static sk_sp MakeRenderTarget(GrRecordingContext* context, SkBudgeted budgeted, const SkImageInfo& imageInfo) { +#if SK_SUPPORT_GPU if (!imageInfo.width() || !imageInfo.height()) { return nullptr; } return MakeRenderTarget(context, budgeted, imageInfo, 0, kBottomLeft_GrSurfaceOrigin, nullptr); +#else + // TODO(kjlubick, scroggo) Remove this once Android is updated. + return nullptr; +#endif } /** Returns SkSurface on GPU indicated by context that is compatible with the provided @@ -426,6 +355,97 @@ class SK_API SkSurface : public SkRefCnt { const SkSurfaceCharacterization& characterization, SkBudgeted budgeted); + +#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26 + /** Private. + Creates SkSurface from Android hardware buffer. + Returned SkSurface takes a reference on the buffer. The ref on the buffer will be released + when the SkSurface is destroyed and there is no pending work on the GPU involving the + buffer. + + Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. + + Currently this is only supported for buffers that can be textured as well as rendered to. + In other words that must have both AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT and + AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE usage bits. + + @param context GPU context + @param hardwareBuffer AHardwareBuffer Android hardware buffer + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param fromWindow Whether or not the AHardwareBuffer is part of an Android Window. + Currently only used with Vulkan backend. + @return created SkSurface, or nullptr + */ + static sk_sp MakeFromAHardwareBuffer(GrDirectContext* context, + AHardwareBuffer* hardwareBuffer, + GrSurfaceOrigin origin, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + , bool fromWindow = false +#endif // SK_BUILD_FOR_ANDROID_FRAMEWORK + ); +#endif + +#ifdef SK_METAL + /** Creates SkSurface from CAMetalLayer. + Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be + released when the SkSurface is destroyed. + + Only available when Metal API is enabled. + + Will grab the current drawable from the layer and use its texture as a backendRT to + create a renderable surface. + + @param context GPU context + @param layer GrMTLHandle (expected to be a CAMetalLayer*) + @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param drawable Pointer to drawable to be filled in when this surface is + instantiated; may not be nullptr + @return created SkSurface, or nullptr + */ + static sk_sp MakeFromCAMetalLayer(GrRecordingContext* context, + GrMTLHandle layer, + GrSurfaceOrigin origin, + int sampleCnt, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + GrMTLHandle* drawable) + SK_API_AVAILABLE_CA_METAL_LAYER; + + /** Creates SkSurface from MTKView. + Returned SkSurface takes a reference on the MTKView. The ref on the layer will be + released when the SkSurface is destroyed. + + Only available when Metal API is enabled. + + Will grab the current drawable from the layer and use its texture as a backendRT to + create a renderable surface. + + @param context GPU context + @param layer GrMTLHandle (expected to be a MTKView*) + @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @return created SkSurface, or nullptr + */ + static sk_sp MakeFromMTKView(GrRecordingContext* context, + GrMTLHandle mtkView, + GrSurfaceOrigin origin, + int sampleCnt, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps) + SK_API_AVAILABLE(macos(10.11), ios(9.0)); +#endif + /** Is this surface compatible with the provided characterization? This method can be used to determine if an existing SkSurface is a viable destination @@ -497,6 +517,7 @@ class SK_API SkSurface : public SkRefCnt { */ GrRecordingContext* recordingContext(); +#if SK_SUPPORT_GPU enum BackendHandleAccess { kFlushRead_BackendHandleAccess, //!< back-end object is readable kFlushWrite_BackendHandleAccess, //!< back-end object is writable @@ -559,6 +580,7 @@ class SK_API SkSurface : public SkRefCnt { ContentChangeMode mode = kRetain_ContentChangeMode, TextureReleaseProc textureReleaseProc = nullptr, ReleaseContext releaseContext = nullptr); +#endif /** Returns SkCanvas that draws into SkSurface. Subsequent calls return the same SkCanvas. SkCanvas returned is managed and owned by SkSurface, and is deleted when SkSurface @@ -887,6 +909,7 @@ class SK_API SkSurface : public SkRefCnt { kPresent, //!< back-end surface will be used for presenting to screen }; +#if SK_SUPPORT_GPU /** Issues pending SkSurface commands to the GPU-backed API objects and resolves any SkSurface MSAA. A call to GrDirectContext::submit is always required to ensure work is actually sent to the gpu. Some specific API details: @@ -921,7 +944,7 @@ class SK_API SkSurface : public SkRefCnt { the GPU. Thus the client should not have the GPU wait on any of the semaphores passed in with the GrFlushInfo. Regardless of whether semaphores were submitted to the GPU or not, the client is still responsible for deleting any initialized semaphores. - Regardleess of semaphore submission the context will still be flushed. It should be + Regardless of semaphore submission the context will still be flushed. It should be emphasized that a return value of GrSemaphoresSubmitted::kNo does not mean the flush did not happen. It simply means there were no semaphores submitted to the GPU. A caller should only take this as a failure if they passed in semaphores to be submitted. @@ -979,8 +1002,9 @@ class SK_API SkSurface : public SkRefCnt { */ GrSemaphoresSubmitted flush(const GrFlushInfo& info, const GrBackendSurfaceMutableState* newState = nullptr); +#endif // SK_SUPPORT_GPU - void flush() { this->flush({}); } + void flush(); /** Inserts a list of GPU semaphores that the current GPU-backed API must wait on before executing any more commands on the GPU for this surface. If this call returns false, then diff --git a/third_party/skia/include/core/SkTypes.h b/third_party/skia/include/core/SkTypes.h index b0256f769920..d97ff754eb9a 100644 --- a/third_party/skia/include/core/SkTypes.h +++ b/third_party/skia/include/core/SkTypes.h @@ -23,7 +23,7 @@ !defined(SK_BUILD_FOR_UNIX) && !defined(SK_BUILD_FOR_MAC) #ifdef __APPLE__ - #include "TargetConditionals.h" + #include #endif #if defined(_WIN32) || defined(__SYMBIAN32__) @@ -270,9 +270,9 @@ #endif #ifndef SK_ABORT -#ifdef SK_BUILD_FOR_WIN - // This style lets Visual Studio follow errors back to the source file. -#define SK_DUMP_LINE_FORMAT "%s(%d)" +# ifdef SK_BUILD_FOR_WIN + // This style lets Visual Studio follow errors back to the source file. +# define SK_DUMP_LINE_FORMAT "%s(%d)" #define SK_ABORT(...) \ do { \ SkDebugf(SK_DUMP_LINE_FORMAT ": fatal error: \"%s\"\n", \ @@ -282,17 +282,15 @@ SK_DUMP_GOOGLE3_STACK(); \ sk_abort_no_print(); \ } while (false) -#else -#define SK_DUMP_LINE_FORMAT "%s:%d" -#define SK_ABORT(message, ...) \ - do { \ - SkDebugf(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"\n", \ - __FILE__, \ - __LINE__, \ - ##__VA_ARGS__); \ - SK_DUMP_GOOGLE3_STACK(); \ - sk_abort_no_print(); \ - } while (false) +# else +# define SK_DUMP_LINE_FORMAT "%s:%d" +# define SK_ABORT(message, ...) \ + do { \ + SkDebugf(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"\n", \ + __FILE__, __LINE__, ##__VA_ARGS__); \ + SK_DUMP_GOOGLE3_STACK(); \ + sk_abort_no_print(); \ + } while (false) #endif #endif @@ -430,10 +428,6 @@ inline SkPmcolor GetSkPmcolor() { # define GR_TEST_UTILS 0 #endif -#ifndef SK_GPU_V2 -# define SK_GPU_V2 0 -#endif - #ifndef SK_GPU_V1 # define SK_GPU_V1 1 #endif diff --git a/third_party/skia/include/docs/BUILD.bazel b/third_party/skia/include/docs/BUILD.bazel new file mode 100644 index 000000000000..c59bf7caefa3 --- /dev/null +++ b/third_party/skia/include/docs/BUILD.bazel @@ -0,0 +1,26 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkPDFDocument_hdr", + hdrs = ["SkPDFDocument.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkColor_hdr", + "//include/core:SkDocument_hdr", + "//include/core:SkMilestone_hdr", + "//include/core:SkScalar_hdr", + "//include/core:SkString_hdr", + "//include/core:SkTime_hdr", + "//include/private:SkNoncopyable_hdr", + ], +) + +generated_cc_atom( + name = "SkXPSDocument_hdr", + hdrs = ["SkXPSDocument.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkDocument_hdr", + "//include/core:SkTypes_hdr", + ], +) diff --git a/third_party/skia/include/docs/SkPDFDocument.h b/third_party/skia/include/docs/SkPDFDocument.h index 28b07f5b4673..69e7c6b852e1 100644 --- a/third_party/skia/include/docs/SkPDFDocument.h +++ b/third_party/skia/include/docs/SkPDFDocument.h @@ -23,60 +23,6 @@ class SkPDFTagTree; namespace SkPDF { -/** Table 333 in PDF 32000-1:2008 §14.8.4.2 -*/ -enum class DocumentStructureType { - kDocument, //!< Document - kPart, //!< Part - kArt, //!< Article - kSect, //!< Section - kDiv, //!< Division - kBlockQuote, //!< Block quotation - kCaption, //!< Caption - kTOC, //!< Table of Contents - kTOCI, //!< Table of Contents Item - kIndex, //!< Index - kNonStruct, //!< Nonstructural element - kPrivate, //!< Private element - kH, //!< Heading - kH1, //!< Heading level 1 - kH2, //!< Heading level 2 - kH3, //!< Heading level 3 - kH4, //!< Heading level 4 - kH5, //!< Heading level 5 - kH6, //!< Heading level 6 - kP, //!< Paragraph - kL, //!< List - kLI, //!< List item - kLbl, //!< List item label - kLBody, //!< List item body - kTable, //!< Table - kTR, //!< Table row - kTH, //!< Table header cell - kTD, //!< Table data cell - kTHead, //!< Table header row group - kTBody, //!< Table body row group - kTFoot, //!< table footer row group - kSpan, //!< Span - kQuote, //!< Quotation - kNote, //!< Note - kReference, //!< Reference - kBibEntry, //!< Bibliography entry - kCode, //!< Code - kLink, //!< Link - kAnnot, //!< Annotation - kRuby, //!< Ruby annotation - kRB, //!< Ruby base text - kRT, //!< Ruby annotation text - kRP, //!< Ruby punctuation - kWarichu, //!< Warichu annotation - kWT, //!< Warichu text - kWP, //!< Warichu punctuation - kFigure, //!< Figure - kFormula, //!< Formula - kForm, //!< Form control (not like an HTML FORM element) -}; - /** Attributes for nodes in the PDF tree. */ class SK_API AttributeList : SkNoncopyable { public: @@ -120,9 +66,6 @@ struct StructureElementNode { AttributeList fAttributes; SkString fAlt; SkString fLang; - - // Deprecated. Use fTypeString instead. - DocumentStructureType fType = DocumentStructureType::kNonStruct; }; /** Optional metadata to be passed into the PDF factory function. diff --git a/third_party/skia/include/effects/BUILD.bazel b/third_party/skia/include/effects/BUILD.bazel new file mode 100644 index 000000000000..ecb349097b71 --- /dev/null +++ b/third_party/skia/include/effects/BUILD.bazel @@ -0,0 +1,219 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "Sk1DPathEffect_hdr", + hdrs = ["Sk1DPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) + +generated_cc_atom( + name = "Sk2DPathEffect_hdr", + hdrs = ["Sk2DPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) + +generated_cc_atom( + name = "SkBlenders_hdr", + hdrs = ["SkBlenders.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkBlender_hdr"], +) + +generated_cc_atom( + name = "SkBlurDrawLooper_hdr", + hdrs = ["SkBlurDrawLooper.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkDrawLooper_hdr"], +) + +generated_cc_atom( + name = "SkBlurMaskFilter_hdr", + hdrs = ["SkBlurMaskFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkBlurTypes_hdr", + "//include/core:SkMaskFilter_hdr", + "//include/core:SkRect_hdr", + "//include/core:SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkColorMatrixFilter_hdr", + hdrs = ["SkColorMatrixFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkColorMatrix_hdr", + "//include/core:SkColorFilter_hdr", + ], +) + +generated_cc_atom( + name = "SkColorMatrix_hdr", + hdrs = ["SkColorMatrix.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkImageInfo_hdr"], +) + +generated_cc_atom( + name = "SkCornerPathEffect_hdr", + hdrs = ["SkCornerPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) + +generated_cc_atom( + name = "SkDashPathEffect_hdr", + hdrs = ["SkDashPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) + +generated_cc_atom( + name = "SkDiscretePathEffect_hdr", + hdrs = ["SkDiscretePathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) + +generated_cc_atom( + name = "SkGradientShader_hdr", + hdrs = ["SkGradientShader.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkShader_hdr"], +) + +generated_cc_atom( + name = "SkHighContrastFilter_hdr", + hdrs = ["SkHighContrastFilter.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkColorFilter_hdr"], +) + +generated_cc_atom( + name = "SkImageFilters_hdr", + hdrs = ["SkImageFilters.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkRuntimeEffect_hdr", + "//include/core:SkBlendMode_hdr", + "//include/core:SkColor_hdr", + "//include/core:SkImageFilter_hdr", + "//include/core:SkImage_hdr", + "//include/core:SkPicture_hdr", + "//include/core:SkRect_hdr", + "//include/core:SkTileMode_hdr", + "//include/core:SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "SkLayerDrawLooper_hdr", + hdrs = ["SkLayerDrawLooper.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkBlendMode_hdr", + "//include/core:SkDrawLooper_hdr", + "//include/core:SkPaint_hdr", + "//include/core:SkPoint_hdr", + ], +) + +generated_cc_atom( + name = "SkLumaColorFilter_hdr", + hdrs = ["SkLumaColorFilter.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkColorFilter_hdr"], +) + +generated_cc_atom( + name = "SkOpPathEffect_hdr", + hdrs = ["SkOpPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkMatrix_hdr", + "//include/core:SkPaint_hdr", + "//include/core:SkPathEffect_hdr", + "//include/pathops:SkPathOps_hdr", + ], +) + +generated_cc_atom( + name = "SkOverdrawColorFilter_hdr", + hdrs = ["SkOverdrawColorFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkColorFilter_hdr", + "//include/core:SkFlattenable_hdr", + ], +) + +generated_cc_atom( + name = "SkPerlinNoiseShader_hdr", + hdrs = ["SkPerlinNoiseShader.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkShader_hdr"], +) + +generated_cc_atom( + name = "SkRuntimeEffect_hdr", + hdrs = ["SkRuntimeEffect.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkBlender_hdr", + "//include/core:SkColorFilter_hdr", + "//include/core:SkData_hdr", + "//include/core:SkImageInfo_hdr", + "//include/core:SkMatrix_hdr", + "//include/core:SkShader_hdr", + "//include/core:SkSpan_hdr", + "//include/core:SkString_hdr", + "//include/private:SkOnce_hdr", + "//include/private:SkSLSampleUsage_hdr", + "//include/private:SkTOptional_hdr", + ], +) + +generated_cc_atom( + name = "SkShaderMaskFilter_hdr", + hdrs = ["SkShaderMaskFilter.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkMaskFilter_hdr"], +) + +generated_cc_atom( + name = "SkStrokeAndFillPathEffect_hdr", + hdrs = ["SkStrokeAndFillPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkPaint_hdr", + "//include/core:SkPathEffect_hdr", + "//include/pathops:SkPathOps_hdr", + ], +) + +generated_cc_atom( + name = "SkTableColorFilter_hdr", + hdrs = ["SkTableColorFilter.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkColorFilter_hdr"], +) + +generated_cc_atom( + name = "SkTableMaskFilter_hdr", + hdrs = ["SkTableMaskFilter.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkMaskFilter_hdr", + "//include/core:SkScalar_hdr", + ], +) + +generated_cc_atom( + name = "SkTrimPathEffect_hdr", + hdrs = ["SkTrimPathEffect.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPathEffect_hdr"], +) diff --git a/third_party/skia/include/effects/SkImageFilters.h b/third_party/skia/include/effects/SkImageFilters.h index bc79cf934112..e91837ec576e 100644 --- a/third_party/skia/include/effects/SkImageFilters.h +++ b/third_party/skia/include/effects/SkImageFilters.h @@ -15,6 +15,8 @@ #include "include/core/SkPicture.h" #include "include/core/SkRect.h" #include "include/core/SkTileMode.h" +#include "include/core/SkTypes.h" +#include "include/effects/SkRuntimeEffect.h" #include @@ -332,6 +334,26 @@ class SK_API SkImageFilters { return Picture(std::move(pic), target); } +#ifdef SK_ENABLE_SKSL + /** + * Create a filter that fills the output with the per-pixel evaluation of the SkShader produced + * by the SkRuntimeShaderBuilder. The shader is defined in the image filter's local coordinate + * system, so it will automatically be affected by SkCanvas' transform. + * + * @param builder The builder used to produce the runtime shader, that will in turn + * fill the result image + * @param childShaderName The name of the child shader defined in the builder that will be + * bound to the input param (or the source image if the input param + * is null). If null the builder can have exactly one child shader, + * which automatically binds the input param. + * @param input The image filter that will be provided as input to the runtime + * shader. If null the implicit source image is used instead + */ + static sk_sp RuntimeShader(const SkRuntimeShaderBuilder& builder, + const char* childShaderName, + sk_sp input); +#endif // SK_ENABLE_SKSL + enum class Dither : bool { kNo = false, kYes = true diff --git a/third_party/skia/include/effects/SkRuntimeEffect.h b/third_party/skia/include/effects/SkRuntimeEffect.h index b3f21b1d58e6..17f09a195f6d 100644 --- a/third_party/skia/include/effects/SkRuntimeEffect.h +++ b/third_party/skia/include/effects/SkRuntimeEffect.h @@ -28,8 +28,10 @@ class GrRecordingContext; class SkFilterColorProgram; class SkImage; +class SkRuntimeImageFilter; namespace SkSL { +class DebugTrace; class FunctionDefinition; struct Program; enum class ProgramKind : int8_t; @@ -64,8 +66,13 @@ class SK_API SkRuntimeEffect : public SkRefCnt { }; enum Flags { - kArray_Flag = 0x1, - kSRGBUnpremul_Flag = 0x2, + // Uniform is an declared as an array. 'count' contains array length. + kArray_Flag = 0x1, + + // Uniform is declared with layout(color). Colors should be supplied as unpremultiplied, + // extended-range (unclamped) sRGB (ie SkColor4f). The uniform will be automatically + // transformed to unpremultiplied extended-range working-space colors. + kColor_Flag = 0x2, }; SkString name; @@ -75,6 +82,7 @@ class SK_API SkRuntimeEffect : public SkRefCnt { uint32_t flags; bool isArray() const { return SkToBool(this->flags & kArray_Flag); } + bool isColor() const { return SkToBool(this->flags & kColor_Flag); } size_t sizeInBytes() const; }; @@ -208,29 +216,33 @@ class SK_API SkRuntimeEffect : public SkRefCnt { sk_sp makeBlender(sk_sp uniforms, SkSpan children = {}) const; - const std::string& source() const; - - template - class ConstIterable { - public: - ConstIterable(const std::vector& vec) : fVec(vec) {} - - using const_iterator = typename std::vector::const_iterator; - - const_iterator begin() const { return fVec.begin(); } - const_iterator end() const { return fVec.end(); } - size_t count() const { return fVec.size(); } - - private: - const std::vector& fVec; + /** + * Creates a new Runtime Effect patterned after an already-existing one. The new shader behaves + * like the original, but also creates a debug trace of its execution at the requested + * coordinate. After painting with this shader, the associated DebugTrace object will contain a + * shader execution trace. Call `writeTrace` on the debug trace object to generate a full trace + * suitable for a debugger, or call `dump` to emit a human-readable trace. + * + * Debug traces are only supported on a raster (non-GPU) canvas. + + * Debug traces are currently only supported on shaders. Color filter and blender tracing is a + * work-in-progress. + */ + struct TracedShader { + sk_sp shader; + sk_sp debugTrace; }; + static TracedShader MakeTraced(sk_sp shader, const SkIPoint& traceCoord); + + // Returns the SkSL source of the runtime effect shader. + const std::string& source() const; // Combined size of all 'uniform' variables. When calling makeColorFilter or makeShader, // provide an SkData of this size, containing values for all of those variables. size_t uniformSize() const; - ConstIterable uniforms() const { return ConstIterable(fUniforms); } - ConstIterable children() const { return ConstIterable(fChildren); } + SkSpan uniforms() const { return SkMakeSpan(fUniforms); } + SkSpan children() const { return SkMakeSpan(fChildren); } // Returns pointer to the named uniform variable's description, or nullptr if not found const Uniform* findUniform(const char* name) const; @@ -395,8 +407,12 @@ class SkRuntimeEffectBuilder { SkRuntimeEffectBuilder() = delete; explicit SkRuntimeEffectBuilder(sk_sp effect) : fEffect(std::move(effect)) - , fUniforms(SkData::MakeUninitialized(fEffect->uniformSize())) - , fChildren(fEffect->children().count()) {} + , fUniforms(SkData::MakeZeroInitialized(fEffect->uniformSize())) + , fChildren(fEffect->children().size()) {} + explicit SkRuntimeEffectBuilder(sk_sp effect, sk_sp uniforms) + : fEffect(std::move(effect)) + , fUniforms(std::move(uniforms)) + , fChildren(fEffect->children().size()) {} SkRuntimeEffectBuilder(SkRuntimeEffectBuilder&&) = default; SkRuntimeEffectBuilder(const SkRuntimeEffectBuilder&) = default; @@ -457,6 +473,11 @@ class SK_API SkRuntimeShaderBuilder : public SkRuntimeEffectBuilder { private: using INHERITED = SkRuntimeEffectBuilder; + + explicit SkRuntimeShaderBuilder(sk_sp effect, sk_sp uniforms) + : INHERITED(std::move(effect), std::move(uniforms)) {} + + friend class SkRuntimeImageFilter; }; /** diff --git a/third_party/skia/include/encode/BUILD.bazel b/third_party/skia/include/encode/BUILD.bazel new file mode 100644 index 000000000000..fc728d0d0e77 --- /dev/null +++ b/third_party/skia/include/encode/BUILD.bazel @@ -0,0 +1,36 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkEncoder_hdr", + hdrs = ["SkEncoder.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkPixmap_hdr", + "//include/private:SkNoncopyable_hdr", + "//include/private:SkTemplates_hdr", + ], +) + +generated_cc_atom( + name = "SkJpegEncoder_hdr", + hdrs = ["SkJpegEncoder.h"], + visibility = ["//:__subpackages__"], + deps = [":SkEncoder_hdr"], +) + +generated_cc_atom( + name = "SkPngEncoder_hdr", + hdrs = ["SkPngEncoder.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkEncoder_hdr", + "//include/core:SkDataTable_hdr", + ], +) + +generated_cc_atom( + name = "SkWebpEncoder_hdr", + hdrs = ["SkWebpEncoder.h"], + visibility = ["//:__subpackages__"], + deps = [":SkEncoder_hdr"], +) diff --git a/third_party/skia/include/gpu/BUILD.bazel b/third_party/skia/include/gpu/BUILD.bazel new file mode 100644 index 000000000000..1aa7951b946e --- /dev/null +++ b/third_party/skia/include/gpu/BUILD.bazel @@ -0,0 +1,160 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrBackendDrawableInfo_hdr", + hdrs = ["GrBackendDrawableInfo.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrTypes_hdr", + "//include/gpu/vk:GrVkTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrBackendSemaphore_hdr", + hdrs = ["GrBackendSemaphore.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrTypes_hdr", + "//include/gpu/gl:GrGLTypes_hdr", + "//include/gpu/mtl:GrMtlTypes_hdr", + "//include/gpu/vk:GrVkTypes_hdr", + "//include/private:GrD3DTypesMinimal_hdr", + ], +) + +generated_cc_atom( + name = "GrBackendSurfaceMutableState_hdr", + hdrs = ["GrBackendSurfaceMutableState.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrTypes_hdr", + "//include/private:GrVkTypesPriv_hdr", + ], +) + +generated_cc_atom( + name = "GrBackendSurface_hdr", + hdrs = ["GrBackendSurface.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrBackendSurfaceMutableState_hdr", + ":GrSurfaceInfo_hdr", + ":GrTypes_hdr", + "//include/gpu/dawn:GrDawnTypes_hdr", + "//include/gpu/gl:GrGLTypes_hdr", + "//include/gpu/mock:GrMockTypes_hdr", + "//include/gpu/mtl:GrMtlTypes_hdr", + "//include/gpu/vk:GrVkTypes_hdr", + "//include/private:GrD3DTypesMinimal_hdr", + "//include/private:GrGLTypesPriv_hdr", + "//include/private:GrVkTypesPriv_hdr", + ], +) + +generated_cc_atom( + name = "GrConfig_hdr", + hdrs = ["GrConfig.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkTypes_hdr"], +) + +generated_cc_atom( + name = "GrContextOptions_hdr", + hdrs = ["GrContextOptions.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrDriverBugWorkarounds_hdr", + ":GrTypes_hdr", + "//include/core:SkData_hdr", + "//include/core:SkString_hdr", + "//include/core:SkTypes_hdr", + "//include/private:GrTypesPriv_hdr", + ], +) + +generated_cc_atom( + name = "GrContextThreadSafeProxy_hdr", + hdrs = ["GrContextThreadSafeProxy.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrContextOptions_hdr", + ":GrTypes_hdr", + "//include/core:SkImageInfo_hdr", + "//include/core:SkRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "GrDirectContext_hdr", + hdrs = ["GrDirectContext.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrBackendSurface_hdr", + ":GrRecordingContext_hdr", + "//include/core:SkUnPreMultiply_hdr", + ], +) + +generated_cc_atom( + name = "GrDriverBugWorkaroundsAutogen_hdr", + hdrs = ["GrDriverBugWorkaroundsAutogen.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "GrDriverBugWorkarounds_hdr", + hdrs = ["GrDriverBugWorkarounds.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrDriverBugWorkaroundsAutogen_hdr", + "//include/core:SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrRecordingContext_hdr", + hdrs = ["GrRecordingContext.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRefCnt_hdr", + "//include/private:GrImageContext_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "GrSurfaceInfo_hdr", + hdrs = ["GrSurfaceInfo.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrTypes_hdr", + "//include/private:GrD3DTypesMinimal_hdr", + "//include/private:GrDawnTypesPriv_hdr", + "//include/private:GrGLTypesPriv_hdr", + "//include/private:GrMockTypesPriv_hdr", + "//include/private:GrMtlTypesPriv_hdr", + "//include/private:GrVkTypesPriv_hdr", + ], +) + +generated_cc_atom( + name = "GrTypes_hdr", + hdrs = ["GrTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrConfig_hdr", + "//include/core:SkMath_hdr", + "//include/core:SkTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrYUVABackendTextures_hdr", + hdrs = ["GrYUVABackendTextures.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrBackendSurface_hdr", + "//include/core:SkYUVAInfo_hdr", + ], +) diff --git a/third_party/skia/include/gpu/GrBackendSemaphore.h b/third_party/skia/include/gpu/GrBackendSemaphore.h index e96149072bd1..83d70adf065f 100644 --- a/third_party/skia/include/gpu/GrBackendSemaphore.h +++ b/third_party/skia/include/gpu/GrBackendSemaphore.h @@ -11,8 +11,15 @@ #include "include/gpu/GrTypes.h" #include "include/gpu/gl/GrGLTypes.h" + +#ifdef SK_METAL #include "include/gpu/mtl/GrMtlTypes.h" +#endif + +#ifdef SK_VULKAN #include "include/gpu/vk/GrVkTypes.h" +#endif + #ifdef SK_DIRECT3D #include "include/private/GrD3DTypesMinimal.h" #endif @@ -23,7 +30,7 @@ class GrBackendSemaphore { public: // For convenience we just set the backend here to OpenGL. The GrBackendSemaphore cannot be used - // until either initGL or initVulkan are called which will set the appropriate GrBackend. + // until either init* is called, which will set the appropriate GrBackend. GrBackendSemaphore() : fBackend(GrBackendApi::kOpenGL), fGLSync(nullptr), fIsInitialized(false) {} @@ -41,29 +48,49 @@ class GrBackendSemaphore { fIsInitialized = true; } +#ifdef SK_VULKAN void initVulkan(VkSemaphore semaphore) { fBackend = GrBackendApi::kVulkan; fVkSemaphore = semaphore; -#ifdef SK_VULKAN + fIsInitialized = true; -#else - fIsInitialized = false; -#endif } + VkSemaphore vkSemaphore() const { + if (!fIsInitialized || GrBackendApi::kVulkan != fBackend) { + return VK_NULL_HANDLE; + } + return fVkSemaphore; + } +#endif + +#ifdef SK_METAL // It is the creator's responsibility to ref the MTLEvent passed in here, via __bridge_retained. // The other end will wrap this BackendSemaphore and take the ref, via __bridge_transfer. void initMetal(GrMTLHandle event, uint64_t value) { fBackend = GrBackendApi::kMetal; fMtlEvent = event; fMtlValue = value; -#ifdef SK_METAL + fIsInitialized = true; -#else - fIsInitialized = false; -#endif } + GrMTLHandle mtlSemaphore() const { + if (!fIsInitialized || GrBackendApi::kMetal != fBackend) { + return nullptr; + } + return fMtlEvent; + } + + uint64_t mtlValue() const { + if (!fIsInitialized || GrBackendApi::kMetal != fBackend) { + return 0; + } + return fMtlValue; + } + +#endif + #ifdef SK_DIRECT3D void initDirect3D(const GrD3DFenceInfo& info) { fBackend = GrBackendApi::kDirect3D; @@ -81,26 +108,6 @@ class GrBackendSemaphore { return fGLSync; } - VkSemaphore vkSemaphore() const { - if (!fIsInitialized || GrBackendApi::kVulkan != fBackend) { - return VK_NULL_HANDLE; - } - return fVkSemaphore; - } - - GrMTLHandle mtlSemaphore() const { - if (!fIsInitialized || GrBackendApi::kMetal != fBackend) { - return nullptr; - } - return fMtlEvent; - } - - uint64_t mtlValue() const { - if (!fIsInitialized || GrBackendApi::kMetal != fBackend) { - return 0; - } - return fMtlValue; - } #ifdef SK_DIRECT3D bool getD3DFenceInfo(GrD3DFenceInfo* outInfo) const; @@ -114,13 +121,19 @@ class GrBackendSemaphore { GrBackendApi fBackend; union { GrGLsync fGLSync; +#ifdef SK_VULKAN VkSemaphore fVkSemaphore; +#endif +#ifdef SK_METAL GrMTLHandle fMtlEvent; // Expected to be an id +#endif #ifdef SK_DIRECT3D GrD3DFenceInfo* fD3DFenceInfo; #endif }; +#ifdef SK_METAL uint64_t fMtlValue; +#endif bool fIsInitialized; }; diff --git a/third_party/skia/include/gpu/GrContextOptions.h b/third_party/skia/include/gpu/GrContextOptions.h index fe6cd987222f..866cf36bf8d6 100644 --- a/third_party/skia/include/gpu/GrContextOptions.h +++ b/third_party/skia/include/gpu/GrContextOptions.h @@ -281,11 +281,6 @@ struct SK_API GrContextOptions { * Private options that are only meant for testing within Skia's tools. */ - /** - * Experimental: Should the new version of the GPU backend be used? - */ - Enable fUseSkGpuV2 = Enable::kDefault; - /** * Prevents use of dual source blending, to test that all xfer modes work correctly without it. */ diff --git a/third_party/skia/include/gpu/d3d/BUILD.bazel b/third_party/skia/include/gpu/d3d/BUILD.bazel new file mode 100644 index 000000000000..77a38844f772 --- /dev/null +++ b/third_party/skia/include/gpu/d3d/BUILD.bazel @@ -0,0 +1,21 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrD3DBackendContext_hdr", + hdrs = ["GrD3DBackendContext.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrD3DTypes_hdr", + "//include/gpu:GrTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrD3DTypes_hdr", + hdrs = ["GrD3DTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRefCnt_hdr", + "//include/gpu:GrTypes_hdr", + ], +) diff --git a/third_party/skia/include/gpu/dawn/BUILD.bazel b/third_party/skia/include/gpu/dawn/BUILD.bazel new file mode 100644 index 000000000000..8b93b918cbc2 --- /dev/null +++ b/third_party/skia/include/gpu/dawn/BUILD.bazel @@ -0,0 +1,8 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrDawnTypes_hdr", + hdrs = ["GrDawnTypes.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/gpu:GrTypes_hdr"], +) diff --git a/third_party/skia/include/gpu/gl/BUILD.bazel b/third_party/skia/include/gpu/gl/BUILD.bazel new file mode 100644 index 000000000000..c2dcf89d8417 --- /dev/null +++ b/third_party/skia/include/gpu/gl/BUILD.bazel @@ -0,0 +1,70 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrGLAssembleHelpers_hdr", + hdrs = ["GrGLAssembleHelpers.h"], + visibility = ["//:__subpackages__"], + deps = [":GrGLAssembleInterface_hdr"], +) + +generated_cc_atom( + name = "GrGLAssembleInterface_hdr", + hdrs = ["GrGLAssembleInterface.h"], + visibility = ["//:__subpackages__"], + deps = [":GrGLInterface_hdr"], +) + +generated_cc_atom( + name = "GrGLConfig_chrome_hdr", + hdrs = ["GrGLConfig_chrome.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "GrGLConfig_hdr", + hdrs = ["GrGLConfig.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/gpu:GrTypes_hdr"], +) + +generated_cc_atom( + name = "GrGLExtensions_hdr", + hdrs = ["GrGLExtensions.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrGLFunctions_hdr", + "//include/core:SkString_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "GrGLFunctions_hdr", + hdrs = ["GrGLFunctions.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrGLTypes_hdr", + "//include/private:SkTLogic_hdr", + ], +) + +generated_cc_atom( + name = "GrGLInterface_hdr", + hdrs = ["GrGLInterface.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrGLExtensions_hdr", + ":GrGLFunctions_hdr", + "//include/core:SkRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "GrGLTypes_hdr", + hdrs = ["GrGLTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrGLConfig_hdr", + "//include/core:SkRefCnt_hdr", + ], +) diff --git a/third_party/skia/include/gpu/gl/egl/BUILD.bazel b/third_party/skia/include/gpu/gl/egl/BUILD.bazel new file mode 100644 index 000000000000..4e824371ad1e --- /dev/null +++ b/third_party/skia/include/gpu/gl/egl/BUILD.bazel @@ -0,0 +1,11 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrGLMakeEGLInterface_hdr", + hdrs = ["GrGLMakeEGLInterface.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRefCnt_hdr", + "//include/gpu:GrTypes_hdr", + ], +) diff --git a/third_party/skia/include/gpu/gl/glx/BUILD.bazel b/third_party/skia/include/gpu/gl/glx/BUILD.bazel new file mode 100644 index 000000000000..c336d4974e9e --- /dev/null +++ b/third_party/skia/include/gpu/gl/glx/BUILD.bazel @@ -0,0 +1,11 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrGLMakeGLXInterface_hdr", + hdrs = ["GrGLMakeGLXInterface.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRefCnt_hdr", + "//include/gpu:GrTypes_hdr", + ], +) diff --git a/third_party/skia/include/gpu/mock/BUILD.bazel b/third_party/skia/include/gpu/mock/BUILD.bazel new file mode 100644 index 000000000000..b7f4a9e06160 --- /dev/null +++ b/third_party/skia/include/gpu/mock/BUILD.bazel @@ -0,0 +1,11 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrMockTypes_hdr", + hdrs = ["GrMockTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/gpu:GrTypes_hdr", + "//include/private:GrTypesPriv_hdr", + ], +) diff --git a/third_party/skia/include/gpu/mtl/BUILD.bazel b/third_party/skia/include/gpu/mtl/BUILD.bazel new file mode 100644 index 000000000000..9881ff21ff05 --- /dev/null +++ b/third_party/skia/include/gpu/mtl/BUILD.bazel @@ -0,0 +1,18 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrMtlBackendContext_hdr", + hdrs = ["GrMtlBackendContext.h"], + visibility = ["//:__subpackages__"], + deps = [":GrMtlTypes_hdr"], +) + +generated_cc_atom( + name = "GrMtlTypes_hdr", + hdrs = ["GrMtlTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/gpu:GrTypes_hdr", + "//include/ports:SkCFObject_hdr", + ], +) diff --git a/third_party/skia/include/gpu/vk/BUILD.bazel b/third_party/skia/include/gpu/vk/BUILD.bazel new file mode 100644 index 000000000000..a2f41750e377 --- /dev/null +++ b/third_party/skia/include/gpu/vk/BUILD.bazel @@ -0,0 +1,56 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrVkBackendContext_hdr", + hdrs = ["GrVkBackendContext.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrVkMemoryAllocator_hdr", + ":GrVkTypes_hdr", + "//include/core:SkRefCnt_hdr", + ], +) + +generated_cc_atom( + name = "GrVkExtensions_hdr", + hdrs = ["GrVkExtensions.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrVkTypes_hdr", + "//include/core:SkString_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "GrVkMemoryAllocator_hdr", + hdrs = ["GrVkMemoryAllocator.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrVkTypes_hdr", + "//include/core:SkRefCnt_hdr", + "//include/gpu:GrTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrVkTypes_hdr", + hdrs = ["GrVkTypes.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":GrVkVulkan_hdr", + "//include/core:SkTypes_hdr", + "//include/gpu:GrTypes_hdr", + ], +) + +generated_cc_atom( + name = "GrVkVulkan_hdr", + hdrs = ["GrVkVulkan.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkTypes_hdr", + "//include/third_party/vulkan/vulkan:vulkan_android_hdr", + "//include/third_party/vulkan/vulkan:vulkan_core_hdr", + ], +) diff --git a/third_party/skia/include/gpu/vk/GrVkTypes.h b/third_party/skia/include/gpu/vk/GrVkTypes.h index b9013e67425c..7b95962fa7c5 100644 --- a/third_party/skia/include/gpu/vk/GrVkTypes.h +++ b/third_party/skia/include/gpu/vk/GrVkTypes.h @@ -109,16 +109,27 @@ struct GrVkImageInfo { GrProtected fProtected = GrProtected::kNo; GrVkYcbcrConversionInfo fYcbcrConversionInfo; VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE; +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + bool fPartOfSwapchainOrAndroidWindow = false; +#endif #if GR_TEST_UTILS bool operator==(const GrVkImageInfo& that) const { - return fImage == that.fImage && fAlloc == that.fAlloc && - fImageTiling == that.fImageTiling && fImageLayout == that.fImageLayout && - fFormat == that.fFormat && fImageUsageFlags == that.fImageUsageFlags && - fSampleCount == that.fSampleCount && fLevelCount == that.fLevelCount && - fCurrentQueueFamily == that.fCurrentQueueFamily && fProtected == that.fProtected && - fYcbcrConversionInfo == that.fYcbcrConversionInfo && - fSharingMode == that.fSharingMode; + bool equal = fImage == that.fImage && fAlloc == that.fAlloc && + fImageTiling == that.fImageTiling && + fImageLayout == that.fImageLayout && + fFormat == that.fFormat && + fImageUsageFlags == that.fImageUsageFlags && + fSampleCount == that.fSampleCount && + fLevelCount == that.fLevelCount && + fCurrentQueueFamily == that.fCurrentQueueFamily && + fProtected == that.fProtected && + fYcbcrConversionInfo == that.fYcbcrConversionInfo && + fSharingMode == that.fSharingMode; +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + equal = equal && (fPartOfSwapchainOrAndroidWindow == that.fPartOfSwapchainOrAndroidWindow); +#endif + return equal; } #endif }; @@ -149,8 +160,6 @@ using GrVkGetProc = std::function 0) { result = "layout (" + result + ")"; diff --git a/third_party/skia/include/private/SkSLString.h b/third_party/skia/include/private/SkSLString.h index 06c449fc139c..7d828760da25 100644 --- a/third_party/skia/include/private/SkSLString.h +++ b/third_party/skia/include/private/SkSLString.h @@ -64,8 +64,8 @@ String to_string(uint32_t value); String to_string(int64_t value); String to_string(uint64_t value); -bool stod(const skstd::string_view& s, SKSL_FLOAT* value); -bool stoi(const skstd::string_view& s, SKSL_INT* value); +bool stod(skstd::string_view s, SKSL_FLOAT* value); +bool stoi(skstd::string_view s, SKSL_INT* value); } // namespace SkSL diff --git a/third_party/skia/include/private/SkTHash.h b/third_party/skia/include/private/SkTHash.h index 79851b83fe49..9ed039748c86 100644 --- a/third_party/skia/include/private/SkTHash.h +++ b/third_party/skia/include/private/SkTHash.h @@ -96,8 +96,8 @@ class SkTHashTable { if (s.empty()) { return nullptr; } - if (hash == s.hash && key == Traits::GetKey(s.val)) { - return &s.val; + if (hash == s.hash && key == Traits::GetKey(*s)) { + return &*s; } index = this->next(index); } @@ -122,8 +122,8 @@ class SkTHashTable { int index = hash & (fCapacity-1); for (int n = 0; n < fCapacity; n++) { Slot& s = fSlots[index]; - SkASSERT(!s.empty()); - if (hash == s.hash && key == Traits::GetKey(s.val)) { + SkASSERT(s.has_value()); + if (hash == s.hash && key == Traits::GetKey(*s)) { this->removeSlot(index); if (4 * fCount <= fCapacity && fCapacity > 4) { this->resize(fCapacity / 2); @@ -138,8 +138,8 @@ class SkTHashTable { template // f(T*) void foreach(Fn&& fn) { for (int i = 0; i < fCapacity; i++) { - if (!fSlots[i].empty()) { - fn(&fSlots[i].val); + if (fSlots[i].has_value()) { + fn(&*fSlots[i]); } } } @@ -148,8 +148,8 @@ class SkTHashTable { template // f(T) or f(const T&) void foreach(Fn&& fn) const { for (int i = 0; i < fCapacity; i++) { - if (!fSlots[i].empty()) { - fn(fSlots[i].val); + if (fSlots[i].has_value()) { + fn(*fSlots[i]); } } } @@ -210,7 +210,7 @@ class SkTHashTable { // Finds the first non-empty slot for an iterator. int firstPopulatedSlot() const { for (int i = 0; i < fCapacity; i++) { - if (!fSlots[i].empty()) { + if (fSlots[i].has_value()) { return i; } } @@ -220,7 +220,7 @@ class SkTHashTable { // Increments an iterator's slot. int nextPopulatedSlot(int currentSlot) const { for (int i = currentSlot + 1; i < fCapacity; i++) { - if (!fSlots[i].empty()) { + if (fSlots[i].has_value()) { return i; } } @@ -229,8 +229,8 @@ class SkTHashTable { // Reads from an iterator's slot. const T* slot(int i) const { - SkASSERT(!fSlots[i].empty()); - return &fSlots[i].val; + SkASSERT(fSlots[i].has_value()); + return &*fSlots[i]; } T* uncheckedSet(T&& val) { @@ -242,16 +242,15 @@ class SkTHashTable { Slot& s = fSlots[index]; if (s.empty()) { // New entry. - s.val = std::move(val); - s.hash = hash; + s.emplace(std::move(val), hash); fCount++; - return &s.val; + return &*s; } - if (hash == s.hash && key == Traits::GetKey(s.val)) { + if (hash == s.hash && key == Traits::GetKey(*s)) { // Overwrite previous entry. // Note: this triggers extra copies when adding the same value repeatedly. - s.val = std::move(val); - return &s.val; + s.emplace(std::move(val), hash); + return &*s; } index = this->next(index); @@ -271,8 +270,8 @@ class SkTHashTable { for (int i = 0; i < oldCapacity; i++) { Slot& s = oldSlots[i]; - if (!s.empty()) { - this->uncheckedSet(std::move(s.val)); + if (s.has_value()) { + this->uncheckedSet(*std::move(s)); } } SkASSERT(fCount == oldCount); @@ -297,7 +296,7 @@ class SkTHashTable { Slot& s = fSlots[index]; if (s.empty()) { // We're done shuffling elements around. Clear the last empty slot. - emptySlot = Slot(); + emptySlot.reset(); return; } originalIndex = s.hash & (fCapacity - 1); @@ -323,12 +322,85 @@ class SkTHashTable { struct Slot { Slot() = default; - Slot(T&& v, uint32_t h) : val(std::move(v)), hash(h) {} + ~Slot() { this->reset(); } - bool empty() const { return this->hash == 0; } + Slot(const Slot& that) { *this = that; } + Slot& operator=(const Slot& that) { + if (this == &that) { + return *this; + } + if (hash) { + if (that.hash) { + val.storage = that.val.storage; + hash = that.hash; + } else { + this->reset(); + } + } else { + if (that.hash) { + new (&val.storage) T(that.val.storage); + hash = that.hash; + } else { + // do nothing, no value on either side + } + } + return *this; + } + + Slot(Slot&& that) { *this = std::move(that); } + Slot& operator=(Slot&& that) { + if (this == &that) { + return *this; + } + if (hash) { + if (that.hash) { + val.storage = std::move(that.val.storage); + hash = that.hash; + } else { + this->reset(); + } + } else { + if (that.hash) { + new (&val.storage) T(std::move(that.val.storage)); + hash = that.hash; + } else { + // do nothing, no value on either side + } + } + return *this; + } + + T& operator*() & { return val.storage; } + const T& operator*() const& { return val.storage; } + T&& operator*() && { return std::move(val.storage); } + const T&& operator*() const&& { return std::move(val.storage); } + + Slot& emplace(T&& v, uint32_t h) { + this->reset(); + new (&val.storage) T(std::move(v)); + hash = h; + return *this; + } + + bool has_value() const { return hash != 0; } + explicit operator bool() const { return this->has_value(); } + bool empty() const { return !this->has_value(); } + + void reset() { + if (hash) { + val.storage.~T(); + hash = 0; + } + } - T val{}; uint32_t hash = 0; + + private: + union Storage { + T storage; + Storage() {} + ~Storage() {} + } val; }; int fCount = 0, diff --git a/third_party/skia/include/private/chromium/BUILD.bazel b/third_party/skia/include/private/chromium/BUILD.bazel new file mode 100644 index 000000000000..9b3c79f20f3f --- /dev/null +++ b/third_party/skia/include/private/chromium/BUILD.bazel @@ -0,0 +1,11 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "GrSlug_hdr", + hdrs = ["GrSlug.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkRect_hdr", + "//include/core:SkRefCnt_hdr", + ], +) diff --git a/third_party/skia/include/private/chromium/GrSlug.h b/third_party/skia/include/private/chromium/GrSlug.h new file mode 100644 index 000000000000..99d8ddcda57c --- /dev/null +++ b/third_party/skia/include/private/chromium/GrSlug.h @@ -0,0 +1,36 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrSlug_DEFINED +#define GrSlug_DEFINED + +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" + +class SkCanvas; +class SkPaint; +class SkTextBlob; + +// GrSlug encapsulates an SkTextBlob at a specific origin, using a specific paint. It can be +// manipulated using matrix and clip changes to the canvas. If the canvas is transformed, then +// the GrSlug will also transform with smaller glyphs using bi-linear interpolation to render. You +// can think of a GrSlug as making a rubber stamp out of a SkTextBlob. +class SK_API GrSlug : public SkRefCnt { +public: + ~GrSlug() override; + // Return nullptr if the blob would not draw. This is not because of clipping, but because of + // some paint optimization. The GrSlug is captured as if drawn using drawTextBlob. + static sk_sp ConvertBlob( + SkCanvas* canvas, const SkTextBlob& blob, SkPoint origin, const SkPaint& paint); + + // Draw the GrSlug obeying the canvas's mapping and clipping. + void draw(SkCanvas* canvas); + + virtual SkRect sourceBounds() const = 0; + virtual const SkPaint& paint() const = 0; +}; +#endif // GrSlug_DEFINED diff --git a/third_party/skia/include/sksl/BUILD.bazel b/third_party/skia/include/sksl/BUILD.bazel new file mode 100644 index 000000000000..9a0f95d0b684 --- /dev/null +++ b/third_party/skia/include/sksl/BUILD.bazel @@ -0,0 +1,169 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "DSLBlock_hdr", + hdrs = ["DSLBlock.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLExpression_hdr", + ":DSLStatement_hdr", + "//include/private:SkSLDefines_hdr", + ], +) + +generated_cc_atom( + name = "DSLCase_hdr", + hdrs = ["DSLCase.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLExpression_hdr", + ":DSLStatement_hdr", + "//include/private:SkSLDefines_hdr", + ], +) + +generated_cc_atom( + name = "DSLCore_hdr", + hdrs = ["DSLCore.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLBlock_hdr", + ":DSLCase_hdr", + ":DSLExpression_hdr", + ":DSLFunction_hdr", + ":DSLStatement_hdr", + ":DSLType_hdr", + ":DSLVar_hdr", + ":DSLWrapper_hdr", + ":SkSLErrorReporter_hdr", + "//include/private:SkSLProgramKind_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "DSLExpression_hdr", + hdrs = ["DSLExpression.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLWrapper_hdr", + ":SkSLErrorReporter_hdr", + "//include/core:SkStringView_hdr", + "//include/core:SkTypes_hdr", + "//include/private:SkTArray_hdr", + ], +) + +generated_cc_atom( + name = "DSLFunction_hdr", + hdrs = ["DSLFunction.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLBlock_hdr", + ":DSLExpression_hdr", + ":DSLType_hdr", + ":DSLVar_hdr", + ":DSLWrapper_hdr", + ], +) + +generated_cc_atom( + name = "DSLLayout_hdr", + hdrs = ["DSLLayout.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkSLErrorReporter_hdr", + "//include/private:SkSLLayout_hdr", + ], +) + +generated_cc_atom( + name = "DSLModifiers_hdr", + hdrs = ["DSLModifiers.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLLayout_hdr", + "//include/core:SkSpan_hdr", + "//include/private:SkSLModifiers_hdr", + ], +) + +generated_cc_atom( + name = "DSLRuntimeEffects_hdr", + hdrs = ["DSLRuntimeEffects.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSL_hdr", + "//include/effects:SkRuntimeEffect_hdr", + ], +) + +generated_cc_atom( + name = "DSLStatement_hdr", + hdrs = ["DSLStatement.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkSLErrorReporter_hdr", + "//include/core:SkString_hdr", + "//include/core:SkTypes_hdr", + "//include/private:SkSLStatement_hdr", + ], +) + +generated_cc_atom( + name = "DSLSymbols_hdr", + hdrs = ["DSLSymbols.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLExpression_hdr", + "//include/core:SkStringView_hdr", + "//include/private:SkSLString_hdr", + ], +) + +generated_cc_atom( + name = "DSLType_hdr", + hdrs = ["DSLType.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLExpression_hdr", + ":DSLModifiers_hdr", + "//include/core:SkSpan_hdr", + "//include/private:SkSLString_hdr", + ], +) + +generated_cc_atom( + name = "DSLVar_hdr", + hdrs = ["DSLVar.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":DSLExpression_hdr", + ":DSLModifiers_hdr", + ":DSLType_hdr", + ], +) + +generated_cc_atom( + name = "DSLWrapper_hdr", + hdrs = ["DSLWrapper.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "DSL_hdr", + hdrs = ["DSL.h"], + visibility = ["//:__subpackages__"], + deps = [":DSLCore_hdr"], +) + +generated_cc_atom( + name = "SkSLErrorReporter_hdr", + hdrs = ["SkSLErrorReporter.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkStringView_hdr", + "//include/core:SkTypes_hdr", + "//include/private:SkSLString_hdr", + ], +) diff --git a/third_party/skia/include/sksl/DSLLayout.h b/third_party/skia/include/sksl/DSLLayout.h index f0cb1b264876..a0698f77f3b2 100644 --- a/third_party/skia/include/sksl/DSLLayout.h +++ b/third_party/skia/include/sksl/DSLLayout.h @@ -34,8 +34,8 @@ class DSLLayout { "blend_support_all_equations", pos); } - DSLLayout& srgbUnpremul(PositionInfo pos = PositionInfo::Capture()) { - return this->flag(SkSL::Layout::kSRGBUnpremul_Flag, "srgb_unpremul", pos); + DSLLayout& color(PositionInfo pos = PositionInfo::Capture()) { + return this->flag(SkSL::Layout::kColor_Flag, "color", pos); } DSLLayout& location(int location, PositionInfo pos = PositionInfo::Capture()) { diff --git a/third_party/skia/include/sksl/SkSLDebugTrace.h b/third_party/skia/include/sksl/SkSLDebugTrace.h new file mode 100644 index 000000000000..9c5eafbc94ed --- /dev/null +++ b/third_party/skia/include/sksl/SkSLDebugTrace.h @@ -0,0 +1,28 @@ +/* + * Copyright 2021 Google LLC. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SKSL_DEBUG_TRACE +#define SKSL_DEBUG_TRACE + +#include "include/core/SkRefCnt.h" + +class SkWStream; + +namespace SkSL { + +class DebugTrace : public SkRefCnt { +public: + /** Serializes a debug trace to JSON which can be parsed by our debugger. */ + virtual void writeTrace(SkWStream* w) const = 0; + + /** Generates a human-readable dump of the debug trace. */ + virtual void dump(SkWStream* o) const = 0; +}; + +} // namespace SkSL + +#endif diff --git a/third_party/skia/include/sksl/SkSLErrorReporter.h b/third_party/skia/include/sksl/SkSLErrorReporter.h index 79a7650a0579..48cc0958ec17 100644 --- a/third_party/skia/include/sksl/SkSLErrorReporter.h +++ b/third_party/skia/include/sksl/SkSLErrorReporter.h @@ -39,7 +39,7 @@ class PositionInfo { return fFile; } - int line() { + int line() const { return fLine; } diff --git a/third_party/skia/include/svg/BUILD.bazel b/third_party/skia/include/svg/BUILD.bazel new file mode 100644 index 000000000000..7be34715fe52 --- /dev/null +++ b/third_party/skia/include/svg/BUILD.bazel @@ -0,0 +1,8 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkSVGCanvas_hdr", + hdrs = ["SkSVGCanvas.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkCanvas_hdr"], +) diff --git a/third_party/skia/include/third_party/skcms/BUILD.bazel b/third_party/skia/include/third_party/skcms/BUILD.bazel new file mode 100644 index 000000000000..0aef4dd490b7 --- /dev/null +++ b/third_party/skia/include/third_party/skcms/BUILD.bazel @@ -0,0 +1,7 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "skcms_hdr", + hdrs = ["skcms.h"], + visibility = ["//:__subpackages__"], +) diff --git a/third_party/skia/include/third_party/vulkan/vulkan/BUILD.bazel b/third_party/skia/include/third_party/vulkan/vulkan/BUILD.bazel new file mode 100644 index 000000000000..73abd998f52a --- /dev/null +++ b/third_party/skia/include/third_party/vulkan/vulkan/BUILD.bazel @@ -0,0 +1,49 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "vk_platform_hdr", + hdrs = ["vk_platform.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_android_hdr", + hdrs = ["vulkan_android.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_core_hdr", + hdrs = ["vulkan_core.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_hdr", + hdrs = ["vulkan.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_ios_hdr", + hdrs = ["vulkan_ios.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_macos_hdr", + hdrs = ["vulkan_macos.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_win32_hdr", + hdrs = ["vulkan_win32.h"], + visibility = ["//:__subpackages__"], +) + +generated_cc_atom( + name = "vulkan_xcb_hdr", + hdrs = ["vulkan_xcb.h"], + visibility = ["//:__subpackages__"], +) diff --git a/third_party/skia/include/utils/BUILD.bazel b/third_party/skia/include/utils/BUILD.bazel new file mode 100644 index 000000000000..a1fbb0f077f8 --- /dev/null +++ b/third_party/skia/include/utils/BUILD.bazel @@ -0,0 +1,155 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkAnimCodecPlayer_hdr", + hdrs = ["SkAnimCodecPlayer.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/codec:SkCodec_hdr"], +) + +generated_cc_atom( + name = "SkBase64_hdr", + hdrs = ["SkBase64.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkCamera_hdr", + hdrs = ["SkCamera.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkM44_hdr", + "//include/core:SkMatrix_hdr", + "//include/private:SkNoncopyable_hdr", + ], +) + +generated_cc_atom( + name = "SkCanvasStateUtils_hdr", + hdrs = ["SkCanvasStateUtils.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkCanvas_hdr"], +) + +generated_cc_atom( + name = "SkCustomTypeface_hdr", + hdrs = ["SkCustomTypeface.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkFontMetrics_hdr", + "//include/core:SkFontStyle_hdr", + "//include/core:SkImage_hdr", + "//include/core:SkPaint_hdr", + "//include/core:SkPath_hdr", + "//include/core:SkPicture_hdr", + "//include/core:SkTypeface_hdr", + ], +) + +generated_cc_atom( + name = "SkEventTracer_hdr", + hdrs = ["SkEventTracer.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkTypes_hdr"], +) + +generated_cc_atom( + name = "SkNWayCanvas_hdr", + hdrs = ["SkNWayCanvas.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkNoDrawCanvas_hdr", + "//include/core:SkCanvasVirtualEnforcer_hdr", + "//include/private:SkTDArray_hdr", + ], +) + +generated_cc_atom( + name = "SkNoDrawCanvas_hdr", + hdrs = ["SkNoDrawCanvas.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkCanvasVirtualEnforcer_hdr", + "//include/core:SkCanvas_hdr", + ], +) + +generated_cc_atom( + name = "SkNullCanvas_hdr", + hdrs = ["SkNullCanvas.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkCanvas_hdr"], +) + +generated_cc_atom( + name = "SkOrderedFontMgr_hdr", + hdrs = ["SkOrderedFontMgr.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkFontMgr_hdr"], +) + +generated_cc_atom( + name = "SkPaintFilterCanvas_hdr", + hdrs = ["SkPaintFilterCanvas.h"], + visibility = ["//:__subpackages__"], + deps = [ + ":SkNWayCanvas_hdr", + "//include/core:SkCanvasVirtualEnforcer_hdr", + ], +) + +generated_cc_atom( + name = "SkParsePath_hdr", + hdrs = ["SkParsePath.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkPath_hdr"], +) + +generated_cc_atom( + name = "SkParse_hdr", + hdrs = ["SkParse.h"], + visibility = ["//:__subpackages__"], + deps = ["//include/core:SkColor_hdr"], +) + +generated_cc_atom( + name = "SkRandom_hdr", + hdrs = ["SkRandom.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkScalar_hdr", + "//include/private:SkFixed_hdr", + "//include/private:SkFloatBits_hdr", + ], +) + +generated_cc_atom( + name = "SkShadowUtils_hdr", + hdrs = ["SkShadowUtils.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkColor_hdr", + "//include/core:SkPoint3_hdr", + "//include/core:SkScalar_hdr", + "//include/private:SkShadowFlags_hdr", + ], +) + +generated_cc_atom( + name = "SkTextUtils_hdr", + hdrs = ["SkTextUtils.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkCanvas_hdr", + "//include/core:SkFont_hdr", + "//include/core:SkPaint_hdr", + "//include/core:SkString_hdr", + ], +) + +generated_cc_atom( + name = "SkTraceEventPhase_hdr", + hdrs = ["SkTraceEventPhase.h"], + visibility = ["//:__subpackages__"], +) diff --git a/third_party/skia/include/utils/SkNWayCanvas.h b/third_party/skia/include/utils/SkNWayCanvas.h index 9f6655e60004..4470567de618 100644 --- a/third_party/skia/include/utils/SkNWayCanvas.h +++ b/third_party/skia/include/utils/SkNWayCanvas.h @@ -30,7 +30,6 @@ class SK_API SkNWayCanvas : public SkCanvasVirtualEnforcer { bool onDoSaveBehind(const SkRect*) override; void willRestore() override; - void onMarkCTM(const char*) override; void didConcat44(const SkM44&) override; void didSetM44(const SkM44&) override; void didScale(SkScalar, SkScalar) override; diff --git a/third_party/skia/include/utils/mac/BUILD.bazel b/third_party/skia/include/utils/mac/BUILD.bazel new file mode 100644 index 000000000000..5af933472be6 --- /dev/null +++ b/third_party/skia/include/utils/mac/BUILD.bazel @@ -0,0 +1,13 @@ +load("//bazel:macros.bzl", "generated_cc_atom") + +generated_cc_atom( + name = "SkCGUtils_hdr", + hdrs = ["SkCGUtils.h"], + visibility = ["//:__subpackages__"], + deps = [ + "//include/core:SkImageInfo_hdr", + "//include/core:SkImage_hdr", + "//include/core:SkPixmap_hdr", + "//include/core:SkSize_hdr", + ], +) diff --git a/third_party/skia/infra/bots/README.recipes.md b/third_party/skia/infra/bots/README.recipes.md index adcfe05c4e84..c39711dbeff6 100644 --- a/third_party/skia/infra/bots/README.recipes.md +++ b/third_party/skia/infra/bots/README.recipes.md @@ -591,18 +591,18 @@ PYTHON_VERSION_COMPATIBILITY: PY3 — **def [RunSteps](/infra/bots/recipe_modules/vars/examples/full.py#16)(api):** -[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-bot_update -[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-gclient -[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-git -[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/8a0d05dea6b215cdd68fe2fe8093353baf2b4c22/recipes/README.recipes.md#recipe_modules-tryserver -[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-context -[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-file -[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-json -[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-path -[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-platform -[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-properties -[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-python -[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-raw_io -[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-step -[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/README.recipes.md#recipe_modules-time -[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/8ac9cf1c9ff01f9fe1276c8532577127f068d576/recipe_engine/recipe_api.py#881 +[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/02f4003fdbfd383192fa725886af79116b1032aa/recipes/README.recipes.md#recipe_modules-bot_update +[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/02f4003fdbfd383192fa725886af79116b1032aa/recipes/README.recipes.md#recipe_modules-gclient +[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/02f4003fdbfd383192fa725886af79116b1032aa/recipes/README.recipes.md#recipe_modules-git +[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/02f4003fdbfd383192fa725886af79116b1032aa/recipes/README.recipes.md#recipe_modules-tryserver +[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-context +[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-file +[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-json +[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-path +[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-platform +[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-properties +[recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-python +[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-raw_io +[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-step +[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/README.recipes.md#recipe_modules-time +[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/ba4a4b2d4f1f41483b2da98854f648727b4aecdb/recipe_engine/recipe_api.py#881 diff --git a/third_party/skia/infra/bots/assets/bazelisk/VERSION b/third_party/skia/infra/bots/assets/bazelisk/VERSION new file mode 100755 index 000000000000..c227083464fb --- /dev/null +++ b/third_party/skia/infra/bots/assets/bazelisk/VERSION @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/third_party/skia/infra/bots/assets/bazelisk/create.py b/third_party/skia/infra/bots/assets/bazelisk/create.py new file mode 100755 index 000000000000..ddd8e42d4eae --- /dev/null +++ b/third_party/skia/infra/bots/assets/bazelisk/create.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# +# Copyright 2017 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Create the asset.""" + + +import argparse +import os +import subprocess + + +URL = 'https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-linux-amd64' +BINARY = URL.split('/')[-1] + + +def create_asset(target_dir): + """Create the asset.""" + target_file = os.path.join(target_dir, 'bazelisk') + subprocess.call(['wget', URL, '-O', target_file]) + subprocess.call(['chmod', 'ugo+x', target_file]) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--target_dir', '-t', required=True) + args = parser.parse_args() + create_asset(args.target_dir) + + +if __name__ == '__main__': + main() + diff --git a/third_party/skia/infra/bots/assets/provisioning_profile_ios/VERSION b/third_party/skia/infra/bots/assets/provisioning_profile_ios/VERSION index 7813681f5b41..62f9457511f8 100644 --- a/third_party/skia/infra/bots/assets/provisioning_profile_ios/VERSION +++ b/third_party/skia/infra/bots/assets/provisioning_profile_ios/VERSION @@ -1 +1 @@ -5 \ No newline at end of file +6 \ No newline at end of file diff --git a/third_party/skia/infra/bots/assets/skp/VERSION b/third_party/skia/infra/bots/assets/skp/VERSION index 5ca234cb5381..52f6c1a7a0e6 100644 --- a/third_party/skia/infra/bots/assets/skp/VERSION +++ b/third_party/skia/infra/bots/assets/skp/VERSION @@ -1 +1 @@ -345 \ No newline at end of file +352 \ No newline at end of file diff --git a/third_party/skia/infra/bots/assets/skp/create.py b/third_party/skia/infra/bots/assets/skp/create.py index 94cb8fab220c..15c8ccf1b2ca 100755 --- a/third_party/skia/infra/bots/assets/skp/create.py +++ b/third_party/skia/infra/bots/assets/skp/create.py @@ -16,6 +16,7 @@ import shutil import subprocess import sys +import tempfile FILE_DIR = os.path.dirname(os.path.abspath(__file__)) INFRA_BOTS_DIR = os.path.realpath(os.path.join(FILE_DIR, os.pardir, os.pardir)) @@ -26,6 +27,7 @@ BROWSER_EXECUTABLE_ENV_VAR = 'SKP_BROWSER_EXECUTABLE' CHROME_SRC_PATH_ENV_VAR = 'SKP_CHROME_SRC_PATH' UPLOAD_TO_PARTNER_BUCKET_ENV_VAR = 'SKP_UPLOAD_TO_PARTNER_BUCKET' +DM_PATH_ENV_VAR = 'DM_PATH' SKIA_TOOLS = os.path.join(INFRA_BOTS_DIR, os.pardir, os.pardir, 'tools') PRIVATE_SKPS_GS = 'gs://skia-skps/private/skps' @@ -63,16 +65,24 @@ def get_flutter_skps(target_dir): def create_asset(chrome_src_path, browser_executable, target_dir, - upload_to_partner_bucket): + upload_to_partner_bucket, dm_path): """Create the SKP asset. Creates the asset from 3 sources: 1. From Flutter's skp_generator tool. 2. The web pages defined in the tools/skp/page_sets/ directory. - 3. Any private SKPs stored in $PRIVATE_SKPS_GS + 3. Any private SKPs stored in $PRIVATE_SKPS_GS after running dm on + them (see below). + + The script runs the following cmd on the non-generated SKPs stored in + $PRIVATE_SKPS_GS - + `dm --config skp -w newskps/ --skps oldskps/ --src skp` + The cmd updates the version stored in the SKPs so that the versions in + them do not eventually become unsupported. """ browser_executable = os.path.realpath(browser_executable) chrome_src_path = os.path.realpath(chrome_src_path) + dm_path = os.path.realpath(dm_path) target_dir = os.path.realpath(target_dir) if not os.path.exists(target_dir): @@ -153,10 +163,31 @@ def create_asset(chrome_src_path, browser_executable, target_dir, print('Done running webpages_playback.') # 3. Copy over private SKPs from Google storage into the target_dir. - print('Copying SKPs from private GCS bucket...') - subprocess.call([ - 'gsutil', 'cp', os.path.join(PRIVATE_SKPS_GS, '*'), target_dir]) - print('Done copying SKPs from private GCS bucket.') + old_skps_dir = tempfile.mkdtemp() + new_skps_dir = tempfile.mkdtemp() + print('Copying non-generated SKPs from private GCS bucket...') + subprocess.check_call([ + 'gsutil', 'cp', os.path.join(PRIVATE_SKPS_GS, '*'), old_skps_dir]) + print('Updating non-generated SKP versions') + subprocess.check_call([ + dm_path, + '--config', 'skp', + '-w', new_skps_dir, + '--skps', old_skps_dir, + '--src', 'skp']) + + # DM creates artifacts in 2 directory level- one for the config and one for + # the output type. In this case it ends up creating ${temp_dir}/skp/skp/ + for f in os.listdir(os.path.join(new_skps_dir, 'skp', 'skp')): + if f.endswith('.skp'): + # Files generated by DM add a suffix based on the output type. + # For "xyz.skp" DM will create "xyz.skp.skp". We strip out + # the final ".skp" here. + shutil.copyfile( + os.path.join(new_skps_dir, 'skp', 'skp', f), + os.path.join(target_dir, f.replace('.skp.skp', '.skp'))) + shutil.rmtree(old_skps_dir) + shutil.rmtree(new_skps_dir) def main(): @@ -169,9 +200,10 @@ def main(): chrome_src_path = getenv(CHROME_SRC_PATH_ENV_VAR) browser_executable = getenv(BROWSER_EXECUTABLE_ENV_VAR) upload_to_partner_bucket = getenv(UPLOAD_TO_PARTNER_BUCKET_ENV_VAR) == '1' + dm_path = getenv(DM_PATH_ENV_VAR) create_asset(chrome_src_path, browser_executable, args.target_dir, - upload_to_partner_bucket) + upload_to_partner_bucket, dm_path) if __name__ == '__main__': diff --git a/third_party/skia/infra/bots/assets/skp/create_and_upload.py b/third_party/skia/infra/bots/assets/skp/create_and_upload.py index 04421b84925f..5d56ad48a2fa 100755 --- a/third_party/skia/infra/bots/assets/skp/create_and_upload.py +++ b/third_party/skia/infra/bots/assets/skp/create_and_upload.py @@ -25,6 +25,7 @@ def main(): parser = argparse.ArgumentParser() parser.add_argument('--chrome_src_path', '-c', required=True) parser.add_argument('--browser_executable', '-e', required=True) + parser.add_argument('--dm_path', '-d', required=True) parser.add_argument('--upload_to_partner_bucket', action='store_true') parser.add_argument('--dry_run', action='store_true') parser.add_argument('--local', action='store_true') @@ -35,6 +36,7 @@ def main(): os.environ[create.CHROME_SRC_PATH_ENV_VAR] = args.chrome_src_path os.environ[create.UPLOAD_TO_PARTNER_BUCKET_ENV_VAR] = ( '1' if args.upload_to_partner_bucket else '0') + os.environ[create.DM_PATH_ENV_VAR] = args.dm_path sk = os.path.realpath(os.path.join( FILE_DIR, os.pardir, os.pardir, os.pardir, os.pardir, 'bin', 'sk')) diff --git a/third_party/skia/infra/bots/build_task_drivers.sh b/third_party/skia/infra/bots/build_task_drivers.sh index 90e49284d77d..b757945f47dc 100755 --- a/third_party/skia/infra/bots/build_task_drivers.sh +++ b/third_party/skia/infra/bots/build_task_drivers.sh @@ -21,8 +21,7 @@ git commit -a -m "initial commit to make go modules work" export GOFLAGS="-mod=readonly" go mod download go install -v go.skia.org/infra/infra/bots/task_drivers/build_push_docker_image -go install -v go.skia.org/infra/infra/bots/task_drivers/push_apps_from_skia_image -go install -v go.skia.org/infra/infra/bots/task_drivers/push_apps_from_wasm_image +go install -v go.skia.org/infra/infra/bots/task_drivers/canary go install -v go.skia.org/infra/infra/bots/task_drivers/update_go_deps goos=$2 diff --git a/third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go b/third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go index 8bd5a5440ceb..f71f4f7fbe1b 100644 --- a/third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go +++ b/third_party/skia/infra/bots/gen_tasks_logic/dm_flags.go @@ -287,7 +287,6 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { if b.extraConfig("Dawn") { // tint:1045: Tint doesn't implement MatrixInverse yet. skip("_", "gm", "_", "runtime_intrinsics_matrix") - skip("_ test _ crbug_1271431") // skia:12675 configs = []string{"dawn"} } @@ -824,6 +823,9 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { if b.model("iPhone6") { skip("_", "gm", "_", "verylargebitmap") skip("_", "gm", "_", "verylarge_picture_image") + skip("_", "svg", "_", "A_large_blank_world_map_with_oceans_marked_in_blue.svg") + skip("_", "tests", "_", "ImageFilterBlurLargeImage_Gpu") + skip("_", "gm", "_", "wacky_yuv") } if b.matchOs("Mac") && b.cpu() { // skia:6992 @@ -955,6 +957,8 @@ func (b *taskBuilder) dmFlags(internalHardwareLabel string) { skip("_", "tests", "_", "SkSLSwitchDefaultOnly_GPU") skip("_", "tests", "_", "SkSLSwitchWithFallthrough_GPU") skip("_", "tests", "_", "SkSLSwitchWithLoops_GPU") + skip("_", "tests", "_", "SkSLLoopFloat_GPU") + skip("_", "tests", "_", "SkSLLoopInt_GPU") } if !b.extraConfig("Vulkan") && diff --git a/third_party/skia/infra/bots/gen_tasks_logic/gen_tasks_logic.go b/third_party/skia/infra/bots/gen_tasks_logic/gen_tasks_logic.go index 5499f8335d17..4d0dc7535fd3 100644 --- a/third_party/skia/infra/bots/gen_tasks_logic/gen_tasks_logic.go +++ b/third_party/skia/infra/bots/gen_tasks_logic/gen_tasks_logic.go @@ -759,7 +759,7 @@ func (b *taskBuilder) defaultSwarmDimensions() { "Mac11": "Mac-11.4", "Ubuntu18": "Ubuntu-18.04", "Win": DEFAULT_OS_WIN, - "Win10": "Windows-10-19041", + "Win10": "Windows-10-19044", "Win2019": DEFAULT_OS_WIN, "Win7": "Windows-7-SP1", "Win8": "Windows-8.1-SP0", @@ -845,7 +845,7 @@ func (b *taskBuilder) defaultSwarmDimensions() { "MacMini9.1": "arm64-64-Apple_M1", }, "AVX": { - "VMware7.1": "x86-64-E5-2697_v2", + "VMware7.1": "x86-64", }, "AVX2": { "GCE": "x86-64-Haswell_GCE", @@ -1081,8 +1081,7 @@ func (b *jobBuilder) createDockerImage(wasm bool) string { "--swarm_out_dir", specs.PLACEHOLDER_ISOLATED_OUTDIR, ) b.dep(b.buildTaskDrivers("linux", "amd64")) - // TODO(borenet): Does this task need go/go/bin in PATH? - b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin", "go/go/bin") + b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin") b.cas(CAS_EMPTY) b.serviceAccount(b.cfg.ServiceAccountCompile) b.linuxGceDimensions(MACHINE_TYPE_MEDIUM) @@ -1093,7 +1092,7 @@ func (b *jobBuilder) createDockerImage(wasm bool) string { } // createPushAppsFromSkiaDockerImage creates and pushes docker images of some apps -// (eg: fiddler, debugger, api) using the skia-release docker image. +// (eg: fiddler, api) using the skia-release docker image. func (b *jobBuilder) createPushAppsFromSkiaDockerImage() { b.addTask(b.Name, func(b *taskBuilder) { // TODO(borenet): Make this task not use Git. @@ -1104,8 +1103,6 @@ func (b *jobBuilder) createPushAppsFromSkiaDockerImage() { "--task_id", specs.PLACEHOLDER_TASK_ID, "--task_name", b.Name, "--workdir", ".", - "--gerrit_project", "buildbot", - "--gerrit_url", "https://skia-review.googlesource.com", "--repo", specs.PLACEHOLDER_REPO, "--revision", specs.PLACEHOLDER_REVISION, "--patch_issue", specs.PLACEHOLDER_ISSUE, @@ -1114,8 +1111,7 @@ func (b *jobBuilder) createPushAppsFromSkiaDockerImage() { ) b.dep(b.buildTaskDrivers("linux", "amd64")) b.dep(b.createDockerImage(false)) - // TODO(borenet): Does this task need go/go/bin in PATH? - b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin", "go/go/bin") + b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin") b.cas(CAS_EMPTY) b.serviceAccount(b.cfg.ServiceAccountCompile) b.linuxGceDimensions(MACHINE_TYPE_MEDIUM) @@ -1136,8 +1132,6 @@ func (b *jobBuilder) createPushAppsFromWASMDockerImage() { "--task_id", specs.PLACEHOLDER_TASK_ID, "--task_name", b.Name, "--workdir", ".", - "--gerrit_project", "buildbot", - "--gerrit_url", "https://skia-review.googlesource.com", "--repo", specs.PLACEHOLDER_REPO, "--revision", specs.PLACEHOLDER_REVISION, "--patch_issue", specs.PLACEHOLDER_ISSUE, @@ -1146,9 +1140,35 @@ func (b *jobBuilder) createPushAppsFromWASMDockerImage() { ) b.dep(b.buildTaskDrivers("linux", "amd64")) b.dep(b.createDockerImage(true)) - // TODO(borenet): Does this task need go/go/bin in PATH? - b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin", "go/go/bin") + b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin") + b.cas(CAS_EMPTY) + b.serviceAccount(b.cfg.ServiceAccountCompile) + b.linuxGceDimensions(MACHINE_TYPE_MEDIUM) + b.usesDocker() + b.cache(CACHES_DOCKER...) + }) +} + +// createPushBazelAppsFromWASMDockerImage pushes those infra apps that have been ported to Bazel +// and require assets built in the WASM docker image. +// TODO(kjlubick) The inputs to this job should not be the docker build, but a Bazel build. +func (b *jobBuilder) createPushBazelAppsFromWASMDockerImage() { + b.addTask(b.Name, func(b *taskBuilder) { + // TODO(borenet): Make this task not use Git. + b.usesGit() + b.cmd( + "./push_bazel_apps_from_wasm_image", + "--project_id", "skia-swarming-bots", + "--task_id", specs.PLACEHOLDER_TASK_ID, + "--task_name", b.Name, + "--workdir", ".", + "--skia_revision", specs.PLACEHOLDER_REVISION, + ) + b.dep(b.buildTaskDrivers("linux", "amd64")) + b.dep(b.createDockerImage(true)) + b.addToPATH("cipd_bin_packages", "cipd_bin_packages/bin", "bazelisk") b.cas(CAS_EMPTY) + b.cipd(b.MustGetCipdPackageFromAsset("bazelisk")) b.serviceAccount(b.cfg.ServiceAccountCompile) b.linuxGceDimensions(MACHINE_TYPE_MEDIUM) b.usesDocker() @@ -1288,6 +1308,7 @@ func (b *jobBuilder) recreateSKPs() { "--patch_ref", specs.PLACEHOLDER_PATCH_REF, "--git_cache", "cache/git", "--checkout_root", "cache/work", + "--dm_path", "build/dm", } if b.matchExtraConfig("DryRun") { cmd = append(cmd, "--dry_run") @@ -1295,6 +1316,7 @@ func (b *jobBuilder) recreateSKPs() { b.addTask(b.Name, func(b *taskBuilder) { b.cas(CAS_RECREATE_SKPS) b.dep(b.buildTaskDrivers("linux", "amd64")) + b.dep("Build-Debian10-Clang-x86_64-Release") // To get DM. b.cmd(cmd...) b.cipd(CIPD_PKG_LUCI_AUTH) b.serviceAccount(b.cfg.ServiceAccountRecreateSKPs) @@ -1658,7 +1680,7 @@ func (b *jobBuilder) fm() { // canary generates a task that uses TaskDrivers to trigger canary manual rolls on autorollers. // Canary-G3 does not use this path because it is very different from other autorollers. -func (b *jobBuilder) canary(rollerName string) { +func (b *jobBuilder) canary(rollerName, canaryCQKeyword, targetProjectBaseURL string) { b.addTask(b.Name, func(b *taskBuilder) { b.cas(CAS_EMPTY) b.dep(b.buildTaskDrivers("linux", "amd64")) @@ -1668,6 +1690,8 @@ func (b *jobBuilder) canary(rollerName string) { "--task_id", specs.PLACEHOLDER_TASK_ID, "--task_name", b.Name, "--roller_name", rollerName, + "--cq_keyword", canaryCQKeyword, + "--target_project_base_url", targetProjectBaseURL, "--repo", specs.PLACEHOLDER_REPO, "--revision", specs.PLACEHOLDER_REVISION, "--patch_issue", specs.PLACEHOLDER_ISSUE, diff --git a/third_party/skia/infra/bots/gen_tasks_logic/job_builder.go b/third_party/skia/infra/bots/gen_tasks_logic/job_builder.go index 0ffc6097573e..892278952c76 100644 --- a/third_party/skia/infra/bots/gen_tasks_logic/job_builder.go +++ b/third_party/skia/infra/bots/gen_tasks_logic/job_builder.go @@ -124,6 +124,9 @@ func (b *jobBuilder) genTasksForJob() { } else if b.extraConfig("PushAppsFromWASMDockerImage") { b.createPushAppsFromWASMDockerImage() return + } else if b.extraConfig("PushBazelAppsFromWASMDockerImage") { + b.createPushBazelAppsFromWASMDockerImage() + return } // Infra tests. @@ -191,13 +194,13 @@ func (b *jobBuilder) genTasksForJob() { b.g3FrameworkCanary() return } else if b.project("Android") { - b.canary("android-master-autoroll") + b.canary("android-master-autoroll", "Canary-Android-Topic", "https://googleplex-android-review.googlesource.com/q/topic:") return } else if b.project("Chromium") { - b.canary("skia-autoroll") + b.canary("skia-autoroll", "Canary-Chromium-CL", "https://chromium-review.googlesource.com/c/") return } else if b.project("Flutter") { - b.canary("skia-flutter-autoroll") + b.canary("skia-flutter-autoroll", "Canary-Flutter-PR", "https://github.com/flutter/engine/pull/") return } } diff --git a/third_party/skia/infra/bots/jobs.json b/third_party/skia/infra/bots/jobs.json index b509c8de8a39..9fd1b76cbc4a 100644 --- a/third_party/skia/infra/bots/jobs.json +++ b/third_party/skia/infra/bots/jobs.json @@ -264,6 +264,7 @@ {"name": "Housekeeper-PerCommit-IsolateSkImage"}, {"name": "Housekeeper-PerCommit-PushAppsFromSkiaDockerImage"}, {"name": "Housekeeper-PerCommit-PushAppsFromWASMDockerImage"}, + {"name": "Housekeeper-PerCommit-PushBazelAppsFromWASMDockerImage"}, { "name": "Housekeeper-PerCommit-RunGnToBp", "cq_config": {} @@ -697,10 +698,7 @@ {"name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Debug-All-Vulkan"}, {"name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All"}, {"name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-ANGLE"}, - { - "name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D", - "cq_config": {} - }, + {"name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D"}, {"name": "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Vulkan"}, {"name": "Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All"}, {"name": "Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE"}, @@ -712,7 +710,10 @@ {"name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Direct3D"}, {"name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Debug-All-Vulkan"}, {"name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All"}, - {"name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D"}, + { + "name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D", + "cq_config": {} + }, {"name": "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan"}, {"name": "Test-Win2019-Clang-GCE-CPU-AVX2-x86-Debug-All"}, {"name": "Test-Win2019-Clang-GCE-CPU-AVX2-x86-Release-All"}, diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/android.py b/third_party/skia/infra/bots/recipe_modules/flavor/android.py index 62a49c0b1f17..bcfe97639bf5 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/android.py +++ b/third_party/skia/infra/bots/recipe_modules/flavor/android.py @@ -88,7 +88,19 @@ def _adb(self, title, *cmd, **kwargs): def wait_for_device(attempt): self.m.run(self.m.step, - 'kill adb server after failure of \'%s\' (attempt %d)' % ( + 'adb reconnect after failure of \'%s\' (attempt %d)' % ( + title, attempt), + cmd=[self.ADB_BINARY, 'reconnect'], + infra_step=True, timeout=30, abort_on_failure=False, + fail_build_on_failure=False) + self.m.run(self.m.step, + 'wait for device after failure of \'%s\' (attempt %d)' % ( + title, attempt), + cmd=[self.ADB_BINARY, 'wait-for-device'], infra_step=True, + timeout=180, abort_on_failure=False, + fail_build_on_failure=False) + self.m.run(self.m.step, + 'adb reconnect device after failure of \'%s\' (attempt %d)' % ( title, attempt), cmd=[self.ADB_BINARY, 'reconnect', 'device'], infra_step=True, timeout=30, abort_on_failure=False, @@ -547,7 +559,7 @@ def copy_directory_contents_to_device(self, host, device): host, '*', test_data=['foo.png', 'bar.jpg']) args = contents + [device] - self._adb('push %s/* %s' % (host, device), 'push', *args) + self._adb('push --sync %s/* %s' % (host, device), 'push', *args) def copy_directory_contents_to_host(self, device, host): # TODO(borenet): When all of our devices are on Android 6.0 and up, we can diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json index 195ab35b6ccb..b893a15267d7 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json @@ -230,7 +230,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -425,7 +425,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -636,7 +636,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -847,7 +847,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan.json index c7020811c5a4..4981af114cf6 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan.json @@ -263,7 +263,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -458,7 +458,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -669,7 +669,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -880,7 +880,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json index 5008c4987681..03fa12f6a134 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json @@ -246,7 +246,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -441,7 +441,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -652,7 +652,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -863,7 +863,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android.json index 59d709870341..cdf9075ea040 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-NVIDIA_Shield-CPU-TegraX1-arm64-Release-All-Android.json @@ -405,7 +405,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/text_blob_traces/* /sdcard/revenge_of_the_skiabot/text_blob_traces" + "name": "push --sync [START_DIR]/text_blob_traces/* /sdcard/revenge_of_the_skiabot/text_blob_traces" }, { "cmd": [ @@ -457,7 +457,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -652,7 +652,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -863,7 +863,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1074,7 +1074,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json index 79b06427bf6b..435bb78a4e40 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json @@ -627,7 +627,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -822,7 +822,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -1033,7 +1033,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1244,7 +1244,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json index e81989f6607a..7b1715f6bd2b 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json @@ -724,7 +724,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp" + "name": "push --sync [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json index 10014f81c36b..21928b0047cf 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json @@ -291,7 +291,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -486,7 +486,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -697,7 +697,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -908,7 +908,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json index 1ef401d88f6e..f39a3bbb171e 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json @@ -246,7 +246,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -441,7 +441,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -652,7 +652,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -863,7 +863,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json index 9a5b9952c426..006f8ba47634 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json @@ -536,7 +536,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -731,7 +731,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -942,7 +942,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1153,7 +1153,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json index d40cae62d4f1..f736a5f16854 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json @@ -626,7 +626,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -821,7 +821,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -1032,7 +1032,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1243,7 +1243,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json index 4b7b3248c294..dc7570db3f53 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json @@ -291,7 +291,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -486,7 +486,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -697,7 +697,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -908,7 +908,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json index 68951a290f50..0fae9502209c 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json @@ -702,7 +702,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -897,7 +897,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -1108,7 +1108,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1319,7 +1319,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json index a20759ada434..c559ac378685 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json @@ -627,7 +627,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -822,7 +822,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -1033,7 +1033,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1244,7 +1244,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json index 974e0282cf51..b71c3c479847 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json @@ -627,7 +627,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -822,7 +822,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -895,6 +895,36 @@ "@@@STEP_EXCEPTION@@@" ] }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "reconnect" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "adb reconnect after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1)", + "timeout": 30 + }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "wait-for-device" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "wait for device after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1)", + "timeout": 180 + }, { "cmd": [ "/opt/infra-android/tools/adb", @@ -908,7 +938,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "kill adb server after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1)", + "name": "adb reconnect device after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1)", "timeout": 30 }, { @@ -923,7 +953,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "wait for device after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1)", + "name": "wait for device after failure of 'read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION' (attempt 1) (2)", "timeout": 180 }, { @@ -1083,7 +1113,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1294,7 +1324,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json index 7ab460bd4a40..c565d4595639 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json @@ -199,6 +199,36 @@ "@@@STEP_EXCEPTION@@@" ] }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "reconnect" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "adb reconnect after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "timeout": 30 + }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "wait-for-device" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "timeout": 180 + }, { "cmd": [ "/opt/infra-android/tools/adb", @@ -212,7 +242,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "kill adb server after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "name": "adb reconnect device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", "timeout": 30 }, { @@ -227,7 +257,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1) (2)", "timeout": 180 }, { @@ -678,7 +708,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -873,7 +903,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -1084,7 +1114,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1295,7 +1325,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command_retries_exhausted.json b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command_retries_exhausted.json index 0caebbc292ff..593dce99714e 100644 --- a/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command_retries_exhausted.json +++ b/third_party/skia/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command_retries_exhausted.json @@ -199,6 +199,36 @@ "@@@STEP_EXCEPTION@@@" ] }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "reconnect" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "adb reconnect after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "timeout": 30 + }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "wait-for-device" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "timeout": 180 + }, { "cmd": [ "/opt/infra-android/tools/adb", @@ -212,7 +242,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "kill adb server after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "name": "adb reconnect device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", "timeout": 30 }, { @@ -227,7 +257,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1)", + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 1) (2)", "timeout": 180 }, { @@ -250,6 +280,36 @@ "@@@STEP_EXCEPTION@@@" ] }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "reconnect" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "adb reconnect after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)", + "timeout": 30 + }, + { + "cmd": [ + "/opt/infra-android/tools/adb", + "wait-for-device" + ], + "cwd": "[START_DIR]/skia", + "env": { + "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey", + "CHROME_HEADLESS": "1", + "PATH": ":RECIPE_REPO[depot_tools]" + }, + "infra_step": true, + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)", + "timeout": 180 + }, { "cmd": [ "/opt/infra-android/tools/adb", @@ -263,7 +323,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "kill adb server after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)", + "name": "adb reconnect device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)", "timeout": 30 }, { @@ -278,7 +338,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2)", + "name": "wait for device after failure of 'mkdir /sdcard/revenge_of_the_skiabot/resources' (attempt 2) (2)", "timeout": 180 }, { diff --git a/third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json b/third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json index 83d4121f4dd0..a3e79a374d73 100644 --- a/third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json @@ -372,7 +372,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/text_blob_traces/* /sdcard/revenge_of_the_skiabot/text_blob_traces" + "name": "push --sync [START_DIR]/text_blob_traces/* /sdcard/revenge_of_the_skiabot/text_blob_traces" }, { "cmd": [ @@ -424,7 +424,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -619,7 +619,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -830,7 +830,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1041,7 +1041,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json index da645e681f9a..ac4bdb752752 100644 --- a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json +++ b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json @@ -139,7 +139,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -334,7 +334,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" + "name": "push --sync [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json index 7d7dd1ac9bef..ef9c98af2f7f 100644 --- a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json +++ b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json @@ -139,7 +139,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -334,7 +334,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" + "name": "push --sync [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json index 73a77fd79bce..c1ff2f80ca15 100644 --- a/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json +++ b/third_party/skia/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json @@ -139,7 +139,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -334,7 +334,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" + "name": "push --sync [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_AllPathsVolatile_Skpbench.json b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_AllPathsVolatile_Skpbench.json index b6008f318a7c..90aa857afafc 100644 --- a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_AllPathsVolatile_Skpbench.json +++ b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_AllPathsVolatile_Skpbench.json @@ -254,7 +254,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_AllPathsVolatile_Skpbench.json b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_AllPathsVolatile_Skpbench.json index c2fcadc40358..958ff84e0ad3 100644 --- a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_AllPathsVolatile_Skpbench.json +++ b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_AllPathsVolatile_Skpbench.json @@ -254,7 +254,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json index 2a1e078dc0fd..cf4477451fd6 100644 --- a/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json +++ b/third_party/skia/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Release-All-Android_Skpbench_Mskp.json @@ -237,7 +237,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp" + "name": "push --sync [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/skpbench.expected/trybot.json b/third_party/skia/infra/bots/recipes/skpbench.expected/trybot.json index d5e3a3d56e90..0b9112582a81 100644 --- a/third_party/skia/infra/bots/recipes/skpbench.expected/trybot.json +++ b/third_party/skia/infra/bots/recipes/skpbench.expected/trybot.json @@ -237,7 +237,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm-Debug-All-Android_ASAN.json b/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm-Debug-All-Android_ASAN.json index a131b4316ef0..0b238304e374 100644 --- a/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm-Debug-All-Android_ASAN.json +++ b/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm-Debug-All-Android_ASAN.json @@ -474,7 +474,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -669,7 +669,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -880,7 +880,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1091,7 +1091,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json b/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json index e74a23a739d2..0aae9ed91770 100644 --- a/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json +++ b/third_party/skia/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json @@ -384,7 +384,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" + "name": "push --sync [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources" }, { "cmd": [ @@ -579,7 +579,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" + "name": "push --sync [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps" }, { "cmd": [ @@ -790,7 +790,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" + "name": "push --sync [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images" }, { "cmd": [ @@ -1001,7 +1001,7 @@ "PATH": ":RECIPE_REPO[depot_tools]" }, "infra_step": true, - "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" + "name": "push --sync [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs" }, { "cmd": [ diff --git a/third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian10-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json b/third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian10-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json index 58bfbc53dac3..0bebbd8cebc3 100644 --- a/third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian10-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json +++ b/third_party/skia/infra/bots/recipes/test_canvaskit.expected/Test-Debian10-EMCC-GCE-GPU-WEBGL1-wasm-Debug-All-CanvasKit.json @@ -9,7 +9,7 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, "name": "mkdirs copy_dest" @@ -96,10 +96,10 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, - "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/npm_build/bin", + "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/build", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -113,10 +113,10 @@ "/path/to/tmp/json", "copy", "[START_DIR]/build/canvaskit.js", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.js" ], "infra_step": true, - "name": "Docker setup.cp [START_DIR]/build/canvaskit.js [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js", + "name": "Docker setup.cp [START_DIR]/build/canvaskit.js [START_DIR]/skia/modules/canvaskit/build/canvaskit.js", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -125,10 +125,10 @@ "cmd": [ "chmod", "644", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.js" ], "infra_step": true, - "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js", + "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/build/canvaskit.js", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -143,10 +143,10 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, - "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/npm_build/bin (2)", + "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/build (2)", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -160,10 +160,10 @@ "/path/to/tmp/json", "copy", "[START_DIR]/build/canvaskit.wasm", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm" ], "infra_step": true, - "name": "Docker setup.cp [START_DIR]/build/canvaskit.wasm [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm", + "name": "Docker setup.cp [START_DIR]/build/canvaskit.wasm [START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -172,10 +172,10 @@ "cmd": [ "chmod", "644", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm" ], "infra_step": true, - "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm", + "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] diff --git a/third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json b/third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json index f7f79ce0600d..b36a0f69e18d 100644 --- a/third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json +++ b/third_party/skia/infra/bots/recipes/test_canvaskit.expected/canvaskit_trybot.json @@ -9,7 +9,7 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, "name": "mkdirs copy_dest" @@ -96,10 +96,10 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, - "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/npm_build/bin", + "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/build", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -113,10 +113,10 @@ "/path/to/tmp/json", "copy", "[START_DIR]/build/canvaskit.js", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.js" ], "infra_step": true, - "name": "Docker setup.cp [START_DIR]/build/canvaskit.js [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js", + "name": "Docker setup.cp [START_DIR]/build/canvaskit.js [START_DIR]/skia/modules/canvaskit/build/canvaskit.js", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -125,10 +125,10 @@ "cmd": [ "chmod", "644", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.js" ], "infra_step": true, - "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.js", + "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/build/canvaskit.js", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -143,10 +143,10 @@ "ensure-directory", "--mode", "0777", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin" + "[START_DIR]/skia/modules/canvaskit/build" ], "infra_step": true, - "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/npm_build/bin (2)", + "name": "Docker setup.mkdirs [START_DIR]/skia/modules/canvaskit/build (2)", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -160,10 +160,10 @@ "/path/to/tmp/json", "copy", "[START_DIR]/build/canvaskit.wasm", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm" ], "infra_step": true, - "name": "Docker setup.cp [START_DIR]/build/canvaskit.wasm [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm", + "name": "Docker setup.cp [START_DIR]/build/canvaskit.wasm [START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] @@ -172,10 +172,10 @@ "cmd": [ "chmod", "644", - "[START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm" + "[START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm" ], "infra_step": true, - "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/npm_build/bin/canvaskit.wasm", + "name": "Docker setup.chmod 644 [START_DIR]/skia/modules/canvaskit/build/canvaskit.wasm", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@1@@@" ] diff --git a/third_party/skia/infra/bots/recipes/test_canvaskit.py b/third_party/skia/infra/bots/recipes/test_canvaskit.py index 06ae06bbeeb3..2a107af026e8 100644 --- a/third_party/skia/infra/bots/recipes/test_canvaskit.py +++ b/third_party/skia/infra/bots/recipes/test_canvaskit.py @@ -32,10 +32,10 @@ def RunSteps(api): checkout_root = api.path['start_dir'] out_dir = api.vars.swarming_out_dir - # The karma script is configured to look in ./npm_build/bin/ for + # The karma script is configured to look in ./build/ for # the test files to load, so we must copy them there (see Set up for docker). copy_dest = checkout_root.join('skia', 'modules', 'canvaskit', - 'npm_build', 'bin') + 'build') api.file.ensure_directory('mkdirs copy_dest', copy_dest, mode=0o777) base_dir = api.vars.build_dir copies = [ diff --git a/third_party/skia/infra/bots/task_drivers/canary/canary.go b/third_party/skia/infra/bots/task_drivers/canary/canary.go deleted file mode 100644 index c6d54c6f3f72..000000000000 --- a/third_party/skia/infra/bots/task_drivers/canary/canary.go +++ /dev/null @@ -1,174 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package main - -import ( - "context" - "errors" - "flag" - "fmt" - "time" - - "cloud.google.com/go/datastore" - - "go.skia.org/infra/autoroll/go/manual" - "go.skia.org/infra/go/auth" - "go.skia.org/infra/go/firestore" - "go.skia.org/infra/go/skerr" - "go.skia.org/infra/task_driver/go/lib/auth_steps" - "go.skia.org/infra/task_driver/go/lib/checkout" - "go.skia.org/infra/task_driver/go/td" -) - -const ( - MinWaitDuration = 4 * time.Minute -) - -var ( - canaryRollNotCreatedErr = errors.New("Canary roll could not be created. Ask the Infra Gardener to investigate (or directly ping rmistry@) if this happens consistently.") - canaryRollSuccessTooQuicklyErr = fmt.Errorf("Canary roll returned success in less than %s. Failing canary due to skbug.com/10563.", MinWaitDuration) - - // Lets add the roll link only once to step data. - addedRollLinkStepData = false -) - -func main() { - var ( - projectId = flag.String("project_id", "", "ID of the Google Cloud project.") - taskId = flag.String("task_id", "", "ID of this task.") - taskName = flag.String("task_name", "", "Name of the task.") - output = flag.String("o", "", "If provided, dump a JSON blob of step data to the given file. Prints to stdout if '-' is given.") - local = flag.Bool("local", true, "True if running locally (as opposed to on the bots)") - - checkoutFlags = checkout.SetupFlags(nil) - - rollerName = flag.String("roller_name", "", "The roller we will use to create the canary with.") - ) - ctx := td.StartRun(projectId, taskId, taskName, output, local) - defer td.EndRun(ctx) - if *rollerName == "" { - td.Fatalf(ctx, "--roller_name must be specified") - } - - rs, err := checkout.GetRepoState(checkoutFlags) - if err != nil { - td.Fatal(ctx, skerr.Wrap(err)) - } - if rs.Issue == "" || rs.Patchset == "" { - td.Fatalf(ctx, "This task driver should be run only as a try bot") - } - - // Create token source with scope for datastore access. - ts, err := auth_steps.Init(ctx, *local, auth.ScopeUserinfoEmail, datastore.ScopeDatastore) - if err != nil { - td.Fatal(ctx, skerr.Wrap(err)) - } - - // Add documentation link for canary rolls. - td.StepText(ctx, "Canary roll doc", "https://goto.google.com/autoroller-canary-bots") - - // Instantiate firestore DB. - manualRollDB, err := manual.NewDBWithParams(ctx, firestore.FIRESTORE_PROJECT, "production", ts) - if err != nil { - td.Fatal(ctx, skerr.Wrap(err)) - } - - // Retry if canary roll could not be created or if canary roll returned - // success too quickly (skbug.com/10563). - retryAttempts := 3 - for retry := 0; ; retry++ { - retryText := "" - if retry > 0 { - retryText = fmt.Sprintf(" (Retry #%d)", retry) - } - - req := manual.ManualRollRequest{ - Requester: *rollerName, - RollerName: *rollerName, - Status: manual.STATUS_PENDING, - Timestamp: firestore.FixTimestamp(time.Now()), - Revision: rs.GetPatchRef(), - - DryRun: true, - NoEmail: true, - NoResolveRevision: true, - } - if err := td.Do(ctx, td.Props(fmt.Sprintf("Trigger canary roll%s", retryText)).Infra(), func(ctx context.Context) error { - return manualRollDB.Put(&req) - }); err != nil { - // Immediately fail for errors in triggering. - td.Fatal(ctx, skerr.Wrap(err)) - } - - if err := waitForCanaryRoll(ctx, manualRollDB, req.Id, fmt.Sprintf("Wait for canary roll%s", retryText)); err != nil { - // Retry these errors. - if err == canaryRollNotCreatedErr || err == canaryRollSuccessTooQuicklyErr { - if retry >= (retryAttempts - 1) { - td.Fatal(ctx, skerr.Wrapf(err, "failed inspite of 3 retries")) - } - time.Sleep(time.Minute) - continue - } - // Immediately fail for all other errors. - td.Fatal(ctx, skerr.Wrap(err)) - } else { - // The canary roll was successful, break out of the - // retry loop. - break - } - } -} - -func waitForCanaryRoll(parentCtx context.Context, manualRollDB manual.DB, rollId, stepName string) error { - ctx := td.StartStep(parentCtx, td.Props(stepName)) - defer td.EndStep(ctx) - startTime := time.Now() - - // For writing to the step's log stream. - stdout := td.NewLogStream(ctx, "stdout", td.SeverityInfo) - for { - roll, err := manualRollDB.Get(ctx, rollId) - if err != nil { - return td.FailStep(ctx, fmt.Errorf("Could not find canary roll with ID: %s", rollId)) - } - cl := roll.Url - var rollStatus string - if cl == "" { - rollStatus = fmt.Sprintf("Canary roll has status %s", roll.Status) - } else { - if !addedRollLinkStepData { - // Add the roll link to both the current step and it's parent. - td.StepText(ctx, "Canary roll CL", cl) - td.StepText(parentCtx, "Canary roll CL", cl) - addedRollLinkStepData = true - } - rollStatus = fmt.Sprintf("Canary roll [ %s ] has status %s", roll.Url, roll.Status) - } - if _, err := stdout.Write([]byte(rollStatus)); err != nil { - return td.FailStep(ctx, fmt.Errorf("Could not write to stdout: %s", err)) - } - - if roll.Status == manual.STATUS_COMPLETE { - if roll.Result == manual.RESULT_SUCCESS { - // This is a hopefully temperory workaround for skbug.com/10563. Sometimes - // Canary-Chromium returns success immediately after creating a change and - // before the tryjobs have a chance to run. If we have waited - // for < MinWaitDuration then be cautious and assume failure. - if time.Now().Before(startTime.Add(MinWaitDuration)) { - return td.FailStep(ctx, canaryRollSuccessTooQuicklyErr) - } - return nil - } else if roll.Result == manual.RESULT_FAILURE { - if cl == "" { - return td.FailStep(ctx, canaryRollNotCreatedErr) - } - return td.FailStep(ctx, fmt.Errorf("Canary roll [ %s ] failed", cl)) - } else if roll.Result == manual.RESULT_UNKNOWN { - return td.FailStep(ctx, fmt.Errorf("Canary roll [ %s ] completed with an unknown result", cl)) - } - } - time.Sleep(30 * time.Second) - } -} diff --git a/third_party/skia/infra/bots/task_drivers/push_apps_from_skia_image/push_apps_from_skia_image.go b/third_party/skia/infra/bots/task_drivers/push_apps_from_skia_image/push_apps_from_skia_image.go new file mode 100644 index 000000000000..3459214fcda7 --- /dev/null +++ b/third_party/skia/infra/bots/task_drivers/push_apps_from_skia_image/push_apps_from_skia_image.go @@ -0,0 +1,188 @@ +// Copyright 2021 Google Inc. +// +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This executable builds the Docker images based off the Skia executables in the +// gcr.io/skia-public/skia-release image. It then issues a PubSub notification to have those apps +// tagged and deployed by docker_pushes_watcher. +// See //docker_pushes_watcher/README.md in the infra repo for more. +package main + +import ( + "context" + "flag" + "fmt" + "io/ioutil" + "os" + "path" + + "cloud.google.com/go/pubsub" + "google.golang.org/api/option" + + "go.skia.org/infra/go/auth" + docker_pubsub "go.skia.org/infra/go/docker/build/pubsub" + "go.skia.org/infra/go/util" + "go.skia.org/infra/task_driver/go/lib/auth_steps" + "go.skia.org/infra/task_driver/go/lib/checkout" + "go.skia.org/infra/task_driver/go/lib/docker" + "go.skia.org/infra/task_driver/go/lib/golang" + "go.skia.org/infra/task_driver/go/lib/os_steps" + "go.skia.org/infra/task_driver/go/td" +) + +var ( + // Required properties for this task. + projectId = flag.String("project_id", "", "ID of the Google Cloud project.") + taskId = flag.String("task_id", "", "ID of this task.") + taskName = flag.String("task_name", "", "Name of the task.") + workdir = flag.String("workdir", ".", "Working directory") + + checkoutFlags = checkout.SetupFlags(nil) + + // Optional flags. + local = flag.Bool("local", false, "True if running locally (as opposed to on the bots)") + output = flag.String("o", "", "If provided, dump a JSON blob of step data to the given file. Prints to stdout if '-' is given.") +) + +const ( + fiddlerImageName = "fiddler" + apiImageName = "api" +) + +var ( + infraCommonEnv = []string{ + "SKIP_BUILD=1", + "ROOT=/OUT", + } + infraCommonBuildArgs = map[string]string{ + "SKIA_IMAGE_NAME": "skia-release", + } +) + +func buildPushFiddlerImage(ctx context.Context, tag, repo, configDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + image := fmt.Sprintf("gcr.io/skia-public/%s", fiddlerImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/fiddlek && ./build_fiddler_release"} + volumes := []string{fmt.Sprintf("%s:/OUT", tempDir)} + err = docker.BuildPushImageFromInfraImage(ctx, "Fiddler", image, tag, repo, configDir, tempDir, "prod", topic, cmd, volumes, infraCommonEnv, infraCommonBuildArgs) + if err != nil { + return err + } + return cleanupTempFiles(ctx, configDir, volumes) +} + +func cleanupTempFiles(ctx context.Context, configDir string, volumes []string) error { + // Remove all temporary files from the host machine. Swarming gets upset if there are root-owned + // files it cannot clean up. + const infraImageWithTag = "gcr.io/skia-public/infra:prod" + cleanupCmd := []string{"/bin/sh", "-c", "rm -rf /OUT/*"} + return docker.Run(ctx, infraImageWithTag, configDir, cleanupCmd, volumes, nil) +} + +func buildPushApiImage(ctx context.Context, tag, repo, configDir, checkoutDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + // Change perms of the directory for doxygen to be able to write to it. + if err := os.Chmod(tempDir, 0777); err != nil { + return err + } + // Run Doxygen pointing to the location of the checkout and the out dir. + volumes := []string{ + fmt.Sprintf("%s:/OUT", tempDir), + fmt.Sprintf("%s:/CHECKOUT", checkoutDir), + } + env := []string{ + "OUTPUT_DIRECTORY=/OUT", + } + doxygenCmd := []string{"/bin/sh", "-c", "cd /CHECKOUT/tools/doxygen && doxygen ProdDoxyfile"} + if err := docker.Run(ctx, "gcr.io/skia-public/doxygen:testing-slim", configDir, doxygenCmd, volumes, env); err != nil { + return err + } + + image := fmt.Sprintf("gcr.io/skia-public/%s", apiImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/api && make release_ci"} + infraEnv := util.CopyStringSlice(infraCommonEnv) + infraEnv = append(infraEnv, "DOXYGEN_HTML=/OUT/html") + infraVolumes := []string{fmt.Sprintf("%s:/OUT", tempDir)} + err = docker.BuildPushImageFromInfraImage(ctx, "Api", image, tag, repo, configDir, tempDir, "prod", topic, cmd, infraVolumes, infraEnv, infraCommonBuildArgs) + if err != nil { + return err + } + return cleanupTempFiles(ctx, configDir, volumes) +} + +func main() { + // Setup. + ctx := td.StartRun(projectId, taskId, taskName, output, local) + defer td.EndRun(ctx) + + rs, err := checkout.GetRepoState(checkoutFlags) + if err != nil { + td.Fatal(ctx, err) + } + + wd, err := os_steps.Abs(ctx, *workdir) + if err != nil { + td.Fatal(ctx, err) + } + + // Check out the code. + co, err := checkout.EnsureGitCheckout(ctx, path.Join(wd, "repo"), rs) + if err != nil { + td.Fatal(ctx, err) + } + + // Setup go. + ctx = golang.WithEnv(ctx, wd) + + // Create token source with scope for cloud registry (storage) and pubsub. + ts, err := auth_steps.Init(ctx, *local, auth.ScopeUserinfoEmail, auth.ScopeFullControl, pubsub.ScopePubSub) + if err != nil { + td.Fatal(ctx, err) + } + + // Create pubsub client. + client, err := pubsub.NewClient(ctx, docker_pubsub.TOPIC_PROJECT_ID, option.WithTokenSource(ts)) + if err != nil { + td.Fatal(ctx, err) + } + topic := client.Topic(docker_pubsub.TOPIC) + + // Figure out which tag to use for docker build and push. + tag := rs.Revision + if rs.Issue != "" && rs.Patchset != "" { + tag = fmt.Sprintf("%s_%s", rs.Issue, rs.Patchset) + } + // Add the tag to infraCommonBuildArgs. + infraCommonBuildArgs["SKIA_IMAGE_TAG"] = tag + + // Create a temporary config dir for Docker. + configDir, err := ioutil.TempDir("", "") + if err != nil { + td.Fatal(ctx, err) + } + defer util.RemoveAll(configDir) + + // Login to docker (required to push to docker). + token, err := ts.Token() + if err != nil { + td.Fatal(ctx, err) + } + if err := docker.Login(ctx, token.AccessToken, "gcr.io/skia-public/", configDir); err != nil { + td.Fatal(ctx, err) + } + + // Build and push all apps of interest below. + if err := buildPushFiddlerImage(ctx, tag, rs.Repo, configDir, topic); err != nil { + td.Fatal(ctx, err) + } + if err := buildPushApiImage(ctx, tag, rs.Repo, configDir, co.Dir(), topic); err != nil { + td.Fatal(ctx, err) + } +} diff --git a/third_party/skia/infra/bots/task_drivers/push_apps_from_wasm_image/push_apps_from_wasm_image.go b/third_party/skia/infra/bots/task_drivers/push_apps_from_wasm_image/push_apps_from_wasm_image.go new file mode 100644 index 000000000000..3ee7f36e2ccb --- /dev/null +++ b/third_party/skia/infra/bots/task_drivers/push_apps_from_wasm_image/push_apps_from_wasm_image.go @@ -0,0 +1,204 @@ +// Copyright 2021 Google Inc. +// +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This executable builds the Docker images based off the WASM executables in the +// gcr.io/skia-public/skia-wasm-release image. It then issues a PubSub notification to have those apps +// tagged and deployed by docker_pushes_watcher. +// See //docker_pushes_watcher/README.md in the infra repo for more. +package main + +import ( + "context" + "flag" + "fmt" + "io/ioutil" + + "cloud.google.com/go/pubsub" + "google.golang.org/api/option" + + "go.skia.org/infra/go/auth" + docker_pubsub "go.skia.org/infra/go/docker/build/pubsub" + "go.skia.org/infra/go/util" + "go.skia.org/infra/task_driver/go/lib/auth_steps" + "go.skia.org/infra/task_driver/go/lib/checkout" + "go.skia.org/infra/task_driver/go/lib/docker" + "go.skia.org/infra/task_driver/go/lib/golang" + "go.skia.org/infra/task_driver/go/lib/os_steps" + "go.skia.org/infra/task_driver/go/td" +) + +var ( + // Required properties for this task. + projectId = flag.String("project_id", "", "ID of the Google Cloud project.") + taskId = flag.String("task_id", "", "ID of this task.") + taskName = flag.String("task_name", "", "Name of the task.") + workdir = flag.String("workdir", ".", "Working directory") + + checkoutFlags = checkout.SetupFlags(nil) + + // Optional flags. + local = flag.Bool("local", false, "True if running locally (as opposed to on the bots)") + output = flag.String("o", "", "If provided, dump a JSON blob of step data to the given file. Prints to stdout if '-' is given.") +) + +const ( + debuggerImageName = "debugger-app" + particlesImageName = "particles" + shaderImageName = "shaders" + skottieImageName = "skottie" +) + +var ( + infraCommonEnv = []string{ + "SKIP_BUILD=1", + "ROOT=/WORKSPACE", + } +) + +func buildPushSkottieImage(ctx context.Context, tag, repo, wasmProductsDir, configDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + image := fmt.Sprintf("gcr.io/skia-public/%s", skottieImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/skottie && make release_ci"} + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + fmt.Sprintf("%s:/WORKSPACE", tempDir), + } + return docker.BuildPushImageFromInfraImage(ctx, "Skottie", image, tag, repo, configDir, tempDir, "prod", topic, cmd, volumes, infraCommonEnv, nil) +} + +func buildPushParticlesImage(ctx context.Context, tag, repo, wasmProductsDir, configDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + image := fmt.Sprintf("gcr.io/skia-public/%s", particlesImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/particles && make release_ci"} + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + fmt.Sprintf("%s:/WORKSPACE", tempDir), + } + return docker.BuildPushImageFromInfraImage(ctx, "Particles", image, tag, repo, configDir, tempDir, "prod", topic, cmd, volumes, infraCommonEnv, nil) +} + +func buildPushDebuggerImage(ctx context.Context, tag, repo, wasmProductsDir, configDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + image := fmt.Sprintf("gcr.io/skia-public/%s", debuggerImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/debugger-app && make release_ci"} + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + fmt.Sprintf("%s:/WORKSPACE", tempDir), + } + return docker.BuildPushImageFromInfraImage(ctx, "Debugger-App", image, tag, repo, configDir, tempDir, "prod", topic, cmd, volumes, infraCommonEnv, nil) +} + +func buildPushShadersImage(ctx context.Context, tag, repo, wasmProductsDir, configDir string, topic *pubsub.Topic) error { + tempDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + return err + } + image := fmt.Sprintf("gcr.io/skia-public/%s", shaderImageName) + cmd := []string{"/bin/sh", "-c", "cd /home/skia/golib/src/go.skia.org/infra/shaders && make release_ci"} + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + fmt.Sprintf("%s:/WORKSPACE", tempDir), + } + return docker.BuildPushImageFromInfraImage(ctx, "Shaders", image, tag, repo, configDir, tempDir, "prod", topic, cmd, volumes, infraCommonEnv, nil) +} + +func main() { + // Setup. + ctx := td.StartRun(projectId, taskId, taskName, output, local) + defer td.EndRun(ctx) + + rs, err := checkout.GetRepoState(checkoutFlags) + if err != nil { + td.Fatal(ctx, err) + } + + wd, err := os_steps.Abs(ctx, *workdir) + if err != nil { + td.Fatal(ctx, err) + } + + // Setup go. + ctx = golang.WithEnv(ctx, wd) + + // Create token source with scope for cloud registry (storage) and pubsub. + ts, err := auth_steps.Init(ctx, *local, auth.ScopeUserinfoEmail, auth.ScopeFullControl, pubsub.ScopePubSub) + if err != nil { + td.Fatal(ctx, err) + } + + // Create pubsub client. + client, err := pubsub.NewClient(ctx, docker_pubsub.TOPIC_PROJECT_ID, option.WithTokenSource(ts)) + if err != nil { + td.Fatal(ctx, err) + } + topic := client.Topic(docker_pubsub.TOPIC) + + // Figure out which tag to use for docker build and push. + tag := rs.Revision + if rs.Issue != "" && rs.Patchset != "" { + tag = fmt.Sprintf("%s_%s", rs.Issue, rs.Patchset) + } + + // Create a temporary config dir for Docker. + configDir, err := ioutil.TempDir("", "") + if err != nil { + td.Fatal(ctx, err) + } + defer util.RemoveAll(configDir) + + // Login to docker (required to push to docker). + token, err := ts.Token() + if err != nil { + td.Fatal(ctx, err) + } + if err := docker.Login(ctx, token.AccessToken, "gcr.io/skia-public/", configDir); err != nil { + td.Fatal(ctx, err) + } + + // Run skia-wasm-release image and extract wasm products out of it. + wasmProductsDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + td.Fatal(ctx, err) + } + // Run Doxygen pointing to the location of the checkout and the out dir. + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + } + wasmCopyCmd := []string{"/bin/sh", "-c", "cp -r /tmp/* /OUT"} + releaseImg := fmt.Sprintf("gcr.io/skia-public/skia-wasm-release:%s", tag) + if err := docker.Run(ctx, releaseImg, configDir, wasmCopyCmd, volumes, nil); err != nil { + td.Fatal(ctx, err) + } + + // Build and push all apps of interest below. + if err := buildPushSkottieImage(ctx, tag, rs.Repo, wasmProductsDir, configDir, topic); err != nil { + td.Fatal(ctx, err) + } + if err := buildPushParticlesImage(ctx, tag, rs.Repo, wasmProductsDir, configDir, topic); err != nil { + td.Fatal(ctx, err) + } + if err := buildPushDebuggerImage(ctx, tag, rs.Repo, wasmProductsDir, configDir, topic); err != nil { + td.Fatal(ctx, err) + } + if err := buildPushShadersImage(ctx, tag, rs.Repo, wasmProductsDir, configDir, topic); err != nil { + td.Fatal(ctx, err) + } + + // Remove all temporary files from the host machine. Swarming gets upset if there are root-owned + // files it cannot clean up. + cleanupCmd := []string{"/bin/sh", "-c", "rm -rf /OUT/*"} + if err := docker.Run(ctx, releaseImg, configDir, cleanupCmd, volumes, nil); err != nil { + td.Fatal(ctx, err) + } +} diff --git a/third_party/skia/infra/bots/task_drivers/push_bazel_apps_from_wasm_image/push_bazel_apps_from_wasm_image.go b/third_party/skia/infra/bots/task_drivers/push_bazel_apps_from_wasm_image/push_bazel_apps_from_wasm_image.go new file mode 100644 index 000000000000..bd87fa524acb --- /dev/null +++ b/third_party/skia/infra/bots/task_drivers/push_bazel_apps_from_wasm_image/push_bazel_apps_from_wasm_image.go @@ -0,0 +1,178 @@ +// Copyright 2021 Google Inc. +// +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// This executable builds the Docker images based off the WASM executables in the +// gcr.io/skia-public/skia-wasm-release image. It then issues a PubSub notification to have those apps +// tagged and deployed by docker_pushes_watcher. +// See //docker_pushes_watcher/README.md in the skia infra repo. +package main + +import ( + "context" + "encoding/json" + "flag" + "fmt" + "path/filepath" + + "cloud.google.com/go/pubsub" + "google.golang.org/api/option" + + "go.skia.org/infra/go/auth" + docker_pubsub "go.skia.org/infra/go/docker/build/pubsub" + sk_exec "go.skia.org/infra/go/exec" + "go.skia.org/infra/task_driver/go/lib/auth_steps" + "go.skia.org/infra/task_driver/go/lib/checkout" + "go.skia.org/infra/task_driver/go/lib/docker" + "go.skia.org/infra/task_driver/go/lib/golang" + "go.skia.org/infra/task_driver/go/lib/os_steps" + "go.skia.org/infra/task_driver/go/td" + "go.skia.org/infra/task_scheduler/go/types" +) + +var ( + // Required properties for this task. + projectId = flag.String("project_id", "", "ID of the Google Cloud project.") + taskId = flag.String("task_id", "", "ID of this task.") + taskName = flag.String("task_name", "", "Name of the task.") + workdir = flag.String("workdir", ".", "Working directory") + skiaRevision = flag.String("skia_revision", "", "Specifies which revision of Skia should be used to find the docker image containing the WASM products.") + infraRevision = flag.String("infra_revision", "origin/main", "Specifies which revision of the infra repo the images should be built off") + // Optional flags. + local = flag.Bool("local", false, "True if running locally (as opposed to on the bots)") + output = flag.String("o", "", "If provided, dump a JSON blob of step data to the given file. Prints to stdout if '-' is given.") +) + +const ( + infraRepo = "https://skia.googlesource.com/buildbot.git" +) + +func main() { + // Setup. + ctx := td.StartRun(projectId, taskId, taskName, output, local) + defer td.EndRun(ctx) + + wd, err := os_steps.Abs(ctx, *workdir) + if err != nil { + td.Fatal(ctx, err) + } + + if *skiaRevision == "" { + td.Fatalf(ctx, "Must specify --skia_revision") + } + + checkoutDir := wd + if !*local { + if *infraRevision == "" { + td.Fatalf(ctx, "Must specify --infra_revision") + } + // Check out the Skia infra repo at the specified commit. + rs := types.RepoState{ + Repo: infraRepo, + Revision: *infraRevision, + } + checkoutDir = filepath.Join("repo") + _, err = checkout.EnsureGitCheckout(ctx, checkoutDir, rs) + if err != nil { + td.Fatal(ctx, err) + } + } + + // Setup go. + ctx = golang.WithEnv(ctx, wd) + + // Create token source with scope for cloud registry (storage) and pubsub. + ts, err := auth_steps.Init(ctx, *local, auth.ScopeUserinfoEmail, auth.ScopeFullControl, pubsub.ScopePubSub) + if err != nil { + td.Fatal(ctx, err) + } + + // Create pubsub client. + client, err := pubsub.NewClient(ctx, docker_pubsub.TOPIC_PROJECT_ID, option.WithTokenSource(ts)) + if err != nil { + td.Fatal(ctx, err) + } + topic := client.Topic(docker_pubsub.TOPIC) + + dkr, err := docker.New(ctx, ts) + if err != nil { + td.Fatal(ctx, err) + } + + // Run skia-wasm-release image and extract wasm products out of it. + wasmProductsDir, err := os_steps.TempDir(ctx, "", "") + if err != nil { + td.Fatal(ctx, err) + } + volumes := []string{ + fmt.Sprintf("%s:/OUT", wasmProductsDir), + } + wasmCopyCmd := []string{"/bin/sh", "-c", "cp -r /tmp/* /OUT"} + releaseImg := fmt.Sprintf("gcr.io/skia-public/skia-wasm-release:%s", *skiaRevision) + if err := dkr.Run(ctx, releaseImg, wasmCopyCmd, volumes, nil); err != nil { + td.Fatal(ctx, err) + } + + // TODO(kjlubick) Build and push all apps of interest as they are ported. + if err := buildPushJSFiddle(ctx, wasmProductsDir, checkoutDir, *skiaRevision, topic); err != nil { + td.Fatal(ctx, err) + } + + // Remove all temporary files from the host machine. Swarming gets upset if there are root-owned + // files it cannot clean up. + cleanupCmd := []string{"/bin/sh", "-c", "rm -rf /OUT/*"} + if err := dkr.Run(ctx, releaseImg, cleanupCmd, volumes, nil); err != nil { + td.Fatal(ctx, err) + } +} + +func buildPushJSFiddle(ctx context.Context, wasmProductsDir, checkoutDir, skiaRevision string, topic *pubsub.Topic) error { + err := td.Do(ctx, td.Props("Build jsfiddle image").Infra(), func(ctx context.Context) error { + runCmd := &sk_exec.Command{ + Name: "make", + Args: []string{"bazel_release_ci"}, + InheritEnv: true, + Env: []string{ + "COPY_FROM_DIR=" + wasmProductsDir, + "STABLE_DOCKER_TAG=" + skiaRevision, + }, + Dir: filepath.Join(checkoutDir, "jsfiddle"), + LogStdout: true, + LogStderr: true, + } + _, err := sk_exec.RunCommand(ctx, runCmd) + if err != nil { + return err + } + return nil + }) + if err != nil { + return err + } + return publishToTopic(ctx, "jsfiddle", skiaRevision, "skia", topic) +} + +func publishToTopic(ctx context.Context, image, tag, repo string, topic *pubsub.Topic) error { + return td.Do(ctx, td.Props(fmt.Sprintf("Publish pubsub msg to %s", docker_pubsub.TOPIC)).Infra(), func(ctx context.Context) error { + // Publish to the pubsub topic which is subscribed to by + // https://github.com/google/skia-buildbot/blob/cd593cf6c534ba7a1bd2d88a488d37840663230d/docker_pushes_watcher/go/docker_pushes_watcher/main.go#L335 + b, err := json.Marshal(&docker_pubsub.BuildInfo{ + ImageName: image, + Tag: tag, + Repo: repo, + }) + if err != nil { + return err + } + msg := &pubsub.Message{ + Data: b, + } + res := topic.Publish(ctx, msg) + // Synchronously wait to make sure the publishing actually happens. + if _, err := res.Get(ctx); err != nil { + return err + } + return nil + }) +} diff --git a/third_party/skia/infra/bots/task_drivers/recreate_skps/recreate_skps.go b/third_party/skia/infra/bots/task_drivers/recreate_skps/recreate_skps.go index e1bef672d718..80d418dbe63c 100644 --- a/third_party/skia/infra/bots/task_drivers/recreate_skps/recreate_skps.go +++ b/third_party/skia/infra/bots/task_drivers/recreate_skps/recreate_skps.go @@ -134,6 +134,7 @@ func main() { skipBuild = flag.Bool("skip-build", false, "skip build. Helpful for running locally.") gitCacheDirFlag = flag.String("git_cache", "", "Git cache directory.") checkoutRootFlag = flag.String("checkout_root", "", "Directory to use for checkouts.") + dmPathFlag = flag.String("dm_path", "", "Path to the DM binary.") ) ctx := td.StartRun(projectId, taskId, taskName, output, local) defer td.EndRun(ctx) @@ -165,6 +166,10 @@ func main() { if *checkoutRootFlag != "" { checkoutRoot = filepath.Join(cwd, *checkoutRootFlag) } + if *dmPathFlag == "" { + td.Fatal(ctx, fmt.Errorf("Must specify --dm_path")) + } + dmPath := filepath.Join(cwd, *dmPathFlag) // Fetch `sk` if _, err := exec.RunCwd(ctx, skiaDir, "python3", filepath.Join("bin", "fetch-sk")); err != nil { @@ -239,6 +244,7 @@ func main() { "vpython3", "-u", script, "--chrome_src_path", chromiumDir, "--browser_executable", filepath.Join(outDir, "chrome"), + "--dm_path", dmPath, } if *dryRun { cmd = append(cmd, "--dry_run") diff --git a/third_party/skia/infra/bots/tasks.json b/third_party/skia/infra/bots/tasks.json index 739299cb5e52..c0c2f009d083 100755 --- a/third_party/skia/infra/bots/tasks.json +++ b/third_party/skia/infra/bots/tasks.json @@ -894,6 +894,11 @@ "Housekeeper-PerCommit-PushAppsFromWASMDockerImage" ] }, + "Housekeeper-PerCommit-PushBazelAppsFromWASMDockerImage": { + "tasks": [ + "Housekeeper-PerCommit-PushBazelAppsFromWASMDockerImage" + ] + }, "Housekeeper-PerCommit-RunGnToBp": { "tasks": [ "Housekeeper-PerCommit-RunGnToBp" @@ -3076,22 +3081,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3172,22 +3177,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3268,22 +3273,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/armhf_sysroot", @@ -3374,22 +3379,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3470,22 +3475,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3566,22 +3571,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3662,22 +3667,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/armhf_sysroot", @@ -3768,22 +3773,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3864,22 +3869,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -3960,22 +3965,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4056,22 +4061,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4152,22 +4157,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4248,22 +4253,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4344,22 +4349,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4440,22 +4445,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4536,22 +4541,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4632,22 +4637,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4732,22 +4737,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -4833,22 +4838,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -4929,22 +4934,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -5025,22 +5030,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -5121,22 +5126,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -5221,22 +5226,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5326,22 +5331,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5431,22 +5436,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5532,22 +5537,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/chromebook_x86_64_gles", @@ -5637,22 +5642,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5742,22 +5747,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5847,22 +5852,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -5952,22 +5957,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6057,22 +6062,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6167,22 +6172,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6277,22 +6282,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6382,22 +6387,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6487,22 +6492,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6592,22 +6597,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6697,22 +6702,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6802,22 +6807,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -6923,37 +6928,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7039,22 +7044,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/chromebook_x86_64_gles", @@ -7144,22 +7149,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7249,22 +7254,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7362,37 +7367,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7481,22 +7486,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7586,22 +7591,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7691,22 +7696,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7796,22 +7801,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -7901,22 +7906,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8006,22 +8011,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8116,22 +8121,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8221,22 +8226,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8326,22 +8331,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8431,22 +8436,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8540,22 +8545,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8645,22 +8650,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8750,22 +8755,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8855,22 +8860,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -8960,22 +8965,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9065,22 +9070,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9170,22 +9175,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9275,22 +9280,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9362,7 +9367,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -9429,22 +9434,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9534,22 +9539,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9639,22 +9644,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9744,22 +9749,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9849,22 +9854,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -9954,22 +9959,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -10059,22 +10064,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -10172,37 +10177,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_linux", @@ -10291,22 +10296,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10399,22 +10404,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10499,22 +10504,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_darwin", @@ -10602,22 +10607,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10710,22 +10715,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10818,22 +10823,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10926,22 +10931,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -10956,7 +10961,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11039,22 +11044,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11069,7 +11074,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11152,22 +11157,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11182,7 +11187,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11265,22 +11270,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11373,22 +11378,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11481,22 +11486,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11589,22 +11594,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11619,7 +11624,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11702,22 +11707,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11732,7 +11737,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11815,22 +11820,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11845,7 +11850,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -11928,22 +11933,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -11958,7 +11963,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -12041,22 +12046,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12149,22 +12154,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12257,22 +12262,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12377,37 +12382,37 @@ { "name": "infra/3pp/tools/git/mac-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12499,22 +12504,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12607,22 +12612,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12727,37 +12732,37 @@ { "name": "infra/3pp/tools/git/mac-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12849,22 +12854,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -12957,22 +12962,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13065,22 +13070,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13173,22 +13178,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13203,7 +13208,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -13286,22 +13291,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13316,7 +13321,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -13399,22 +13404,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13429,7 +13434,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -13512,22 +13517,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/mac_toolchain/${platform}", @@ -13542,7 +13547,7 @@ { "name": "skia/bots/provisioning_profile_ios", "path": "provisioning_profile_ios", - "version": "version:5" + "version": "version:6" } ], "command": [ @@ -13617,22 +13622,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -13714,22 +13719,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -13811,22 +13816,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -13908,22 +13913,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14005,22 +14010,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/android_ndk_windows", @@ -14101,22 +14106,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14198,22 +14203,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14295,22 +14300,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14392,22 +14397,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14489,22 +14494,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14586,22 +14591,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14683,22 +14688,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14780,22 +14785,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14877,22 +14882,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -14974,22 +14979,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15071,22 +15076,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15168,22 +15173,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15265,22 +15270,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15362,22 +15367,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15459,22 +15464,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15556,22 +15561,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_win", @@ -15653,22 +15658,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -15745,22 +15750,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -15837,22 +15842,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -15929,22 +15934,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16021,22 +16026,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16113,22 +16118,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16205,22 +16210,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16297,22 +16302,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16389,22 +16394,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16481,22 +16486,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16573,22 +16578,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16665,22 +16670,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16757,22 +16762,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16849,22 +16854,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -16953,37 +16958,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17076,37 +17081,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17199,37 +17204,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17322,37 +17327,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17445,37 +17450,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17568,37 +17573,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17691,37 +17696,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17814,37 +17819,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -17937,37 +17942,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/bloaty", @@ -18032,7 +18037,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -18046,6 +18051,10 @@ "Canary-Android", "--roller_name", "android-master-autoroll", + "--cq_keyword", + "Canary-Android-Topic", + "--target_project_base_url", + "https://googleplex-android-review.googlesource.com/q/topic:", "--repo", "<(REPO)", "--revision", @@ -18078,7 +18087,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -18092,6 +18101,10 @@ "Canary-Chromium", "--roller_name", "skia-autoroll", + "--cq_keyword", + "Canary-Chromium-CL", + "--target_project_base_url", + "https://chromium-review.googlesource.com/c/", "--repo", "<(REPO)", "--revision", @@ -18124,7 +18137,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -18138,6 +18151,10 @@ "Canary-Flutter", "--roller_name", "skia-flutter-autoroll", + "--cq_keyword", + "Canary-Flutter-PR", + "--target_project_base_url", + "https://github.com/flutter/engine/pull/", "--repo", "<(REPO)", "--revision", @@ -18170,7 +18187,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -18219,7 +18236,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18275,7 +18292,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18339,7 +18356,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18403,7 +18420,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18462,7 +18479,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18512,7 +18529,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18562,7 +18579,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18612,7 +18629,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18663,7 +18680,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18714,7 +18731,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -18796,32 +18813,32 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -18846,9 +18863,12 @@ "cache/git", "--checkout_root", "cache/work", + "--dm_path", + "build/dm", "--dry_run" ], "dependencies": [ + "Build-Debian10-Clang-x86_64-Release", "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64" ], "dimensions": [ @@ -18904,17 +18924,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -19004,7 +19024,7 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build", @@ -19014,32 +19034,32 @@ { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -19120,37 +19140,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -19224,17 +19244,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -19292,17 +19312,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -19360,17 +19380,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -19426,27 +19446,27 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -19525,37 +19545,37 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ccache_linux", @@ -19644,17 +19664,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -19702,8 +19722,7 @@ "env_prefixes": { "PATH": [ "cipd_bin_packages", - "cipd_bin_packages/bin", - "go/go/bin" + "cipd_bin_packages/bin" ] }, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" @@ -19728,17 +19747,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -19786,8 +19805,7 @@ "env_prefixes": { "PATH": [ "cipd_bin_packages", - "cipd_bin_packages/bin", - "go/go/bin" + "cipd_bin_packages/bin" ] }, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" @@ -19830,7 +19848,7 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/gsutil", @@ -19840,32 +19858,32 @@ { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -19955,7 +19973,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -20065,17 +20083,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20088,10 +20106,6 @@ "Housekeeper-PerCommit-PushAppsFromSkiaDockerImage", "--workdir", ".", - "--gerrit_project", - "buildbot", - "--gerrit_url", - "https://skia-review.googlesource.com", "--repo", "<(REPO)", "--revision", @@ -20118,8 +20132,7 @@ "env_prefixes": { "PATH": [ "cipd_bin_packages", - "cipd_bin_packages/bin", - "go/go/bin" + "cipd_bin_packages/bin" ] }, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" @@ -20144,17 +20157,17 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20167,10 +20180,6 @@ "Housekeeper-PerCommit-PushAppsFromWASMDockerImage", "--workdir", ".", - "--gerrit_project", - "buildbot", - "--gerrit_url", - "https://skia-review.googlesource.com", "--repo", "<(REPO)", "--revision", @@ -20194,11 +20203,82 @@ "pool:Skia", "docker_installed:true" ], + "env_prefixes": { + "PATH": [ + "cipd_bin_packages", + "cipd_bin_packages/bin" + ] + }, + "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" + }, + "Housekeeper-PerCommit-PushBazelAppsFromWASMDockerImage": { + "caches": [ + { + "name": "docker", + "path": "cache/docker" + }, + { + "name": "git", + "path": "cache/git" + }, + { + "name": "git_cache", + "path": "cache/git_cache" + } + ], + "casSpec": "empty", + "cipd_packages": [ + { + "name": "infra/3pp/tools/git/linux-amd64", + "path": "cipd_bin_packages", + "version": "version:2@2.34.1.chromium.6" + }, + { + "name": "infra/tools/git/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" + }, + { + "name": "infra/tools/luci/git-credential-luci/${platform}", + "path": "cipd_bin_packages", + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" + }, + { + "name": "skia/bots/bazelisk", + "path": "bazelisk", + "version": "version:0" + } + ], + "command": [ + "./push_bazel_apps_from_wasm_image", + "--project_id", + "skia-swarming-bots", + "--task_id", + "<(TASK_ID)", + "--task_name", + "Housekeeper-PerCommit-PushBazelAppsFromWASMDockerImage", + "--workdir", + ".", + "--skia_revision", + "<(REVISION)" + ], + "dependencies": [ + "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64", + "Housekeeper-PerCommit-CreateDockerImage_Skia_WASM_Release" + ], + "dimensions": [ + "cpu:x86-64-Haswell_GCE", + "gpu:none", + "machine_type:n1-standard-16", + "os:Debian-10.3", + "pool:Skia", + "docker_installed:true" + ], "env_prefixes": { "PATH": [ "cipd_bin_packages", "cipd_bin_packages/bin", - "go/go/bin" + "bazelisk" ] }, "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com" @@ -20225,12 +20305,12 @@ { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20311,32 +20391,32 @@ { "name": "infra/3pp/tools/git/linux-amd64", "path": "cipd_bin_packages", - "version": "version:2@2.33.0.chromium.6" + "version": "version:2@2.34.1.chromium.6" }, { "name": "infra/tools/git/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/git-credential-luci/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/go", @@ -20360,9 +20440,12 @@ "--git_cache", "cache/git", "--checkout_root", - "cache/work" + "cache/work", + "--dm_path", + "build/dm" ], "dependencies": [ + "Build-Debian10-Clang-x86_64-Release", "Housekeeper-PerCommit-BuildTaskDrivers_linux_amd64" ], "dimensions": [ @@ -20416,22 +20499,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20509,22 +20592,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -20607,22 +20690,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20700,22 +20783,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20792,22 +20875,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20884,22 +20967,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -20976,22 +21059,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21069,22 +21152,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21161,22 +21244,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21253,22 +21336,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21346,22 +21429,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21439,22 +21522,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21532,22 +21615,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21625,22 +21708,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21718,22 +21801,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21811,22 +21894,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21904,22 +21987,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -21996,22 +22079,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22088,22 +22171,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22180,22 +22263,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22273,22 +22356,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22366,22 +22449,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22459,22 +22542,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22552,22 +22635,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22645,22 +22728,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22738,22 +22821,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/text_blob_traces", @@ -22836,22 +22919,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -22929,22 +23012,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23022,22 +23105,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23115,22 +23198,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23207,22 +23290,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23299,22 +23382,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23392,22 +23475,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23484,22 +23567,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23576,22 +23659,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23669,22 +23752,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23762,22 +23845,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23855,22 +23938,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -23948,22 +24031,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -24041,22 +24124,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -24134,22 +24217,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -24227,22 +24310,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -24257,7 +24340,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24337,22 +24420,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -24367,7 +24450,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24447,22 +24530,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -24472,7 +24555,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24552,22 +24635,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -24577,7 +24660,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24657,22 +24740,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -24682,7 +24765,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24762,22 +24845,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -24787,7 +24870,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24867,22 +24950,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -24897,7 +24980,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -24977,22 +25060,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -25002,7 +25085,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25082,22 +25165,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -25107,7 +25190,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25186,22 +25269,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -25211,7 +25294,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25291,22 +25374,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -25321,7 +25404,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25400,22 +25483,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -25435,7 +25518,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25514,22 +25597,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -25554,7 +25637,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25633,22 +25716,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -25663,7 +25746,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25742,22 +25825,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -25777,7 +25860,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25856,22 +25939,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -25891,7 +25974,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -25970,22 +26053,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -26000,7 +26083,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -26079,22 +26162,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -26109,7 +26192,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -26188,22 +26271,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -26279,22 +26362,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -26354,7 +26437,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -26364,7 +26447,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -26424,7 +26507,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -26434,7 +26517,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -26496,7 +26579,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -26584,22 +26667,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -26619,7 +26702,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -26698,22 +26781,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -26723,7 +26806,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -26802,22 +26885,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -26827,7 +26910,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -26906,22 +26989,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -26931,7 +27014,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27010,22 +27093,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27035,7 +27118,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27114,22 +27197,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27139,7 +27222,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27218,22 +27301,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27243,7 +27326,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27323,22 +27406,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27348,7 +27431,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27428,22 +27511,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27453,7 +27536,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27532,22 +27615,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27557,7 +27640,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27636,22 +27719,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27661,7 +27744,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27740,22 +27823,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27765,7 +27848,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27844,22 +27927,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -27869,7 +27952,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -27948,22 +28031,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -27973,7 +28056,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -28047,22 +28130,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -28072,7 +28155,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -28146,22 +28229,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -28171,7 +28254,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -28245,22 +28328,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -28275,7 +28358,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28354,22 +28437,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -28379,7 +28462,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28458,22 +28541,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -28488,7 +28571,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28567,22 +28650,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -28592,7 +28675,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28671,22 +28754,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -28696,7 +28779,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28781,22 +28864,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -28811,7 +28894,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -28874,7 +28957,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -28884,7 +28967,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -28943,7 +29026,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -28953,7 +29036,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -29012,7 +29095,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -29022,7 +29105,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -29083,7 +29166,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -29093,7 +29176,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -29154,7 +29237,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -29225,7 +29308,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -29312,22 +29395,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -29347,7 +29430,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -29426,22 +29509,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/lottie-samples", @@ -29461,7 +29544,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -29539,22 +29622,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -29564,7 +29647,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -29587,7 +29670,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -29643,22 +29726,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -29668,7 +29751,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -29691,7 +29774,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -29747,22 +29830,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -29772,7 +29855,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -29790,7 +29873,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -29846,22 +29929,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -29871,7 +29954,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -29894,7 +29977,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -29950,22 +30033,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -29975,7 +30058,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -29993,7 +30076,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -30049,22 +30132,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30074,7 +30157,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -30153,22 +30236,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30178,7 +30261,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -30257,22 +30340,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -30282,7 +30365,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -30356,22 +30439,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30381,7 +30464,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -30460,22 +30543,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -30485,7 +30568,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -30559,22 +30642,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -30584,7 +30667,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -30658,22 +30741,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mskp", @@ -30683,7 +30766,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" } ], "command": [ @@ -30757,22 +30840,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30782,7 +30865,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -30805,7 +30888,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -30861,22 +30944,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30886,7 +30969,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -30909,7 +30992,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -30965,22 +31048,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -30990,7 +31073,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31013,7 +31096,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31069,22 +31152,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31094,7 +31177,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31117,7 +31200,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31173,22 +31256,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31198,7 +31281,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31221,7 +31304,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31277,22 +31360,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31302,7 +31385,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31325,7 +31408,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31381,22 +31464,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31406,7 +31489,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31429,7 +31512,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31485,22 +31568,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31510,7 +31593,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31533,7 +31616,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31589,22 +31672,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31614,7 +31697,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31637,7 +31720,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31693,22 +31776,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31718,7 +31801,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31741,7 +31824,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31797,22 +31880,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31822,7 +31905,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31845,7 +31928,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -31901,22 +31984,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -31926,7 +32009,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -31949,7 +32032,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32005,22 +32088,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32030,7 +32113,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32053,7 +32136,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32109,22 +32192,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32134,7 +32217,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32157,7 +32240,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32213,22 +32296,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32238,7 +32321,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32261,7 +32344,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32317,22 +32400,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32342,7 +32425,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32365,7 +32448,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32421,22 +32504,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32446,7 +32529,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32469,7 +32552,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32525,22 +32608,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32550,7 +32633,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32573,7 +32656,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32629,22 +32712,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32654,7 +32737,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32677,7 +32760,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -32733,22 +32816,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32758,7 +32841,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32837,22 +32920,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32862,7 +32945,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -32941,22 +33024,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -32966,7 +33049,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -33046,22 +33129,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -33071,7 +33154,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -33151,22 +33234,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -33176,7 +33259,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -33256,22 +33339,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -33353,22 +33436,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -33450,22 +33533,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -33547,22 +33630,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -33644,22 +33727,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -33741,22 +33824,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -33838,22 +33921,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -33935,22 +34018,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -34032,22 +34115,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -34129,22 +34212,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -34231,22 +34314,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34330,22 +34413,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34429,22 +34512,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34528,22 +34611,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34627,22 +34710,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34726,22 +34809,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34825,22 +34908,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -34924,22 +35007,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35023,22 +35106,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35122,22 +35205,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35221,22 +35304,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35320,22 +35403,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35419,22 +35502,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35518,22 +35601,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35617,22 +35700,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35716,22 +35799,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35740,7 +35823,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--threads\\\",\\\"0\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android\\\",\\\"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-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--threads\\\",\\\"0\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android\\\",\\\"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": [ @@ -35815,22 +35898,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -35839,7 +35922,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--threads\\\",\\\"0\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\\\",\\\"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-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"Tegra3\\\",\\\"extra_config\\\",\\\"Android\\\",\\\"model\\\",\\\"Nexus7\\\",\\\"os\\\",\\\"Android\\\",\\\"style\\\",\\\"default\\\",\\\"--threads\\\",\\\"0\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorCloneTest\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"Programs\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"ProcessorOptimizationValidationTest\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLSwitch_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchDefaultOnly_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithFallthrough_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLSwitchWithLoops_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopFloat_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLLoopInt_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Release-All-Android\\\",\\\"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": [ @@ -35914,22 +35997,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36013,22 +36096,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36112,22 +36195,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36211,22 +36294,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36310,22 +36393,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36409,22 +36492,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36508,22 +36591,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36607,22 +36690,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36706,22 +36789,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36805,22 +36888,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -36904,22 +36987,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37003,22 +37086,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37102,22 +37185,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37201,22 +37284,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37300,22 +37383,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37399,22 +37482,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37498,22 +37581,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37597,22 +37680,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37696,22 +37779,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37795,22 +37878,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37894,22 +37977,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -37993,22 +38076,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38092,22 +38175,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38191,22 +38274,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38290,22 +38373,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38389,22 +38472,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38488,22 +38571,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38587,22 +38670,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38686,22 +38769,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38785,22 +38868,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38879,22 +38962,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -38973,22 +39056,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39072,22 +39155,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39171,22 +39254,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39270,22 +39353,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39369,22 +39452,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39468,22 +39551,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39567,22 +39650,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39666,22 +39749,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39765,22 +39848,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39864,22 +39947,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -39963,22 +40046,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -40062,22 +40145,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -40161,22 +40244,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -40260,22 +40343,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40285,7 +40368,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40371,22 +40454,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40396,7 +40479,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40482,22 +40565,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40507,7 +40590,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40593,22 +40676,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40618,7 +40701,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40704,22 +40787,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40729,7 +40812,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40815,22 +40898,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40840,7 +40923,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -40926,22 +41009,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -40951,7 +41034,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41037,22 +41120,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41062,7 +41145,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41148,22 +41231,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41173,7 +41256,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41259,22 +41342,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41284,7 +41367,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41370,22 +41453,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41395,7 +41478,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41481,22 +41564,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41506,7 +41589,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41592,22 +41675,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41617,7 +41700,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41703,22 +41786,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41728,7 +41811,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41814,22 +41897,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41839,7 +41922,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -41925,22 +42008,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -41950,7 +42033,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42036,22 +42119,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42061,7 +42144,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42146,22 +42229,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42171,7 +42254,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42256,22 +42339,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42281,7 +42364,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42366,22 +42449,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42391,7 +42474,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42476,22 +42559,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42501,7 +42584,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42582,22 +42665,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -42612,7 +42695,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42697,22 +42780,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -42722,7 +42805,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42808,22 +42891,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -42838,7 +42921,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -42923,22 +43006,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -42958,7 +43041,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43043,22 +43126,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -43073,7 +43156,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43158,22 +43241,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -43193,7 +43276,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43278,22 +43361,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -43308,7 +43391,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43388,22 +43471,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -43428,7 +43511,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43512,22 +43595,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -43542,7 +43625,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43627,22 +43710,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -43662,7 +43745,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43742,22 +43825,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -43777,7 +43860,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43856,22 +43939,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -43896,7 +43979,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -43975,22 +44058,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44010,7 +44093,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44089,22 +44172,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44129,7 +44212,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44213,22 +44296,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -44243,7 +44326,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44323,22 +44406,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44358,7 +44441,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44437,22 +44520,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44477,7 +44560,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44556,22 +44639,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44591,7 +44674,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44670,22 +44753,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44710,7 +44793,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44789,22 +44872,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -44824,7 +44907,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -44908,22 +44991,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -44943,7 +45026,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45028,22 +45111,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -45058,7 +45141,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45143,22 +45226,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -45173,7 +45256,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45258,22 +45341,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -45288,7 +45371,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45373,22 +45456,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/mesa_intel_driver_linux", @@ -45403,7 +45486,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45488,22 +45571,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -45585,22 +45668,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -45682,22 +45765,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -45779,22 +45862,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -45876,22 +45959,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -45901,7 +45984,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -45988,22 +46071,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46013,7 +46096,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46100,22 +46183,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46125,7 +46208,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46212,22 +46295,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46237,7 +46320,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46324,22 +46407,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46349,7 +46432,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46434,22 +46517,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46459,7 +46542,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46544,22 +46627,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46569,7 +46652,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46654,22 +46737,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46679,7 +46762,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46764,22 +46847,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46789,7 +46872,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46874,22 +46957,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -46899,7 +46982,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -46984,22 +47067,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47009,7 +47092,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47089,22 +47172,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47114,7 +47197,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47198,22 +47281,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47223,7 +47306,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47308,22 +47391,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47333,7 +47416,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47413,22 +47496,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47438,7 +47521,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47522,22 +47605,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47547,7 +47630,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47633,22 +47716,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47658,7 +47741,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47744,22 +47827,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47769,7 +47852,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47855,22 +47938,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47880,7 +47963,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -47902,7 +47985,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-E5-2697_v2", + "cpu:x86-64", "os:Mac-10.13.6", "pool:Skia" ], @@ -47965,22 +48048,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -47990,7 +48073,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48012,7 +48095,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-E5-2697_v2", + "cpu:x86-64", "os:Mac-10.14.6", "pool:Skia" ], @@ -48075,22 +48158,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48100,7 +48183,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48180,22 +48263,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48205,7 +48288,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48289,22 +48372,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48314,7 +48397,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48399,22 +48482,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48424,7 +48507,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48509,22 +48592,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48534,7 +48617,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48619,22 +48702,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48644,7 +48727,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48729,22 +48812,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48754,7 +48837,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48839,22 +48922,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48864,7 +48947,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -48949,22 +49032,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -48974,7 +49057,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49059,22 +49142,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49084,7 +49167,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49169,22 +49252,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49194,7 +49277,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49279,22 +49362,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49304,7 +49387,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49389,22 +49472,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49414,7 +49497,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49494,22 +49577,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49519,7 +49602,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49603,22 +49686,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49628,7 +49711,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49713,22 +49796,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49738,7 +49821,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49823,22 +49906,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49848,7 +49931,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -49870,7 +49953,7 @@ "Housekeeper-PerCommit-BundleRecipes" ], "dimensions": [ - "cpu:x86-64-E5-2697_v2", + "cpu:x86-64", "os:Mac-10.15.7", "pool:Skia" ], @@ -49933,22 +50016,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -49958,7 +50041,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50043,22 +50126,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50068,7 +50151,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50153,22 +50236,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50178,7 +50261,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50258,22 +50341,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50283,7 +50366,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50367,22 +50450,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50392,7 +50475,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50472,22 +50555,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50497,7 +50580,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50581,22 +50664,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50606,7 +50689,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50686,22 +50769,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -50716,7 +50799,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50800,22 +50883,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -50825,7 +50908,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -50910,22 +50993,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -50940,7 +51023,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51020,22 +51103,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -51050,7 +51133,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51134,22 +51217,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -51164,7 +51247,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51244,22 +51327,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -51274,7 +51357,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51358,22 +51441,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -51388,7 +51471,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51468,22 +51551,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -51493,7 +51576,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51577,22 +51660,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -51607,7 +51690,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51692,22 +51775,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -51717,7 +51800,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51797,22 +51880,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -51827,7 +51910,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -51906,22 +51989,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -51941,7 +52024,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52020,22 +52103,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -52050,7 +52133,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52129,22 +52212,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -52164,7 +52247,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52243,22 +52326,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -52268,7 +52351,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52347,22 +52430,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/clang_linux", @@ -52382,7 +52465,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52461,22 +52544,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -52486,7 +52569,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52571,22 +52654,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -52596,7 +52679,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52681,22 +52764,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -52706,7 +52789,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52796,22 +52879,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/linux_vulkan_sdk", @@ -52826,7 +52909,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -52890,7 +52973,7 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/node", @@ -52900,7 +52983,7 @@ { "name": "skia/tools/goldctl/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -52995,22 +53078,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53020,7 +53103,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53043,7 +53126,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53099,22 +53182,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53124,7 +53207,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53147,7 +53230,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53203,22 +53286,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53228,7 +53311,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53251,7 +53334,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53307,22 +53390,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53332,7 +53415,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53355,7 +53438,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53411,22 +53494,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53436,7 +53519,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53459,7 +53542,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53515,22 +53598,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53540,7 +53623,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53563,7 +53646,7 @@ ], "dimensions": [ "gpu:1002:6646-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -53619,22 +53702,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53644,7 +53727,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53723,22 +53806,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53748,7 +53831,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53827,22 +53910,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53852,7 +53935,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53931,22 +54014,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -53956,7 +54039,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -53970,7 +54053,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"dawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"crbug_1271431\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"pal8os2v2.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"pal8os2v2-16.bmp\\\",\\\"_\\\",\\\"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\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn\\\",\\\"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\",\"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-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"x86_64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"QuadroP400\\\",\\\"extra_config\\\",\\\"Dawn\\\",\\\"model\\\",\\\"Golo\\\",\\\"os\\\",\\\"Win10\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"dawn\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"runtime_intrinsics_matrix\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"pal8os2v2.bmp\\\",\\\"_\\\",\\\"image\\\",\\\"gen_platf\\\",\\\"pal8os2v2-16.bmp\\\",\\\"_\\\",\\\"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\\\",\\\"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\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES2_GPU\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"SkSLMatrixConstructorsES3_GPU\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn\\\",\\\"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\",\"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": [ @@ -54035,22 +54118,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54060,7 +54143,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54139,22 +54222,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54164,7 +54247,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54243,22 +54326,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54268,7 +54351,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54347,22 +54430,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/procdump_win", @@ -54377,7 +54460,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54456,22 +54539,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54481,7 +54564,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54560,22 +54643,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54585,7 +54668,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54664,22 +54747,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54689,7 +54772,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54768,22 +54851,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54793,7 +54876,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54872,22 +54955,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -54897,7 +54980,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -54976,22 +55059,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/procdump_win", @@ -55006,7 +55089,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55085,22 +55168,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55110,7 +55193,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55133,7 +55216,7 @@ ], "dimensions": [ "cpu:x86-64-i7-5557U", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55189,22 +55272,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55214,7 +55297,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55237,7 +55320,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55293,22 +55376,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55318,7 +55401,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55341,7 +55424,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55397,22 +55480,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55422,7 +55505,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55445,7 +55528,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55501,22 +55584,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55526,7 +55609,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55549,7 +55632,7 @@ ], "dimensions": [ "gpu:8086:162b-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55605,22 +55688,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55630,7 +55713,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55653,7 +55736,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55709,22 +55792,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55734,7 +55817,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55757,7 +55840,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55813,22 +55896,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55838,7 +55921,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55861,7 +55944,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -55917,22 +56000,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -55942,7 +56025,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -55965,7 +56048,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56021,22 +56104,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56046,7 +56129,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56069,7 +56152,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56125,22 +56208,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56150,7 +56233,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56173,7 +56256,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56229,22 +56312,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56254,7 +56337,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56277,7 +56360,7 @@ ], "dimensions": [ "gpu:8086:1926-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56333,22 +56416,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56358,7 +56441,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56381,7 +56464,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56437,22 +56520,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56462,7 +56545,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56485,7 +56568,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56541,22 +56624,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56566,7 +56649,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56589,7 +56672,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56645,22 +56728,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56670,7 +56753,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56693,7 +56776,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56749,22 +56832,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56774,7 +56857,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56797,7 +56880,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56853,22 +56936,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56878,7 +56961,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -56901,7 +56984,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -56957,22 +57040,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -56982,7 +57065,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57005,7 +57088,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57061,22 +57144,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57086,7 +57169,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57109,7 +57192,7 @@ ], "dimensions": [ "gpu:8086:3ea5-26.20.100.7463", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57165,22 +57248,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57190,7 +57273,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57213,7 +57296,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57269,22 +57352,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57294,7 +57377,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57317,7 +57400,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57373,22 +57456,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57398,7 +57481,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57421,7 +57504,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57477,22 +57560,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57502,7 +57585,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57525,7 +57608,7 @@ ], "dimensions": [ "gpu:8086:0a16-20.19.15.4963", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57581,22 +57664,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57606,7 +57689,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57629,7 +57712,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57685,22 +57768,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57710,7 +57793,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57733,7 +57816,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57789,22 +57872,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57814,7 +57897,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57837,7 +57920,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57893,22 +57976,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -57918,7 +58001,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -57941,7 +58024,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -57997,22 +58080,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58022,7 +58105,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58045,7 +58128,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58101,22 +58184,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58126,7 +58209,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58149,7 +58232,7 @@ ], "dimensions": [ "gpu:10de:11c0-26.21.14.4120", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58205,22 +58288,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58230,7 +58313,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58253,7 +58336,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58309,22 +58392,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58334,7 +58417,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58357,7 +58440,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58413,22 +58496,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58438,7 +58521,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58461,7 +58544,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58517,22 +58600,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58542,7 +58625,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58565,7 +58648,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58621,22 +58704,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58646,7 +58729,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58669,7 +58752,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58725,22 +58808,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58750,7 +58833,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58773,7 +58856,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58829,22 +58912,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58854,7 +58937,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58877,7 +58960,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -58933,22 +59016,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -58958,7 +59041,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -58981,7 +59064,7 @@ ], "dimensions": [ "gpu:1002:683d-26.20.13031.18002", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59037,22 +59120,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59062,7 +59145,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59085,7 +59168,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59141,22 +59224,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59166,7 +59249,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59189,7 +59272,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59245,22 +59328,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59270,7 +59353,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59293,7 +59376,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59349,22 +59432,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59374,7 +59457,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59397,7 +59480,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59453,22 +59536,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59478,7 +59561,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59501,7 +59584,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59557,22 +59640,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59582,7 +59665,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59605,7 +59688,7 @@ ], "dimensions": [ "gpu:10de:1401-27.21.14.5671", - "os:Windows-10-19041", + "os:Windows-10-19044", "pool:Skia" ], "environment": { @@ -59661,22 +59744,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59686,7 +59769,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59765,22 +59848,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59790,7 +59873,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59869,22 +59952,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59894,7 +59977,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -59973,22 +60056,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -59998,7 +60081,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60077,22 +60160,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60102,7 +60185,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60181,22 +60264,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60206,7 +60289,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60285,22 +60368,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60310,7 +60393,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60390,22 +60473,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60415,7 +60498,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60495,22 +60578,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60520,7 +60603,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60600,22 +60683,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60625,7 +60708,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60705,22 +60788,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60730,7 +60813,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60810,22 +60893,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60835,7 +60918,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -60915,22 +60998,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -60940,7 +61023,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61020,22 +61103,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61045,7 +61128,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61125,22 +61208,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61150,7 +61233,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61230,22 +61313,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61255,7 +61338,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61335,22 +61418,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61360,7 +61443,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61440,22 +61523,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61465,7 +61548,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61544,22 +61627,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61569,7 +61652,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61648,22 +61731,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61673,7 +61756,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61752,22 +61835,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61777,7 +61860,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61856,22 +61939,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61881,7 +61964,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -61960,22 +62043,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -61985,7 +62068,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -62064,22 +62147,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -62089,7 +62172,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -62168,22 +62251,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -62193,7 +62276,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -62272,22 +62355,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -62297,7 +62380,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -62376,22 +62459,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/skimage", @@ -62401,7 +62484,7 @@ { "name": "skia/bots/skp", "path": "skp", - "version": "version:345" + "version": "version:352" }, { "name": "skia/bots/svg", @@ -62485,22 +62568,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -62588,22 +62671,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -62691,22 +62774,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -62794,22 +62877,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -62897,22 +62980,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -62926,7 +63009,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gles\\\",\\\"skp\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All\\\",\\\"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-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gles\\\",\\\"skp\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"A_large_blank_world_map_with_oceans_marked_in_blue.svg\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterBlurLargeImage_Gpu\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All\\\",\\\"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": [ @@ -63000,22 +63083,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -63029,7 +63112,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"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\\\",\\\"~flight_animated_image\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All-Metal\\\",\\\"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-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Debug\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"A_large_blank_world_map_with_oceans_marked_in_blue.svg\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterBlurLargeImage_Gpu\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv\\\",\\\"_\\\",\\\"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\\\",\\\"~flight_animated_image\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Debug-All-Metal\\\",\\\"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": [ @@ -63103,22 +63186,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -63132,7 +63215,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gles\\\",\\\"skp\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All\\\",\\\"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-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"gles\\\",\\\"glesdft\\\",\\\"srgb-gles\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"svgparse_\\\",\\\"srgb-gles\\\",\\\"image\\\",\\\"_\\\",\\\"_\\\",\\\"gles\\\",\\\"skp\\\",\\\"_\\\",\\\"_\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"A_large_blank_world_map_with_oceans_marked_in_blue.svg\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterBlurLargeImage_Gpu\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv\\\",\\\"_\\\",\\\"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\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All\\\",\\\"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": [ @@ -63206,22 +63289,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-12.4", @@ -63235,7 +63318,7 @@ "skia/infra/bots/run_recipe.py", "${ISOLATED_OUTDIR}", "test", - "{\"$kitchen\":{\"devshell\":true,\"git_auth\":true},\"buildbucket_build_id\":\"<(BUILDBUCKET_BUILD_ID)\",\"buildername\":\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"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\\\",\\\"~flight_animated_image\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal\\\",\\\"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-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal\",\"dm_flags\":\"[\\\"dm\\\",\\\"--nameByHash\\\",\\\"--key\\\",\\\"arch\\\",\\\"arm64\\\",\\\"compiler\\\",\\\"Clang\\\",\\\"configuration\\\",\\\"Release\\\",\\\"cpu_or_gpu\\\",\\\"GPU\\\",\\\"cpu_or_gpu_value\\\",\\\"PowerVRGX6450\\\",\\\"extra_config\\\",\\\"Metal\\\",\\\"model\\\",\\\"iPhone6\\\",\\\"os\\\",\\\"iOS\\\",\\\"style\\\",\\\"default\\\",\\\"--randomProcessorTest\\\",\\\"--nocpu\\\",\\\"--config\\\",\\\"mtl\\\",\\\"mtlmsaa4\\\",\\\"--src\\\",\\\"tests\\\",\\\"gm\\\",\\\"image\\\",\\\"colorImage\\\",\\\"svg\\\",\\\"--skip\\\",\\\"_\\\",\\\"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\\\",\\\"error\\\",\\\"_\\\",\\\"test\\\",\\\"_\\\",\\\"GrStyledShape\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylargebitmap\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"verylarge_picture_image\\\",\\\"_\\\",\\\"svg\\\",\\\"_\\\",\\\"A_large_blank_world_map_with_oceans_marked_in_blue.svg\\\",\\\"_\\\",\\\"tests\\\",\\\"_\\\",\\\"ImageFilterBlurLargeImage_Gpu\\\",\\\"_\\\",\\\"gm\\\",\\\"_\\\",\\\"wacky_yuv\\\",\\\"_\\\",\\\"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\\\",\\\"~flight_animated_image\\\",\\\"--nonativeFonts\\\",\\\"--verbose\\\"]\",\"dm_properties\":\"{\\\"buildbucket_build_id\\\":\\\"<(BUILDBUCKET_BUILD_ID)\\\",\\\"builder\\\":\\\"Test-iOS-Clang-iPhone6-GPU-PowerVRGX6450-arm64-Release-All-Metal\\\",\\\"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": [ @@ -63309,22 +63392,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63412,22 +63495,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63515,22 +63598,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63618,22 +63701,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63721,22 +63804,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63824,22 +63907,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -63927,22 +64010,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -64030,22 +64113,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.3", @@ -64133,22 +64216,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -64236,22 +64319,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -64339,22 +64422,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -64442,22 +64525,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "skia/bots/ios-dev-image-13.6", @@ -64545,22 +64628,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -64638,22 +64721,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -64731,22 +64814,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -64824,22 +64907,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -64917,22 +65000,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65010,22 +65093,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65103,22 +65186,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65196,22 +65279,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65289,22 +65372,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65382,22 +65465,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65475,22 +65558,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65568,22 +65651,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65661,22 +65744,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65754,22 +65837,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65847,22 +65930,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -65940,22 +66023,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66033,22 +66116,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66126,22 +66209,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66219,22 +66302,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66312,22 +66395,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66405,22 +66488,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66498,22 +66581,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66591,22 +66674,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66684,22 +66767,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66777,22 +66860,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66870,22 +66953,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -66963,22 +67046,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67056,22 +67139,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67149,22 +67232,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67242,22 +67325,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67335,22 +67418,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67428,22 +67511,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67521,22 +67604,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67614,22 +67697,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67707,22 +67790,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67800,22 +67883,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67893,22 +67976,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -67986,22 +68069,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68079,22 +68162,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68172,22 +68255,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68265,22 +68348,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68358,22 +68441,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68451,22 +68534,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68544,22 +68627,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68637,22 +68720,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68730,22 +68813,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68823,22 +68906,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -68916,22 +68999,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69009,22 +69092,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69102,22 +69185,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69195,22 +69278,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69288,22 +69371,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69381,22 +69464,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69474,22 +69557,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69567,22 +69650,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69660,22 +69743,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69753,22 +69836,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69846,22 +69929,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -69939,22 +70022,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70032,22 +70115,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70125,22 +70208,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70218,22 +70301,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70311,22 +70394,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70404,22 +70487,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70497,22 +70580,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70590,22 +70673,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70683,22 +70766,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70776,22 +70859,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70869,22 +70952,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -70962,22 +71045,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71055,22 +71138,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71148,22 +71231,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71241,22 +71324,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71334,22 +71417,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71427,22 +71510,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71520,22 +71603,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71613,22 +71696,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71706,22 +71789,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71799,22 +71882,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71892,22 +71975,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -71985,22 +72068,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72078,22 +72161,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72171,22 +72254,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72264,22 +72347,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72357,22 +72440,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72450,22 +72533,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72543,22 +72626,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72636,22 +72719,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72729,22 +72812,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72822,22 +72905,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -72915,22 +72998,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73008,22 +73091,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73101,22 +73184,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73194,22 +73277,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73287,22 +73370,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73380,22 +73463,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73473,22 +73556,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73566,22 +73649,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73659,22 +73742,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73752,22 +73835,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73845,22 +73928,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -73938,22 +74021,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74031,22 +74114,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74124,22 +74207,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74217,22 +74300,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74310,22 +74393,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74403,22 +74486,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74496,22 +74579,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74589,22 +74672,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74682,22 +74765,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74775,22 +74858,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74868,22 +74951,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -74961,22 +75044,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75054,22 +75137,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75147,22 +75230,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75240,22 +75323,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75333,22 +75416,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75426,22 +75509,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75519,22 +75602,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75612,22 +75695,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75705,22 +75788,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75798,22 +75881,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75891,22 +75974,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -75984,22 +76067,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76077,22 +76160,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76170,22 +76253,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76263,22 +76346,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76356,22 +76439,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76449,22 +76532,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76542,22 +76625,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76635,22 +76718,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76728,22 +76811,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76821,22 +76904,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -76914,22 +76997,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77007,22 +77090,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77100,22 +77183,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77193,22 +77276,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77286,22 +77369,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77379,22 +77462,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77472,22 +77555,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77565,22 +77648,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77658,22 +77741,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77751,22 +77834,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77844,22 +77927,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -77937,22 +78020,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78030,22 +78113,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78123,22 +78206,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78216,22 +78299,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78309,22 +78392,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78402,22 +78485,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78495,22 +78578,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78588,22 +78671,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78681,22 +78764,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78774,22 +78857,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78867,22 +78950,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -78960,22 +79043,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79053,22 +79136,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79146,22 +79229,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79239,22 +79322,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79332,22 +79415,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79425,22 +79508,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79518,22 +79601,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79611,22 +79694,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79704,22 +79787,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79797,22 +79880,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79890,22 +79973,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -79983,22 +80066,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80076,22 +80159,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80169,22 +80252,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80262,22 +80345,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80355,22 +80438,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80448,22 +80531,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80541,22 +80624,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80634,22 +80717,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80727,22 +80810,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80820,22 +80903,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -80913,22 +80996,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81006,22 +81089,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81099,22 +81182,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81192,22 +81275,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81285,22 +81368,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81378,22 +81461,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81471,22 +81554,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81564,22 +81647,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81657,22 +81740,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81750,22 +81833,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81843,22 +81926,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -81936,22 +82019,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82029,22 +82112,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82122,22 +82205,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82215,22 +82298,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82308,22 +82391,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82401,22 +82484,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82494,22 +82577,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82587,22 +82670,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82680,22 +82763,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82773,22 +82856,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82866,22 +82949,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -82959,22 +83042,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83052,22 +83135,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83145,22 +83228,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83238,22 +83321,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83331,22 +83414,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83424,22 +83507,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83517,22 +83600,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83610,22 +83693,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83703,22 +83786,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83796,22 +83879,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83889,22 +83972,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -83982,22 +84065,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84075,22 +84158,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84168,22 +84251,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84261,22 +84344,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84354,22 +84437,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84447,22 +84530,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84540,22 +84623,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84633,22 +84716,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84726,22 +84809,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84819,22 +84902,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -84912,22 +84995,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85005,22 +85088,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85098,22 +85181,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85191,22 +85274,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85284,22 +85367,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85377,22 +85460,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85470,22 +85553,22 @@ { "name": "infra/tools/luci-auth/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/kitchen/${platform}", "path": ".", - "version": "git_revision:904674219c73c0a69c9c4838f1bc378fe90fb9c8" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython-native/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" }, { "name": "infra/tools/luci/vpython/${platform}", "path": "cipd_bin_packages", - "version": "git_revision:7cd120a5d0da5892216fe478f880e9b672428697" + "version": "git_revision:bad9cab78683fb56589867eaf035a048da903374" } ], "command": [ @@ -85844,7 +85927,7 @@ "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All": {}, "Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-Dawn": {}, "Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All": {}, - "Test-Win10-Clang-ShuttleA-GPU-RadeonHD7770-x86_64-Release-All-Direct3D": {}, + "Test-Win10-MSVC-Golo-GPU-QuadroP400-x86_64-Release-All-Direct3D": {}, "Test-Win2019-Clang-GCE-CPU-AVX2-x86_64-Release-All": {} } } diff --git a/third_party/skia/infra/config/recipes.cfg b/third_party/skia/infra/config/recipes.cfg index 3f4612c37500..e395e9b90877 100644 --- a/third_party/skia/infra/config/recipes.cfg +++ b/third_party/skia/infra/config/recipes.cfg @@ -14,12 +14,12 @@ "deps": { "depot_tools": { "branch": "refs/heads/main", - "revision": "8a0d05dea6b215cdd68fe2fe8093353baf2b4c22", + "revision": "02f4003fdbfd383192fa725886af79116b1032aa", "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git" }, "recipe_engine": { "branch": "refs/heads/main", - "revision": "8ac9cf1c9ff01f9fe1276c8532577127f068d576", + "revision": "ba4a4b2d4f1f41483b2da98854f648727b4aecdb", "url": "https://chromium.googlesource.com/infra/luci/recipes-py.git" } }, diff --git a/third_party/skia/modules/BUILD.bazel b/third_party/skia/modules/BUILD.bazel new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/third_party/skia/modules/canvaskit/.gitignore b/third_party/skia/modules/canvaskit/.gitignore index 1904e8ec204b..20e0870a8d36 100644 --- a/third_party/skia/modules/canvaskit/.gitignore +++ b/third_party/skia/modules/canvaskit/.gitignore @@ -1,5 +1,6 @@ package-lock.json fonts/*.cpp coverage/* +build/ # Don't check in this copy. It's just for publishing to npm. npm_build/CHANGELOG.md \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/BUILD.bazel b/third_party/skia/modules/canvaskit/BUILD.bazel new file mode 100644 index 000000000000..04dcc68af847 --- /dev/null +++ b/third_party/skia/modules/canvaskit/BUILD.bazel @@ -0,0 +1,319 @@ +load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") +load("//bazel/common_config_settings:defs.bzl", "bool_flag") +load("//bazel:cc_binary_with_flags.bzl", "cc_binary_with_flags") + +package(default_visibility = ["//:__subpackages__"]) + +BASE_LINKOPTS = [ + #"-flto", # https://github.com/emscripten-core/emsdk/issues/807 + "--bind", # Compiles the source code using the Embind bindings to connect C/C++ and JavaScript + "--no-entry", + "-sALLOW_MEMORY_GROWTH", + "-sUSE_PTHREADS=0", # Disable pthreads + "-sMODULARIZE", + "-sDISABLE_EXCEPTION_CATCHING", # Disable all exception catching + "-sNODEJS_CATCH_EXIT=0", # We don't have a 'main' so disable exit() catching + "-sWASM", + "-sMAX_WEBGL_VERSION=2", + "-sFORCE_FILESYSTEM=0", + "-sFILESYSTEM=0", +] + +RELEASE_OPTS = [ + "--closure 1", # Run the closure compiler + # pass the externs file in + "--closure-args=--externs=modules/canvaskit/externs.js", + "-sASSERTIONS=0", # Turn off assertions + "-Oz", +] + +DEBUG_OPTS = [ + "--closure 0", # Do not use closure + "-sASSERTIONS", # Turn on assertions + "-sGL_ASSERTIONS", +] + +GM_OPTS = [ + "-sEXPORT_NAME=InitWasmGMTests", + "--pre-js", + "modules/canvaskit/gm.js", +] + +filegroup( + name = "hdrs", + srcs = [ + "WasmCommon.h", + ], +) + +cc_binary_with_flags( + name = "gm_bindings_with_flags", + testonly = True, + srcs = [ + "gm_bindings.cpp", + ":hdrs", + "//gm:gms", # Required for the registry to work + ], + additional_linker_inputs = ["gm.js"], + cc_binary_name = "gm_bindings", + linkopts = select({ + "//bazel/common_config_settings:debug_build": BASE_LINKOPTS + GM_OPTS + DEBUG_OPTS, + "//bazel/common_config_settings:release_build": BASE_LINKOPTS + GM_OPTS + RELEASE_OPTS, + "//conditions:default": BASE_LINKOPTS + GM_OPTS + RELEASE_OPTS, + }), + local_defines = [ + "SK_GL", + "SK_USE_WEBGL", + ], + set_flags = { + "include_decoder": [ + "jpeg_decode_codec", + "png_decode_codec", + "webp_decode_codec", + "gif_decode_codec", + ], + "gpu_backend": [ + "gl_backend", + ], + "with_gl_standard": [ + "webgl_standard", + ], + }, + # This target won't build successfully on its own because of missing emscripten + # headers etc. Therefore, we hide it from wildcards. + tags = ["manual"], + deps = [ + "//:gms", + "//:hash_and_encode", + "//:tests", + ], +) + +wasm_cc_binary( + name = "gm_bindings_wasm", + testonly = True, + cc_target = ":gm_bindings_with_flags", +) + +# See https://stackoverflow.com/a/57499321 for reference. +genrule( + name = "create_notomono_cpp", + srcs = ["fonts/NotoMono-Regular.ttf"], + outs = ["fonts/NotoMono-Regular.ttf.bazel.cpp"], # Distinct name from compile.sh's version + cmd = "$(location //tools:embed_resources) --name=SK_EMBEDDED_FONTS " + + "--input=modules/canvaskit/fonts/NotoMono-Regular.ttf " + + # The $@ means substitute in the one and only output location, which will be located + # in //bazel-out, not in the fonts subdirectory (although it will be available to clients + # in the fonts/ subdirectory as if it had been there all along. + "--output=$@ " + + "--align=4", + tools = ["//tools:embed_resources"], +) + +CK_DEFINES = select({ + ":enable_fonts_true": ["SK_INCLUDE_PARAGRAPH=1"], + ":enable_fonts_false": ["SK_NO_FONTS"], +}) + +CK_OPTS = BASE_LINKOPTS + [ + "-sEXPORT_NAME=CanvasKitInit", + "-sINITIAL_MEMORY=128MB", + # The order of these --pre-js flags matters! The preamble is a partially open scope and the + # postamble closes it. + "--pre-js", + "modules/canvaskit/preamble.js", + "--pre-js", + "modules/canvaskit/color.js", + "--pre-js", + "modules/canvaskit/memory.js", + "--pre-js", + "modules/canvaskit/util.js", + "--pre-js", + "modules/canvaskit/interface.js", + "--pre-js", + "modules/canvaskit/matrix.js", +] + select({ + "//bazel/common_config_settings:gl_backend": [ + "--pre-js", + "modules/canvaskit/cpu.js", + "--pre-js", + "modules/canvaskit/gpu.js", + ], + "//conditions:default": [ + "--pre-js", + "modules/canvaskit/cpu.js", + ], +}) + select({ + ":enable_fonts_true": [ + "--pre-js", + "modules/canvaskit/font.js", + "--pre-js", + "modules/canvaskit/paragraph.js", + ], + ":enable_fonts_false": [], +}) + select({ + ":enable_canvas_polyfill_true": [ + "--pre-js", + "modules/canvaskit/htmlcanvas/preamble.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/util.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/color.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/font.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/canvas2dcontext.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/htmlcanvas.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/htmlimage.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/imagedata.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/lineargradient.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/path2d.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/pattern.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/radialgradient.js", + "--pre-js", + "modules/canvaskit/htmlcanvas/postamble.js", + ], + ":enable_canvas_polyfill_false": [], +}) + [ + "--pre-js", + "modules/canvaskit/postamble.js", +] + select({ + "//bazel/common_config_settings:debug_build": DEBUG_OPTS + [ + "--pre-js", + "modules/canvaskit/debug.js", + ], + "//conditions:default": RELEASE_OPTS + [ + "--pre-js", + "modules/canvaskit/release.js", + ], +}) + +# All JS files that could be included via --pre-js or --post-js +JS_INTERFACE_FILES = [ + "color.js", + "cpu.js", + "debug.js", + "font.js", + "gpu.js", + "interface.js", + "matrix.js", + "memory.js", + "paragraph.js", + "particles.js", + "pathops.js", + "postamble.js", + "preamble.js", + "release.js", + "rt_shader.js", + "skottie.js", + "skp.js", + "util.js", +] + [ + "htmlcanvas/canvas2dcontext.js", + "htmlcanvas/color.js", + "htmlcanvas/font.js", + "htmlcanvas/htmlcanvas.js", + "htmlcanvas/htmlimage.js", + "htmlcanvas/imagedata.js", + "htmlcanvas/lineargradient.js", + "htmlcanvas/path2d.js", + "htmlcanvas/pattern.js", + "htmlcanvas/postamble.js", + "htmlcanvas/preamble.js", + "htmlcanvas/radialgradient.js", + "htmlcanvas/util.js", +] + +CK_SRCS = [ + "canvaskit_bindings.cpp", + ":hdrs", +] + select({ + ":include_embedded_font_true": ["fonts/NotoMono-Regular.ttf.bazel.cpp"], + ":include_embedded_font_false": [], +}) + select({ + ":enable_fonts_true": [ + "paragraph_bindings.cpp", + "paragraph_bindings_gen.cpp", + ], + ":enable_fonts_false": [], +}) + +cc_binary_with_flags( + name = "canvaskit_with_flags", + srcs = CK_SRCS, + additional_linker_inputs = JS_INTERFACE_FILES + ["externs.js"], + # wasm_cc_binary makes the canvaskit.js/canvaskit.wasm based on the actual name + # of the executable. + cc_binary_name = "canvaskit", + linkopts = CK_OPTS, + local_defines = CK_DEFINES, + set_flags = { + "include_decoder": [ + "jpeg_decode_codec", + "png_decode_codec", + "webp_decode_codec", + "gif_decode_codec", + ], + "include_encoder": [ + "jpeg_encode_codec", + "png_encode_codec", + ], + # TODO(kjlubick) make this optional, depending on enable_fonts + "fontmgr_factory": [ + "custom_embedded_fontmgr_factory", + ], + "include_fontmgr": [ + "custom_embedded_fontmgr", + ], + "gpu_backend": [ + "gl_backend", + ], + "with_gl_standard": [ + "webgl_standard", + ], + "use_icu": [ + "True", + ], + "shaper_backend": [ + "harfbuzz_shaper", + ], + }, + # This target won't build successfully on its own because of missing emscripten + # headers etc. Therefore, we hide it from wildcards. + tags = ["manual"], + deps = [ + "//:skia_core", + ] + select({ + ":enable_fonts_true": [ + "//modules/skparagraph:skparagraph", + ], + ":enable_fonts_false": [], + }), +) + +wasm_cc_binary( + name = "canvaskit_wasm", + cc_target = ":canvaskit_with_flags", +) + +bool_flag( + default = True, + flag_name = "enable_canvas_polyfill", +) + +bool_flag( + default = True, + flag_name = "enable_fonts", +) + +bool_flag( + default = True, + flag_name = "include_embedded_font", +) diff --git a/third_party/skia/modules/canvaskit/CHANGELOG.md b/third_party/skia/modules/canvaskit/CHANGELOG.md index ea34d02bbdb3..f7ffa6426a7d 100644 --- a/third_party/skia/modules/canvaskit/CHANGELOG.md +++ b/third_party/skia/modules/canvaskit/CHANGELOG.md @@ -6,10 +6,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Breaking + - `Canvas.drawVertices` and `Canvas.drawPatch` treat the default blend mode differently. + See https://bugs.chromium.org/p/skia/issues/detail?id=12662. + - `Canvas.markCTM` and `Canvas.findMarkedCTM` have been removed. They were effectively no-ops. + +### Added + - Rough implementation of `measureText` to Canvas2D emulation layer. For accurate numbers, clients + should use a real shaping library, like SkParagraph. + - `AnimatedImage.currentFrameDuration` has been added, as well as some clarifying documentation. + +## [0.31.0] - 2021-11-16 + +### Added + - `CanvasKit.MakeLazyImageFromTextureSource`, which is similar to + `Surface.makeImageFromTextureSource`, but can be re-used across different WebGL contexts. + +### Breaking + - `Surface.makeImageFromTextureSource` now takes an optional ImageInfo or PartialImageInfo + instead of optional width and height. Sensible defaults will be used if not supplied. + +### Fixed + - Some `Surface` methods would not properly switch to the right WebGL context. + - Warnings about `INVALID_ENUM: enable: invalid capability` should be reduced/eliminated. + ### Removed - `FontMgr.MakeTypefaceFromData` and `FontMgr.RefDefault` have been removed in favor of `Typeface.MakeFreeTypeFaceFromData` +### Changed + - `make release`, `make debug`, and variants put the output in a different location (./build). + - Example .html files load CanvasKit from the new location (./build). + ### Type Changes (index.d.ts) - `Surface.requestAnimationFrame` and `Surface.drawOnce` are properly documented. - Fixed typo in TextStyle (decrationStyle => decorationStyle) diff --git a/third_party/skia/modules/canvaskit/Makefile b/third_party/skia/modules/canvaskit/Makefile index 44e326a75134..d3d54f4753d7 100644 --- a/third_party/skia/modules/canvaskit/Makefile +++ b/third_party/skia/modules/canvaskit/Makefile @@ -1,64 +1,63 @@ clean: - rm -rf ../../out/canvaskit_wasm - rm -rf ./npm_build/bin + - rm -rf ../../out/canvaskit_wasm + - rm -rf ./npm_build/bin + - rm -rf ./build/ $(MAKE) release release: # Does an incremental build where possible. ./compile.sh - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm/canvaskit.wasm ./build/ release_cpu: # Does an incremental build where possible. ./compile.sh cpu_only - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm/canvaskit.wasm ./build/ release_viewer: # Does an incremental build where possible. ./compile.sh viewer - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm/canvaskit.wasm ./build/ debug: # Does an incremental build where possible. ./compile.sh debug - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./npm_build/bin - #cp ../../out/canvaskit_wasm_debug/canvaskit.wasm.map ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm_debug/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./build/ debug_cpu: # Does an incremental build where possible. ./compile.sh debug cpu_only - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./npm_build/bin - #cp ../../out/canvaskit_wasm_debug/canvaskit.wasm.map ./npm_build/bin - -experimental_simd: - # Does an incremental build where possible. - ./compile.sh simd - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm_experimental_simd/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm_experimental_simd/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm_debug/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./build/ debug_viewer: # Does an incremental build where possible. ./compile.sh debug viewer - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm_debug/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm_debug/canvaskit.wasm ./build/ profile: ./compile.sh profiling - mkdir -p ./npm_build/bin - cp ../../out/canvaskit_wasm_profile/canvaskit.js ./npm_build/bin - cp ../../out/canvaskit_wasm_profile/canvaskit.wasm ./npm_build/bin + - rm -rf build/ + mkdir build + cp ../../out/canvaskit_wasm_profile/canvaskit.js ./build/ + cp ../../out/canvaskit_wasm_profile/canvaskit.wasm ./build/ npm: rm -rf ./npm_build/bin @@ -121,3 +120,42 @@ docker-compile: typecheck: echo "Make sure you've run cd npm_build && npm ci recently" cd npm_build && npm run dtslint + +bazel_gms_release: + # We use spawn_strategy=local for "everyday" builds because emscripten assumes there + # is a cache in the home directory that it needs to fill with compiled versions of libc etc. + # https://emscripten.org/docs/tools_reference/emcc.html + # By setting spawn_strategy=local, we can avoid recompiling all of this for every compilation + # unit, by letting the cache be used (and not dropped from the sandbox), which gets expensive. + # Local testing showed using the local strategy sped up a clean build from 9.5 minutes + # to 1 minute. https://docs.bazel.build/versions/main/user-manual.html#strategy-options + bazelisk build :gm_bindings_wasm --compilation_mode opt --spawn_strategy=local + - rm -rf build/ + mkdir build + cp ../../bazel-bin/modules/canvaskit/gm_bindings_wasm/gm_bindings.js build/gm_bindings.js + cp ../../bazel-bin/modules/canvaskit/gm_bindings_wasm/gm_bindings.wasm build/gm_bindings.wasm + +bazel_gms_debug: + # See above note about spawn_strategy + bazelisk build :gm_bindings_wasm --compilation_mode dbg --spawn_strategy=local + - rm -rf build/ + mkdir build + cp ../../bazel-bin/modules/canvaskit/gm_bindings_wasm/gm_bindings.js build/gm_bindings.js + cp ../../bazel-bin/modules/canvaskit/gm_bindings_wasm/gm_bindings.wasm build/gm_bindings.wasm + +bazel_canvaskit_debug: + # See above note about spawn_strategy + bazelisk build :canvaskit_wasm --compilation_mode dbg --spawn_strategy=local + - rm -rf build/ + mkdir build + cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.js build/canvaskit.js + cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.wasm build/canvaskit.wasm + +bazel_canvaskit_release: + # See above note about spawn_strategy + bazelisk build :canvaskit_wasm --compilation_mode opt --spawn_strategy=local + - rm -rf build/ + mkdir build + cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.js build/canvaskit.js + cp ../../bazel-bin/modules/canvaskit/canvaskit_wasm/canvaskit.wasm build/canvaskit.wasm + ls -l build \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/canvaskit_bindings.cpp b/third_party/skia/modules/canvaskit/canvaskit_bindings.cpp index 49a355245469..3a1b31fe7407 100644 --- a/third_party/skia/modules/canvaskit/canvaskit_bindings.cpp +++ b/third_party/skia/modules/canvaskit/canvaskit_bindings.cpp @@ -17,6 +17,7 @@ #include "include/core/SkEncodedImageFormat.h" #include "include/core/SkImage.h" #include "include/core/SkImageFilter.h" +#include "include/core/SkImageGenerator.h" #include "include/core/SkImageInfo.h" #include "include/core/SkM44.h" #include "include/core/SkMaskFilter.h" @@ -48,7 +49,6 @@ #include "include/private/SkShadowFlags.h" #include "include/utils/SkParsePath.h" #include "include/utils/SkShadowUtils.h" -#include "modules/skparagraph/include/Paragraph.h" #include "src/core/SkPathPriv.h" #include "src/core/SkResourceCache.h" #include "src/image/SkImage_Base.h" @@ -57,15 +57,18 @@ #include "modules/canvaskit/WasmCommon.h" #include #include +#include #ifdef SK_GL #include "include/gpu/GrBackendSurface.h" #include "include/gpu/GrDirectContext.h" #include "include/gpu/gl/GrGLInterface.h" #include "include/gpu/gl/GrGLTypes.h" +#include "src/gpu/GrProxyProvider.h" +#include "src/gpu/GrRecordingContextPriv.h" #include "src/gpu/gl/GrGLDefines.h" -#include "webgl/webgl1.h" +#include #endif #ifndef SK_NO_FONTS @@ -73,7 +76,10 @@ #include "include/core/SkFontMetrics.h" #include "include/core/SkFontMgr.h" #include "include/core/SkFontTypes.h" -#endif +#ifdef SK_INCLUDE_PARAGRAPH +#include "modules/skparagraph/include/Paragraph.h" +#endif // SK_INCLUDE_PARAGRAPH +#endif // SK_NO_FONTS #ifdef SK_INCLUDE_PATHOPS #include "include/pathops/SkPathOps.h" @@ -665,23 +671,23 @@ void castUniforms(void* data, size_t dataLen, const SkRuntimeEffect& effect) { namespace emscripten { namespace internal { template - void raw_destructor(ClassType *); + void raw_destructor(ClassType*); template<> - void raw_destructor(SkContourMeasure *ptr) { + void raw_destructor(SkContourMeasure* ptr) { } template<> - void raw_destructor(SkVertices *ptr) { + void raw_destructor(SkVertices* ptr) { } #ifndef SK_NO_FONTS template<> - void raw_destructor(SkTextBlob *ptr) { + void raw_destructor(SkTextBlob* ptr) { } template<> - void raw_destructor(SkTypeface *ptr) { + void raw_destructor(SkTypeface* ptr) { } #endif } @@ -697,13 +703,17 @@ Uint8Array toBytes(sk_sp data) { ).call("slice"); // slice with no args makes a copy of the memory view. } +#ifdef SK_GL // We need to call into the JS side of things to free webGL contexts. This object will be called // with _setTextureCleanup after CanvasKit loads. The object will have one attribute, // a function called deleteTexture that takes two ints. JSObject textureCleanup = emscripten::val::null(); struct TextureReleaseContext { + // This refers to which webgl context, i.e. which surface, owns the texture. We need this + // to route the deleteTexture to the right context. uint32_t webglHandle; + // This refers to the index of the texture in the complete list of textures. uint32_t texHandle; }; @@ -713,6 +723,76 @@ void deleteJSTexture(SkImage::ReleaseContext rc) { delete ctx; } +class WebGLTextureImageGenerator : public SkImageGenerator { +public: + WebGLTextureImageGenerator(SkImageInfo ii, JSObject callbackObj): + SkImageGenerator(ii), + fCallback(callbackObj) {} + + ~WebGLTextureImageGenerator() { + // This cleans up the associated TextureSource that is used to make the texture + // (i.e. "makeTexture" below). We expect this destructor to be called when the + // SkImage that this Generator belongs to is destroyed. + fCallback.call("freeSrc"); + } + +protected: + GrSurfaceProxyView onGenerateTexture(GrRecordingContext* ctx, + const SkImageInfo& info, + const SkIPoint& origin, + GrMipmapped mipMapped, + GrImageTexGenPolicy texGenPolicy) { + if (ctx->backend() != GrBackendApi::kOpenGL) { + return {}; + } + + GrGLTextureInfo glInfo; + glInfo.fID = fCallback.call("makeTexture"); + // The format and target should match how we make the texture on the JS side + // See the implementation of the makeTexture function. + glInfo.fFormat = GR_GL_RGBA8; + glInfo.fTarget = GR_GL_TEXTURE_2D; + + static constexpr auto kMipmapped = GrMipmapped::kNo; + GrBackendTexture backendTexture(info.width(), info.height(), kMipmapped, glInfo); + + const GrBackendFormat& format = backendTexture.getBackendFormat(); + const GrColorType colorType = SkColorTypeToGrColorType(info.colorType()); + if (!ctx->priv().caps()->areColorTypeAndFormatCompatible(colorType, format)) { + return {}; + } + + uint32_t webGLCtx = emscripten_webgl_get_current_context(); + auto releaseCtx = new TextureReleaseContext{webGLCtx, glInfo.fID}; + auto cleanupCallback = GrRefCntedCallback::Make(deleteJSTexture, releaseCtx); + + sk_sp proxy = ctx->priv().proxyProvider()->wrapBackendTexture( + backendTexture, + kBorrow_GrWrapOwnership, + GrWrapCacheable::kYes, + kRead_GrIOType, + std::move(cleanupCallback)); + if (!proxy) { + return {}; + } + static constexpr auto kOrigin = kTopLeft_GrSurfaceOrigin; + GrSwizzle swizzle = ctx->priv().caps()->getReadSwizzle(format, colorType); + return GrSurfaceProxyView(std::move(proxy), kOrigin, swizzle); + } + +private: + JSObject fCallback; +}; + +// callbackObj has two functions in it, one to create a texture "makeTexture" and one to clean up +// the underlying texture source "freeSrc". This way, we can create WebGL textures for each +// surface/WebGLContext that the image is used on (we cannot share WebGLTextures across contexts). +sk_sp MakeImageFromGenerator(SimpleImageInfo ii, JSObject callbackObj) { + auto gen = std::make_unique(toSkImageInfo(ii), callbackObj); + return SkImage::MakeFromGenerator(std::move(gen)); +} +#endif // SK_GL + EMSCRIPTEN_BINDINGS(Skia) { #ifdef SK_GL function("_MakeGrContext", &MakeGrContext); @@ -816,6 +896,7 @@ EMSCRIPTEN_BINDINGS(Skia) { class_("AnimatedImage") .smart_ptr>("sk_sp") + .function("currentFrameDuration", &SkAnimatedImage::currentFrameDuration) .function("decodeNextFrame", &SkAnimatedImage::decodeNextFrame) .function("getFrameCount", &SkAnimatedImage::getFrameCount) .function("getRepetitionCount", &SkAnimatedImage::getRepetitionCount) @@ -1037,18 +1118,6 @@ EMSCRIPTEN_BINDINGS(Skia) { .function("_drawTextBlob", select_overload&, SkScalar, SkScalar, const SkPaint&)>(&SkCanvas::drawTextBlob)) #endif .function("_drawVertices", select_overload&, SkBlendMode, const SkPaint&)>(&SkCanvas::drawVertices)) - .function("_findMarkedCTM", optional_override([](SkCanvas& self, std::string marker, WASMPointerF32 mPtr) -> bool { - SkScalar* sixteenMatrixValues = reinterpret_cast(mPtr); - if (!sixteenMatrixValues) { - return false; // matrix cannot be null - } - SkM44 m; - if (self.findMarkedCTM(marker.c_str(), &m)) { - m.getRowMajor(sixteenMatrixValues); - return true; - } - return false; - })) // 4x4 matrix functions // Just like with getTotalMatrix, we allocate the buffer for the 16 floats to go in from // interface.js, so it can also free them when its done. @@ -1075,9 +1144,6 @@ EMSCRIPTEN_BINDINGS(Skia) { .function("_makeSurface", optional_override([](SkCanvas& self, SimpleImageInfo sii)->sk_sp { return self.makeSurface(toSkImageInfo(sii), nullptr); }), allow_raw_pointers()) - .function("markCTM", optional_override([](SkCanvas& self, std::string marker) { - self.markCTM(marker.c_str()); - })) .function("_readPixels", optional_override([](SkCanvas& self, SimpleImageInfo di, WASMPointerU8 pPtr, @@ -1269,6 +1335,9 @@ EMSCRIPTEN_BINDINGS(Skia) { class_("Image") .smart_ptr>("sk_sp") +#if SK_GL + .class_function("_makeFromGenerator", &MakeImageFromGenerator) +#endif // Note that this needs to be cleaned up with delete(). .function("getColorSpace", optional_override([](sk_sp self)->sk_sp { return self->imageInfo().refColorSpace(); @@ -1734,7 +1803,7 @@ EMSCRIPTEN_BINDINGS(Skia) { return s; })) .function("getUniformCount", optional_override([](SkRuntimeEffect& self)->int { - return self.uniforms().count(); + return self.uniforms().size(); })) .function("getUniformFloatCount", optional_override([](SkRuntimeEffect& self)->int { return self.uniformSize() / sizeof(float); @@ -2068,5 +2137,7 @@ EMSCRIPTEN_BINDINGS(Skia) { constant("ShadowGeometricOnly", (int)SkShadowFlags::kGeometricOnly_ShadowFlag); constant("ShadowDirectionalLight", (int)SkShadowFlags::kDirectionalLight_ShadowFlag); +#ifdef SK_INCLUDE_PARAGRAPH constant("_GlyphRunFlags_isWhiteSpace", (int)skia::textlayout::Paragraph::kWhiteSpace_VisitorFlag); +#endif } diff --git a/third_party/skia/modules/canvaskit/compile.sh b/third_party/skia/modules/canvaskit/compile.sh index 029683a86ef9..7832bf07f5e4 100755 --- a/third_party/skia/modules/canvaskit/compile.sh +++ b/third_party/skia/modules/canvaskit/compile.sh @@ -103,13 +103,13 @@ if [[ $@ == *no_skottie* ]]; then SKOTTIE_BINDINGS="" fi -GN_VIEWER="skia_use_expat=false skia_enable_skgpu_v2=false" +GN_VIEWER="skia_use_expat=false" VIEWER_BINDINGS="" VIEWER_LIB="" if [[ $@ == *viewer* ]]; then echo "Including viewer" - GN_VIEWER="skia_use_expat=true skia_enable_skgpu_v2=false" + GN_VIEWER="skia_use_expat=true" VIEWER_BINDINGS="$BASE_DIR/viewer_bindings.cpp" VIEWER_LIB="$BUILD_DIR/libviewer_wasm.a" IS_OFFICIAL_BUILD="false" @@ -165,6 +165,7 @@ HTML_CANVAS_API="--pre-js $BASE_DIR/htmlcanvas/preamble.js \ --pre-js $BASE_DIR/htmlcanvas/font.js \ --pre-js $BASE_DIR/htmlcanvas/canvas2dcontext.js \ --pre-js $BASE_DIR/htmlcanvas/htmlcanvas.js \ +--pre-js $BASE_DIR/htmlcanvas/htmlimage.js \ --pre-js $BASE_DIR/htmlcanvas/imagedata.js \ --pre-js $BASE_DIR/htmlcanvas/lineargradient.js \ --pre-js $BASE_DIR/htmlcanvas/path2d.js \ diff --git a/third_party/skia/modules/canvaskit/compile_gm.sh b/third_party/skia/modules/canvaskit/compile_gm.sh index 9785b57c57c5..820152ac67a6 100755 --- a/third_party/skia/modules/canvaskit/compile_gm.sh +++ b/third_party/skia/modules/canvaskit/compile_gm.sh @@ -128,7 +128,6 @@ echo "Compiling bitcode" ${GN_GPU} \ ${GN_FONT} \ skia_use_expat=true \ - skia_enable_skgpu_v2=false \ skia_enable_svg=true \ skia_enable_skshaper=true \ skia_enable_skparagraph=true \ diff --git a/third_party/skia/modules/canvaskit/external_test/.gitignore b/third_party/skia/modules/canvaskit/external_test/.gitignore new file mode 100644 index 000000000000..4c43fe68f640 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/.gitignore @@ -0,0 +1 @@ +*.js \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/external_test/Makefile b/third_party/skia/modules/canvaskit/external_test/Makefile new file mode 100644 index 000000000000..7a4c48201c36 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/Makefile @@ -0,0 +1,8 @@ +build-es6: + cd ./typescript_browser_es6 && npx tsc + +build-browser: + cd ./typescript_browser && npx tsc + +serve: + python3 ../../../tools/serve_wasm.py \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser/index.html b/third_party/skia/modules/canvaskit/external_test/typescript_browser/index.html new file mode 100644 index 000000000000..8c42bba58479 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser/index.html @@ -0,0 +1,10 @@ + +CanvasKit used from Typescript + + + + + + + +

Look in the web console to see if this worked

\ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser/module_uses_ck.ts b/third_party/skia/modules/canvaskit/external_test/typescript_browser/module_uses_ck.ts new file mode 100644 index 000000000000..f0851757bf6d --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser/module_uses_ck.ts @@ -0,0 +1,15 @@ +import {CanvasKitInit as CKInit} from "canvaskit-wasm"; + +// Right now, CanvasKitInit is exported from canvaskit-wasm in value space, not type space. +// As such, we need to use "type of" to be able to describe the type of this function in the +// global scope. +declare const CanvasKitInit: typeof CKInit; + +async function init() { + const CK = await CanvasKitInit({ + locateFile: (file: string) => "node_modules/canvaskit-wasm/bin/" + file + }); + const color = CK.Color(1,2,3,4); + console.log(color); +} +init(); diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser/package-lock.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser/package-lock.json new file mode 100644 index 000000000000..dac8a1f23c8f --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser/package-lock.json @@ -0,0 +1,46 @@ +{ + "name": "external-typescript-test", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "external-typescript-test", + "version": "0.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "canvaskit-wasm": "^0.30.0", + "typescript": "^4.4.4" + } + }, + "node_modules/canvaskit-wasm": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.30.0.tgz", + "integrity": "sha512-iow8oe8NXJ5o16a1yZDp4rhEEhsfzAzmPFIIgIV/++QCPojM+5vXM2mS9GVRzdm2V3EWBc8Wbc7yDd854f7meQ==" + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "canvaskit-wasm": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.30.0.tgz", + "integrity": "sha512-iow8oe8NXJ5o16a1yZDp4rhEEhsfzAzmPFIIgIV/++QCPojM+5vXM2mS9GVRzdm2V3EWBc8Wbc7yDd854f7meQ==" + }, + "typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" + } + } +} diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser/package.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser/package.json new file mode 100644 index 000000000000..6608ce84dc56 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser/package.json @@ -0,0 +1,15 @@ +{ + "name": "external-typescript-test", + "version": "0.0.0", + "description": "Tests that clients can import CanvasKit via typescript", + "private": true, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "BSD-3-Clause", + "dependencies": { + "canvaskit-wasm": "^0.30.0", + "typescript": "^4.4.4" + } +} diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser/tsconfig.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser/tsconfig.json new file mode 100644 index 000000000000..87555e70929d --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "module": "ES6", + "target": "ES6", + "moduleResolution": "Node" + }, + "files": [ + "module_uses_ck.ts" + ] +} \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/index.html b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/index.html new file mode 100644 index 000000000000..24afe5e2e508 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/index.html @@ -0,0 +1,9 @@ + +CanvasKit used from Typescript as an ES6 module + + + + + + +
This won't work yet. See skbug.com/11077
\ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/module_uses_ck.ts b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/module_uses_ck.ts new file mode 100644 index 000000000000..33a6142365ce --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/module_uses_ck.ts @@ -0,0 +1,9 @@ +import { CanvasKitInit } from "./node_modules/canvaskit-wasm/bin/canvaskit.js"; +async function init() { + const CK = await CanvasKitInit({ + locateFile: (file: string) => __dirname + "FIXME/bin/" + file + }); + const color = CK.Color(1,2,3,4); + console.log(color); +} +init(); diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package-lock.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package-lock.json new file mode 100644 index 000000000000..dac8a1f23c8f --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package-lock.json @@ -0,0 +1,46 @@ +{ + "name": "external-typescript-test", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "external-typescript-test", + "version": "0.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "canvaskit-wasm": "^0.30.0", + "typescript": "^4.4.4" + } + }, + "node_modules/canvaskit-wasm": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.30.0.tgz", + "integrity": "sha512-iow8oe8NXJ5o16a1yZDp4rhEEhsfzAzmPFIIgIV/++QCPojM+5vXM2mS9GVRzdm2V3EWBc8Wbc7yDd854f7meQ==" + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "canvaskit-wasm": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.30.0.tgz", + "integrity": "sha512-iow8oe8NXJ5o16a1yZDp4rhEEhsfzAzmPFIIgIV/++QCPojM+5vXM2mS9GVRzdm2V3EWBc8Wbc7yDd854f7meQ==" + }, + "typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" + } + } +} diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package.json new file mode 100644 index 000000000000..6608ce84dc56 --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/package.json @@ -0,0 +1,15 @@ +{ + "name": "external-typescript-test", + "version": "0.0.0", + "description": "Tests that clients can import CanvasKit via typescript", + "private": true, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "BSD-3-Clause", + "dependencies": { + "canvaskit-wasm": "^0.30.0", + "typescript": "^4.4.4" + } +} diff --git a/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/tsconfig.json b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/tsconfig.json new file mode 100644 index 000000000000..07ef55661cec --- /dev/null +++ b/third_party/skia/modules/canvaskit/external_test/typescript_browser_es6/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "module": "ES6", + "target": "ES6" + }, + "files": [ + "module_uses_ck.ts" + ] +} \ No newline at end of file diff --git a/third_party/skia/modules/canvaskit/externs.js b/third_party/skia/modules/canvaskit/externs.js index a9c858a7e265..e23e1b1eb8c5 100644 --- a/third_party/skia/modules/canvaskit/externs.js +++ b/third_party/skia/modules/canvaskit/externs.js @@ -58,6 +58,7 @@ var CanvasKit = { MakeWebGLCanvasSurface: function() {}, Malloc: function() {}, MallocGlyphIDs: function() {}, + MakeLazyImageFromTextureSource: function() {}, Free: function() {}, computeTonalColors: function() {}, deleteContext: function() {}, @@ -204,8 +205,6 @@ var CanvasKit = { clipPath: function() {}, getSaveCount: function() {}, makeSurface: function() {}, - markCTM: function() {}, - findMarkedCTM: function() {}, restore: function() {}, restoreToCount: function() {}, rotate: function() {}, @@ -250,7 +249,6 @@ var CanvasKit = { drawText: function() {}, drawTextBlob: function() {}, drawVertices: function() {}, - findMarkedCTM: function() {}, getLocalToDevice: function() {}, getTotalMatrix: function() {}, readPixels: function() {}, @@ -293,7 +291,6 @@ var CanvasKit = { _drawSimpleText: function() {}, _drawTextBlob: function() {}, _drawVertices: function() {}, - _findMarkedCTM: function() {}, _getLocalToDevice: function() {}, _getTotalMatrix: function() {}, _readPixels: function() {}, @@ -414,6 +411,7 @@ var CanvasKit = { // private API _makeShaderCubic: function() {}, _makeShaderOptions: function() {}, + _makeFromGenerator: function() {}, }, ImageFilter: { diff --git a/third_party/skia/modules/canvaskit/gpu.js b/third_party/skia/modules/canvaskit/gpu.js index 0b9eb567ca5a..cd11cdabdbd9 100644 --- a/third_party/skia/modules/canvaskit/gpu.js +++ b/third_party/skia/modules/canvaskit/gpu.js @@ -55,7 +55,7 @@ }; CanvasKit._setTextureCleanup({ - "deleteTexture": function(webglHandle, texHandle) { + 'deleteTexture': function(webglHandle, texHandle) { var tex = GL.textures[texHandle]; if (tex) { GL.getContext(webglHandle).GLctx.deleteTexture(tex); @@ -154,10 +154,7 @@ // Default to trying WebGL first. CanvasKit.MakeCanvasSurface = CanvasKit.MakeWebGLCanvasSurface; - CanvasKit.Surface.prototype.makeImageFromTexture = function(tex, info) { - if (!info['colorSpace']) { - info['colorSpace'] = CanvasKit.ColorSpace.SRGB; - } + function pushTexture(tex) { // GL is an emscripten object that holds onto WebGL state. One item in that state is // an array of textures, of which the index is the handle/id. var texHandle = GL.textures.length; @@ -168,36 +165,106 @@ texHandle = 1; } GL.textures.push(tex); - return this._makeImageFromTexture(GL.currentContext.handle, texHandle, info); + return texHandle + } + + CanvasKit.Surface.prototype.makeImageFromTexture = function(tex, info) { + CanvasKit.setCurrentContext(this._context); + var texHandle = pushTexture(tex); + return this._makeImageFromTexture(this._context, texHandle, info); }; - CanvasKit.Surface.prototype.makeImageFromTextureSource = function(src, w, h) { - // If the user specified a height or width in the image info, we use that. Otherwise, - // we try to find the natural media type (for and